diff --git a/app/src/main/java/ru/nm17/narodmon/ui/pages/Sensors.kt b/app/src/main/java/ru/nm17/narodmon/ui/pages/Sensors.kt
index b5e2f81..f5f1d60 100644
--- a/app/src/main/java/ru/nm17/narodmon/ui/pages/Sensors.kt
+++ b/app/src/main/java/ru/nm17/narodmon/ui/pages/Sensors.kt
@@ -59,6 +59,9 @@ fun SensorsPage(navController: NavController) {
var sortingShow by remember { mutableStateOf(false) }
var sortingType by remember { mutableStateOf(SortingType.DISTANCE) }
+ var sortingDesc by remember { mutableStateOf(false) }
+ var sortingMine by remember { mutableStateOf(false) }
+ var sortingFav by remember { mutableStateOf(false) }
val sortingTypes = remember {
listOf(
@@ -165,22 +168,11 @@ fun SensorsPage(navController: NavController) {
modifier = Modifier.padding(horizontal = 4.dp),
) {
items(filterItems) {
- Row(
- verticalAlignment = Alignment.CenterVertically,
- ) {
- Checkbox(
- checked = it.enabled.value,
- onCheckedChange = { checked ->
- it.enabled.value = checked
- },
- )
- Text(
- text = stringResource(id = it.stringRes),
- modifier = Modifier.clickable {
- it.enabled.value = !it.enabled.value
- }
- )
- }
+ FilterCheckbox(
+ checked = it.enabled.value,
+ onCheckedChange = { it.enabled.value = !it.enabled.value },
+ stringRes = it.stringRes,
+ )
}
}
}
@@ -192,22 +184,71 @@ fun SensorsPage(navController: NavController) {
modifier = Modifier.padding(horizontal = 4.dp),
) {
items (sortingTypes) {
- Row (
- verticalAlignment = Alignment.CenterVertically,
- ) {
- RadioButton(
- selected = (sortingType == it.sortingType),
- onClick = { sortingType = it.sortingType },
- )
- Text(
- text = stringResource(id = it.stringRes),
- modifier = Modifier.clickable {
- sortingType = it.sortingType
- }
- )
- }
+ FilterRadioButton(
+ selected = (sortingType == it.sortingType),
+ onClick = { sortingType = it.sortingType },
+ stringRes = it.stringRes,
+ )
+ }
+
+ item {
+ FilterCheckbox(
+ checked = sortingDesc,
+ onCheckedChange = { sortingDesc = !sortingDesc },
+ stringRes = R.string.sort_option_desc,
+ )
+ }
+
+ item {
+ FilterCheckbox(
+ checked = sortingFav,
+ onCheckedChange = { sortingFav = !sortingFav },
+ stringRes = R.string.sort_option_fav,
+ )
+ }
+
+ item {
+ FilterCheckbox(
+ checked = sortingMine,
+ onCheckedChange = { sortingMine = !sortingMine },
+ stringRes = R.string.sort_option_mine,
+ )
}
}
}
}
+}
+
+@ExperimentalMaterial3Api
+@Composable
+fun FilterCheckbox(checked: Boolean, onCheckedChange: () -> Unit, stringRes: Int) {
+ Row(
+ verticalAlignment = Alignment.CenterVertically,
+ ) {
+ Checkbox(
+ checked = checked,
+ onCheckedChange = { onCheckedChange() },
+ )
+ Text(
+ text = stringResource(id = stringRes),
+ modifier = Modifier.clickable { onCheckedChange() },
+ )
+ }
+}
+
+@ExperimentalMaterial3Api
+@Composable
+fun FilterRadioButton(selected: Boolean, onClick: () -> Unit, stringRes: Int) {
+ Row (
+ verticalAlignment = Alignment.CenterVertically,
+ ) {
+ RadioButton(
+ selected = selected,
+ onClick = onClick,
+ )
+ Text(
+ text = stringResource(id = stringRes),
+ modifier = Modifier.clickable { onClick() },
+ )
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d2ceb5e..b16dda2 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -48,4 +48,7 @@
Время последнего обновления
Название
Данные
+ По убыванию
+ Избранные сверху
+ Мои датчики сверху
\ No newline at end of file