dc09-sensors2 #5

Merged
nm17 merged 28 commits from dc09-sensors2 into master 2023-06-18 13:15:53 +03:00
2 changed files with 56 additions and 2 deletions
Showing only changes of commit ebd8dadf7f - Show all commits

View file

@ -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<Boolean> = 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
}
)
}
}
}
}
}
}

View file

@ -43,4 +43,9 @@
<string name="filter_water_meter">Счётчик воды</string>
<string name="filter_time">Время работы</string>
<string name="sensors_filter_title">Тип датчиков</string>
<string name="sort_distance">Расстояние</string>
<string name="sort_type">Тип датчика</string>
<string name="sort_update_time">Время последнего обновления</string>
<string name="sort_name">Название</string>
<string name="sort_value">Данные</string>
</resources>