@@ -22,16 +22,15 @@ import androidx.compose.material3.Text
2222import androidx.compose.material3.TopAppBar
2323import androidx.compose.runtime.Composable
2424import androidx.compose.runtime.getValue
25- import androidx.compose.runtime.mutableStateOf
26- import androidx.compose.runtime.remember
27- import androidx.compose.runtime.setValue
2825import androidx.compose.ui.Alignment
2926import androidx.compose.ui.Modifier
3027import androidx.compose.ui.res.stringResource
28+ import androidx.compose.ui.tooling.preview.Preview
3129import androidx.compose.ui.unit.dp
3230import androidx.lifecycle.compose.collectAsStateWithLifecycle
3331import io.github.sds100.keymapper.base.R
34- import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperDropdownMenu
32+ import io.github.sds100.keymapper.base.compose.KeyMapperTheme
33+ import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperSegmentedButtonRow
3534import io.github.sds100.keymapper.base.utils.ui.compose.SearchAppBarActions
3635import io.github.sds100.keymapper.common.utils.State
3736import io.github.sds100.keymapper.system.settings.SettingType
@@ -97,28 +96,21 @@ private fun ChooseSettingScreen(
9796 .padding(innerPadding),
9897 ) {
9998 Column (modifier = Modifier .fillMaxSize()) {
100- // Setting type dropdown
101- var expanded by remember { mutableStateOf(false ) }
102-
103- KeyMapperDropdownMenu (
99+ KeyMapperSegmentedButtonRow (
104100 modifier = Modifier
105101 .fillMaxWidth()
106102 .padding(16 .dp),
107- expanded = expanded,
108- onExpandedChange = { expanded = it },
109- label = { Text (stringResource(R .string.modify_setting_type_label)) },
110- selectedValue = settingType,
111- values = listOf (
103+ buttonStates = listOf (
112104 SettingType .SYSTEM to stringResource(R .string.modify_setting_type_system),
113105 SettingType .SECURE to stringResource(R .string.modify_setting_type_secure),
114106 SettingType .GLOBAL to stringResource(R .string.modify_setting_type_global),
115107 ),
116- onValueChanged = onSettingTypeChange,
108+ selectedState = settingType,
109+ onStateSelected = onSettingTypeChange,
117110 )
118111
119112 HorizontalDivider ()
120113
121- // Settings list
122114 when (state) {
123115 State .Loading -> {
124116 Box (
@@ -159,3 +151,64 @@ private fun ChooseSettingScreen(
159151 }
160152 }
161153}
154+
155+ @OptIn(ExperimentalMaterial3Api ::class )
156+ @Preview
157+ @Composable
158+ private fun PreviewWithData () {
159+ KeyMapperTheme {
160+ ChooseSettingScreen (
161+ state = State .Data (
162+ listOf (
163+ SettingItem (" adb_enabled" , " 0" ),
164+ SettingItem (" airplane_mode_on" , " 0" ),
165+ SettingItem (" bluetooth_on" , " 1" ),
166+ SettingItem (" screen_brightness" , " 128" ),
167+ SettingItem (" wifi_on" , " 1" ),
168+ ),
169+ ),
170+ settingType = SettingType .GLOBAL ,
171+ )
172+ }
173+ }
174+
175+ @OptIn(ExperimentalMaterial3Api ::class )
176+ @Preview
177+ @Composable
178+ private fun PreviewLoading () {
179+ KeyMapperTheme {
180+ ChooseSettingScreen (
181+ state = State .Loading ,
182+ settingType = SettingType .SECURE ,
183+ )
184+ }
185+ }
186+
187+ @OptIn(ExperimentalMaterial3Api ::class )
188+ @Preview
189+ @Composable
190+ private fun PreviewEmpty () {
191+ KeyMapperTheme {
192+ ChooseSettingScreen (
193+ state = State .Data (emptyList()),
194+ settingType = SettingType .SYSTEM ,
195+ )
196+ }
197+ }
198+
199+ @OptIn(ExperimentalMaterial3Api ::class )
200+ @Preview
201+ @Composable
202+ private fun PreviewWithSearch () {
203+ KeyMapperTheme {
204+ ChooseSettingScreen (
205+ state = State .Data (
206+ listOf (
207+ SettingItem (" bluetooth_on" , " 1" ),
208+ ),
209+ ),
210+ query = " bluetooth" ,
211+ settingType = SettingType .SECURE ,
212+ )
213+ }
214+ }
0 commit comments