From 95e849e27ae02d4ea58e1a4ccb55d60043e25aa5 Mon Sep 17 00:00:00 2001 From: DarkCat09 Date: Wed, 7 Jun 2023 16:02:42 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A7=D0=B5=D0=BA=D0=B1=D0=BE=D0=BA=D1=81/?= =?UTF-8?q?=D1=80=D0=B0=D0=B4=D0=B8=D0=BE=20=D0=B2=D1=8B=D0=BD=D0=B5=D1=81?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=B2=20=D0=BE=D1=82=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D1=8B=D0=B9=20composable,=20=D0=B4=D0=BE=D0=B1?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=BE=D0=BF=D1=86=D0=B8?= =?UTF-8?q?=D0=B8=20=D1=81=D0=BE=D1=80=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/ru/nm17/narodmon/ui/pages/Sensors.kt | 101 ++++++++++++------ app/src/main/res/values/strings.xml | 3 + 2 files changed, 74 insertions(+), 30 deletions(-) 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