@@ -24,10 +24,13 @@ import dev.shadoe.delta.control.components.BlocklistComponentActions
2424import dev.shadoe.delta.control.components.BlocklistComponentState
2525import dev.shadoe.delta.control.components.ConnectedClientsListActions
2626import dev.shadoe.delta.control.components.ConnectedClientsListState
27+ import dev.shadoe.delta.control.components.PresetConfirmDialog
2728import dev.shadoe.delta.control.components.SoftApControl
2829import dev.shadoe.delta.control.components.SoftApControlViewModel
2930import dev.shadoe.delta.control.components.blocklistComponent
3031import dev.shadoe.delta.control.components.connectedClientsList
32+ import dev.shadoe.delta.control.components.presetsComponent
33+ import dev.shadoe.delta.data.database.models.Preset
3134
3235@Composable
3336fun ControlScreen (
@@ -36,6 +39,8 @@ fun ControlScreen(
3639 vm : ControlViewModel = viewModel(),
3740) {
3841 var isBlocklistShown by remember { mutableStateOf(false ) }
42+ var isPresetsListShown by remember { mutableStateOf(false ) }
43+ var presetToApply by remember { mutableStateOf<Preset ?>(null ) }
3944 var devicesToBlock by
4045 remember(isBlocklistShown) { mutableStateOf(setOf<TetheredClient >()) }
4146 var devicesToUnblock by
@@ -46,6 +51,7 @@ fun ControlScreen(
4651 val tetheredClients by vm.connectedClients.collectAsState(listOf ())
4752 val blockedClients by vm.blockedClients.collectAsState(listOf ())
4853 val supportsBlocklist by vm.supportsBlocklist.collectAsState(false )
54+ val presets by vm.presets.collectAsState(listOf ())
4955
5056 val featureNotSupportedSnackbar =
5157 object : SnackbarVisuals {
@@ -68,6 +74,13 @@ fun ControlScreen(
6874 override val withDismissAction = true
6975 override val actionLabel = null
7076 }
77+ val presetAppliedSnackbar =
78+ object : SnackbarVisuals {
79+ override val message = stringResource(R .string.preset_applied)
80+ override val duration = SnackbarDuration .Short
81+ override val withDismissAction = true
82+ override val actionLabel = null
83+ }
7184
7285 LazyColumn (modifier = modifier) {
7386 item {
@@ -103,6 +116,12 @@ fun ControlScreen(
103116 ),
104117 )
105118 }
119+ presetsComponent(
120+ isPresetsShown = isPresetsListShown,
121+ presets = presets,
122+ applyPreset = { presetToApply = it },
123+ onPresetsListToggled = { isPresetsListShown = ! isPresetsListShown },
124+ )
106125 if (supportsBlocklist) {
107126 blocklistComponent(
108127 state =
@@ -125,4 +144,16 @@ fun ControlScreen(
125144 )
126145 }
127146 }
147+
148+ presetToApply?.let { it1 ->
149+ PresetConfirmDialog (
150+ preset = it1,
151+ onApply = {
152+ vm.applyPreset(it)
153+ presetToApply = null
154+ onShowSnackbar(presetAppliedSnackbar)
155+ },
156+ onDismiss = { presetToApply = null },
157+ )
158+ }
128159}
0 commit comments