From f67c80a3a31976bb213c7d9c5026ee7d6c0c1cfc Mon Sep 17 00:00:00 2001 From: tarsin Date: Tue, 27 Jun 2023 19:55:15 +0800 Subject: [PATCH] Restore minRating advanced search --- .../hippo/ehviewer/ui/legacy/SearchLayout.kt | 4 +- .../hippo/ehviewer/ui/main/AdvanceTable.kt | 2 +- .../hippo/ehviewer/ui/main/AdvancedSearch.kt | 41 +++++++++++++++++++ 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/legacy/SearchLayout.kt b/app/src/main/java/com/hippo/ehviewer/ui/legacy/SearchLayout.kt index c5d73ee50..1dc191135 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/legacy/SearchLayout.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/legacy/SearchLayout.kt @@ -12,6 +12,8 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll import androidx.compose.material3.ElevatedCard import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Tab @@ -67,7 +69,7 @@ class SearchLayout @JvmOverloads constructor( } Mdc3Theme { Column( - modifier = Modifier.padding(horizontal = dimensionResource(id = R.dimen.search_layout_margin_h)), + modifier = Modifier.padding(horizontal = dimensionResource(id = R.dimen.search_layout_margin_h)).verticalScroll(rememberScrollState()), verticalArrangement = Arrangement.spacedBy(dimensionResource(id = R.dimen.search_layout_margin_v)), ) { AnimatedVisibility(visible = isNormalMode) { diff --git a/app/src/main/java/com/hippo/ehviewer/ui/main/AdvanceTable.kt b/app/src/main/java/com/hippo/ehviewer/ui/main/AdvanceTable.kt index 20905ca8f..753058b91 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/main/AdvanceTable.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/main/AdvanceTable.kt @@ -11,5 +11,5 @@ object AdvanceTable { data class AdvancedSearchOption( val advanceSearch: Int = 0, val minRating: Int = 0, - val page: IntRange = 0..1, + val page: IntRange = -1..-1, ) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/main/AdvancedSearch.kt b/app/src/main/java/com/hippo/ehviewer/ui/main/AdvancedSearch.kt index e42532168..89ed68ddc 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/main/AdvancedSearch.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/main/AdvancedSearch.kt @@ -3,12 +3,21 @@ package com.hippo.ehviewer.ui.main import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.material3.Checkbox +import androidx.compose.material3.DropdownMenuItem +import androidx.compose.material3.ExposedDropdownMenuBox +import androidx.compose.material3.ExposedDropdownMenuDefaults import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.ProvideTextStyle import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringArrayResource import androidx.compose.ui.res.stringResource import com.hippo.ehviewer.R @@ -32,6 +41,38 @@ fun SearchAdvanced( Text(text = stringResource(id = R.string.search_sto), modifier = Modifier.align(Alignment.CenterVertically)) } } + val minRatingItems = stringArrayResource(id = R.array.search_min_rating) + var selected by remember { mutableStateOf(minRatingItems[0]) } + var expanded by remember { mutableStateOf(false) } + ExposedDropdownMenuBox( + expanded = expanded, + onExpandedChange = { expanded = !expanded }, + ) { + OutlinedTextField( + modifier = Modifier.menuAnchor(), + readOnly = true, + value = selected, + onValueChange = { onStateChanged(state.copy(minRating = minRatingItems.indexOf(it))) }, + label = { Text(stringResource(id = R.string.search_sr)) }, + trailingIcon = { ExposedDropdownMenuDefaults.TrailingIcon(expanded = expanded) }, + colors = ExposedDropdownMenuDefaults.textFieldColors(), + ) + ExposedDropdownMenu( + expanded = expanded, + onDismissRequest = { expanded = false }, + ) { + minRatingItems.forEach { selectionOption -> + DropdownMenuItem( + text = { Text(selectionOption) }, + onClick = { + selected = selectionOption + expanded = false + }, + contentPadding = ExposedDropdownMenuDefaults.ItemContentPadding, + ) + } + } + } } } }