in Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/FilterScreen.kt [65:153]
fun FilterScreen(
onDismiss: () -> Unit
) {
var sortState by remember { mutableStateOf(SnackRepo.getSortDefault()) }
var maxCalories by remember { mutableStateOf(0f) }
val defaultFilter = SnackRepo.getSortDefault()
Dialog(onDismissRequest = onDismiss) {
val priceFilters = remember { SnackRepo.getPriceFilters() }
val categoryFilters = remember { SnackRepo.getCategoryFilters() }
val lifeStyleFilters = remember { SnackRepo.getLifeStyleFilters() }
JetsnackScaffold(
topBar = {
TopAppBar(
navigationIcon = {
IconButton(onClick = onDismiss) {
Icon(
imageVector = Icons.Filled.Close,
contentDescription = stringResource(id = R.string.close)
)
}
},
title = {
Text(
text = stringResource(id = R.string.label_filters),
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center,
style = MaterialTheme.typography.h6
)
},
actions = {
var resetEnabled = sortState != defaultFilter
IconButton(
onClick = { /* TODO: Open search */ },
enabled = resetEnabled
) {
val alpha = if (resetEnabled) {
ContentAlpha.high
} else {
ContentAlpha.disabled
}
CompositionLocalProvider(LocalContentAlpha provides alpha) {
Text(
text = stringResource(id = R.string.reset),
style = MaterialTheme.typography.body2
)
}
}
},
backgroundColor = JetsnackTheme.colors.uiBackground
)
}
) {
Column(
Modifier
.fillMaxSize()
.verticalScroll(rememberScrollState())
.padding(horizontal = 24.dp, vertical = 16.dp),
) {
SortFiltersSection(
sortState = sortState,
onFilterChange = { filter ->
sortState = filter.name
}
)
FilterChipSection(
title = stringResource(id = R.string.price),
filters = priceFilters
)
FilterChipSection(
title = stringResource(id = R.string.category),
filters = categoryFilters
)
MaxCalories(
sliderPosition = maxCalories,
onValueChanged = { newValue ->
maxCalories = newValue
}
)
FilterChipSection(
title = stringResource(id = R.string.lifestyle),
filters = lifeStyleFilters
)
}
}
}
}