use dialog instead of bottom sheet in filter saved movies stuff

This commit is contained in:
2026-06-22 19:55:24 +03:00
parent 66782f55ab
commit 6453d2b6e5
@@ -9,21 +9,18 @@ import androiddev.apps.vbox.client.shared.generated.resources.user_tags_filter_d
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Checkbox import androidx.compose.material3.Checkbox
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ModalBottomSheet
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBar
import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
@@ -72,7 +69,7 @@ fun SavedMovieScreen(comp: SavedMovieScreenComponent, route: Route, onNavigate:
onNavigate = onNavigate, onNavigate = onNavigate,
content = { content = {
if (filterBottomSheetVisible) { if (filterBottomSheetVisible) {
FilterBottomSheet( FilterDialog(
comp.filterTag, comp.filterTag,
tags, tags,
{ filterBottomSheetVisible = false }, { filterBottomSheetVisible = false },
@@ -100,50 +97,48 @@ private fun SavedMovieContent(comp: SavedMovieScreenComponent, paddingValues: Pa
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
private fun FilterBottomSheet( private fun FilterDialog(
filterTag: String?, filterTag: String?,
allTags: List<TagInfo>?, allTags: List<TagInfo>?,
onDismiss: () -> Unit, onDismiss: () -> Unit,
onFilterBy: (String?) -> Unit onFilterBy: (String?) -> Unit
) { ) {
allTags ?: return allTags ?: return
ModalBottomSheet( AlertDialog(
onDismissRequest = onDismiss, onDismissRequest = onDismiss,
sheetState = rememberModalBottomSheetState(true) title = {
) { Text(
LazyColumn(modifier = Modifier.padding(8.dp)) { text = stringResource(Res.string.user_tags),
item { style = MaterialTheme.typography.titleLarge
Text( )
text = stringResource(Res.string.user_tags), },
style = MaterialTheme.typography.titleLarge text = {
) LazyColumn(modifier = Modifier.fillMaxWidth()) {
} item {
item { FilterItemCheckBox(
Spacer(Modifier.height(8.dp)) isChecked = filterTag == null,
} name = stringResource(Res.string.user_tags_filter_disable)
item { ) {
FilterItemCheckBox( onFilterBy(null)
filterTag == null, onDismiss()
stringResource(Res.string.user_tags_filter_disable) }
) { }
onFilterBy(null) items(
onDismiss() items = allTags.filter { it.id != null },
key = { tag -> tag.id ?: tag.tag }
) { tag ->
FilterItemCheckBox(
isChecked = filterTag == tag.tag,
name = tag.tag
) {
onFilterBy(tag.tag)
onDismiss()
}
} }
} }
items( },
items = allTags.filter { it.id != null }, confirmButton = {}
key = { tag -> tag.id ?: tag.tag } )
) { tag ->
FilterItemCheckBox(
filterTag == tag.tag,
tag.tag
) {
onFilterBy(tag.tag)
onDismiss()
}
}
}
}
} }
@Composable @Composable
@@ -155,13 +150,12 @@ private fun FilterItemCheckBox(
Row( Row(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.clickable { onFilterChanged() } .clickable { onFilterChanged() },
.padding(vertical = 4.dp),
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Text( Text(
text = name, text = name,
modifier = Modifier.weight(1f), modifier = Modifier.weight(1f).padding(start = 8.dp),
style = MaterialTheme.typography.bodyLarge style = MaterialTheme.typography.bodyLarge
) )
Checkbox( Checkbox(