Diaplay a count of results in the search field
This commit is contained in:
parent
d23b8e1c76
commit
96efcfad65
@ -139,12 +139,21 @@ fun ChangePasswordScreen(
|
||||
|
||||
val query = filterState.value?.query
|
||||
val queryText = query?.state?.value.orEmpty()
|
||||
|
||||
val count = loadableState
|
||||
.getOrNull()
|
||||
?.content
|
||||
?.getOrNull()
|
||||
?.getOrNull()
|
||||
?.items
|
||||
?.size
|
||||
SearchTextField(
|
||||
modifier = Modifier
|
||||
.focusRequester2(focusRequester),
|
||||
text = queryText,
|
||||
placeholder = stringResource(Res.strings.apppicker_search_placeholder),
|
||||
searchIcon = false,
|
||||
count = count,
|
||||
leading = {},
|
||||
trailing = {},
|
||||
onTextChange = query?.onChange,
|
||||
|
@ -182,12 +182,20 @@ fun WordlistViewScreen(
|
||||
val backVisible = visualStack.size > 1
|
||||
val searchIcon = !backVisible // otherwise it's too much icons in my opinion
|
||||
|
||||
val count = loadableState
|
||||
.getOrNull()
|
||||
?.content
|
||||
?.getOrNull()
|
||||
?.getOrNull()
|
||||
?.items
|
||||
?.size
|
||||
SearchTextField(
|
||||
modifier = Modifier
|
||||
.focusRequester2(focusRequester),
|
||||
text = queryText,
|
||||
placeholder = stringResource(Res.strings.wordlist_word_search_placeholder),
|
||||
searchIcon = searchIcon,
|
||||
count = count,
|
||||
leading = {},
|
||||
trailing = {},
|
||||
onTextChange = query?.onChange,
|
||||
|
@ -23,6 +23,7 @@ import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.artemchep.keyguard.common.model.getOrNull
|
||||
import com.artemchep.keyguard.feature.EmptySearchView
|
||||
import com.artemchep.keyguard.feature.home.vault.component.SearchTextField
|
||||
import com.artemchep.keyguard.feature.navigation.NavigationIcon
|
||||
@ -108,12 +109,14 @@ fun SearchSettingsScreenContent(
|
||||
Spacer(Modifier.width(4.dp))
|
||||
}
|
||||
|
||||
val count = state.items.size
|
||||
SearchTextField(
|
||||
modifier = Modifier
|
||||
.focusRequester2(focusRequester),
|
||||
text = state.query.state.value,
|
||||
placeholder = stringResource(Res.strings.settingssearch_search_placeholder),
|
||||
searchIcon = false,
|
||||
count = count,
|
||||
leading = {},
|
||||
trailing = {},
|
||||
onTextChange = state.query.onChange,
|
||||
|
@ -19,6 +19,7 @@ import androidx.compose.material.icons.outlined.Search
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.IconButton
|
||||
import androidx.compose.material3.LocalContentColor
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
@ -41,9 +42,13 @@ import androidx.compose.ui.text.input.KeyboardType
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import com.artemchep.keyguard.res.Res
|
||||
import com.artemchep.keyguard.ui.DisabledEmphasisAlpha
|
||||
import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow
|
||||
import com.artemchep.keyguard.ui.MediumEmphasisAlpha
|
||||
import com.artemchep.keyguard.ui.PlainTextField
|
||||
import com.artemchep.keyguard.ui.theme.combineAlpha
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
|
||||
@Composable
|
||||
fun SearchTextField(
|
||||
@ -51,6 +56,7 @@ fun SearchTextField(
|
||||
text: String,
|
||||
placeholder: String,
|
||||
searchIcon: Boolean = true,
|
||||
count: Int? = null,
|
||||
leading: @Composable () -> Unit,
|
||||
trailing: @Composable () -> Unit,
|
||||
onTextChange: ((String) -> Unit)?,
|
||||
@ -145,6 +151,22 @@ fun SearchTextField(
|
||||
),
|
||||
singleLine = true,
|
||||
)
|
||||
if (count != null) {
|
||||
val resultsCount = stringResource(
|
||||
Res.plurals.result_count_plural,
|
||||
count,
|
||||
count.toString(),
|
||||
)
|
||||
Text(
|
||||
modifier = Modifier
|
||||
.padding(horizontal = 8.dp),
|
||||
text = resultsCount,
|
||||
style = MaterialTheme.typography.labelSmall,
|
||||
color = LocalContentColor.current
|
||||
.combineAlpha(DisabledEmphasisAlpha),
|
||||
maxLines = 2,
|
||||
)
|
||||
}
|
||||
Spacer(
|
||||
modifier = Modifier
|
||||
.size(8.dp),
|
||||
|
@ -149,12 +149,21 @@ fun JustDeleteMeListScreen(
|
||||
|
||||
val query = filterState.value?.query
|
||||
val queryText = query?.state?.value.orEmpty()
|
||||
|
||||
val count = loadableState
|
||||
.getOrNull()
|
||||
?.content
|
||||
?.getOrNull()
|
||||
?.getOrNull()
|
||||
?.items
|
||||
?.size
|
||||
SearchTextField(
|
||||
modifier = Modifier
|
||||
.focusRequester2(focusRequester),
|
||||
text = queryText,
|
||||
placeholder = stringResource(Res.strings.justdeleteme_search_placeholder),
|
||||
searchIcon = false,
|
||||
count = count,
|
||||
leading = {},
|
||||
trailing = {},
|
||||
onTextChange = query?.onChange,
|
||||
|
@ -147,12 +147,21 @@ fun PasskeysListScreen(
|
||||
|
||||
val query = filterState.value?.query
|
||||
val queryText = query?.state?.value.orEmpty()
|
||||
|
||||
val count = loadableState
|
||||
.getOrNull()
|
||||
?.content
|
||||
?.getOrNull()
|
||||
?.getOrNull()
|
||||
?.items
|
||||
?.size
|
||||
SearchTextField(
|
||||
modifier = Modifier
|
||||
.focusRequester2(focusRequester),
|
||||
text = queryText,
|
||||
placeholder = stringResource(Res.strings.passkeys_directory_search_placeholder),
|
||||
searchIcon = false,
|
||||
count = count,
|
||||
leading = {},
|
||||
trailing = {},
|
||||
onTextChange = query?.onChange,
|
||||
|
@ -147,12 +147,21 @@ fun TwoFaServiceListScreen(
|
||||
|
||||
val query = filterState.value?.query
|
||||
val queryText = query?.state?.value.orEmpty()
|
||||
|
||||
val count = loadableState
|
||||
.getOrNull()
|
||||
?.content
|
||||
?.getOrNull()
|
||||
?.getOrNull()
|
||||
?.items
|
||||
?.size
|
||||
SearchTextField(
|
||||
modifier = Modifier
|
||||
.focusRequester2(focusRequester),
|
||||
text = queryText,
|
||||
placeholder = stringResource(Res.strings.tfa_directory_search_placeholder),
|
||||
searchIcon = false,
|
||||
count = count,
|
||||
leading = {},
|
||||
trailing = {},
|
||||
onTextChange = query?.onChange,
|
||||
|
@ -24,4 +24,12 @@
|
||||
<item quantity="many"><xliff:g id="number">%1$s</xliff:g> words</item>
|
||||
<item quantity="other"><xliff:g id="number">%1$s</xliff:g> words</item>
|
||||
</plural>
|
||||
<plural name="result_count_plural">
|
||||
<item quantity="zero"><xliff:g id="number" example="0">%1$s</xliff:g> results</item>
|
||||
<item quantity="one"><xliff:g id="number" example="1">%1$s</xliff:g> result</item>
|
||||
<item quantity="two"><xliff:g id="number" example="2">%1$s</xliff:g> results</item>
|
||||
<item quantity="few"><xliff:g id="number">%1$s</xliff:g> results</item>
|
||||
<item quantity="many"><xliff:g id="number">%1$s</xliff:g> results</item>
|
||||
<item quantity="other"><xliff:g id="number">%1$s</xliff:g> results</item>
|
||||
</plural>
|
||||
</resources>
|
||||
|
Loading…
x
Reference in New Issue
Block a user