Set min width and max items in each row (#99)

* Set category chip to fixed width

* Set min width and max items in each row
This commit is contained in:
FooIbar authored and GitHub committed 2023-10-26 17:54:56 +00:00
1 parent 7584704d22
commit d618948429
2 files changed
+16 -2

No files matched your search

@@ -19,6 +19,8 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.SecondaryTabRow
import androidx.compose.material3.Tab
import androidx.compose.material3.Text
import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
@@ -45,6 +47,7 @@ import com.hippo.ehviewer.ui.main.ImageSearch
import com.hippo.ehviewer.ui.main.NormalSearch
import com.hippo.ehviewer.ui.main.SearchAdvanced
import com.hippo.ehviewer.util.AppConfig
import com.hippo.ehviewer.util.findActivity
import com.hippo.ehviewer.util.pickVisualMedia
import kotlinx.coroutines.launch
@@ -71,6 +74,7 @@ class SearchLayout @JvmOverloads constructor(
@Composable
override fun Content() {
val coroutineScope = rememberCoroutineScope()
val windowSizeClass = calculateWindowSizeClass(activity = context.findActivity())
fun selectImage() = coroutineScope.launch {
context.pickVisualMedia(ActivityResultContracts.PickVisualMedia.ImageOnly)?.let {
vm.path = it.toString()
@@ -93,6 +97,11 @@ class SearchLayout @JvmOverloads constructor(
isAdvanced = vm.isAdvancedMode,
onAdvancedChanged = { vm.isAdvancedMode = it },
showInfo = { BaseDialogBuilder(context).setMessage(R.string.search_tip).show() },
maxItemsInEachRow = when (windowSizeClass.widthSizeClass) {
WindowWidthSizeClass.Compact -> 2
WindowWidthSizeClass.Medium -> 3
else -> 5
},
)
}
}
@@ -6,6 +6,7 @@ import androidx.compose.foundation.layout.FlowRow
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.widthIn
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.Help
@@ -55,8 +56,12 @@ fun NormalSearch(
isAdvanced: Boolean,
onAdvancedChanged: (Boolean) -> Unit,
showInfo: () -> Unit,
maxItemsInEachRow: Int,
) {
FlowRow(modifier = Modifier.wrapContentHeight(align = Alignment.Top)) {
FlowRow(
modifier = Modifier.wrapContentHeight(align = Alignment.Top),
maxItemsInEachRow = maxItemsInEachRow,
) {
categoryTable.forEach {
val selected = category and it.first != 0
FilterChip(
@@ -64,7 +69,7 @@ fun NormalSearch(
onClick = { onCategoryChanged(if (selected) category xor it.first else category or it.first) },
label = { Text(text = stringResource(id = it.second)) },
leadingIcon = { if (selected) Icon(imageVector = Icons.Default.Check, contentDescription = null) },
modifier = Modifier.padding(horizontal = 4.dp).align(alignment = Alignment.CenterVertically),
modifier = Modifier.padding(horizontal = 4.dp).align(alignment = Alignment.CenterVertically).widthIn(min = 145.dp),
)
}
}