From ebd8dadf7ff3dbac6bec59f26f4548843de3500d Mon Sep 17 00:00:00 2001 From: DarkCat09 Date: Wed, 7 Jun 2023 15:41:53 +0400 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=81=D0=BE=D1=80=D1=82=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/ru/nm17/narodmon/ui/pages/Sensors.kt | 53 ++++++++++++++++++- app/src/main/res/values/strings.xml | 5 ++ 2 files changed, 56 insertions(+), 2 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 1f7dbbd..c7d61a9 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 @@ -14,13 +14,14 @@ import androidx.compose.material3.Checkbox import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FilterChip import androidx.compose.material3.ModalBottomSheet +import androidx.compose.material3.RadioButton import androidx.compose.material3.SearchBar import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.MutableState -import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.getValue import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -40,12 +41,35 @@ data class SensorFilter( var enabled: MutableState = mutableStateOf(false), ) +data class SensorSortingItem( + val stringRes: Int, + val sortingType: SortingType, +) + +enum class SortingType { + DISTANCE, TYPE, UPD_TIME, + NAME, VALUE, +} + @ExperimentalMaterial3Api @Composable fun SensorsPage(navController: NavController) { var searchQuery by remember { mutableStateOf("") } var searchActive by remember { mutableStateOf(false) } + var sortingShown by remember { mutableStateOf(false) } + var sortingType by remember { mutableStateOf(SortingType.DISTANCE) } + + val sortingTypes = remember { + listOf( + SensorSortingItem(R.string.sort_distance, SortingType.DISTANCE), + SensorSortingItem(R.string.sort_type, SortingType.TYPE), + SensorSortingItem(R.string.sort_update_time, SortingType.UPD_TIME), + SensorSortingItem(R.string.sort_name, SortingType.NAME), + SensorSortingItem(R.string.sort_value, SortingType.VALUE), + ) + } + var filterShown by remember { mutableStateOf(false) } var filterMine by remember { mutableStateOf(false) } @@ -111,7 +135,7 @@ fun SensorsPage(navController: NavController) { ) AssistChip( - onClick = { }, + onClick = { sortingShown = true }, label = { Text(text = stringResource(R.string.sensors_sorting)) }, ) @@ -161,4 +185,29 @@ fun SensorsPage(navController: NavController) { } } } + + if (sortingShown) { + ModalBottomSheet(onDismissRequest = { sortingShown = false }) { + LazyColumn( + 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 + } + ) + } + } + } + } + } } \ 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 4661411..d2ceb5e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -43,4 +43,9 @@ Счётчик воды Время работы Тип датчиков + Расстояние + Тип датчика + Время последнего обновления + Название + Данные \ No newline at end of file