diff --git a/ui/src/commonMain/kotlin/cl/emilym/sinatra/ui/presentation/screens/preferences/RoutingPreferencesScreen.kt b/ui/src/commonMain/kotlin/cl/emilym/sinatra/ui/presentation/screens/preferences/RoutingPreferencesScreen.kt index 1e2559ba..7d0486cb 100644 --- a/ui/src/commonMain/kotlin/cl/emilym/sinatra/ui/presentation/screens/preferences/RoutingPreferencesScreen.kt +++ b/ui/src/commonMain/kotlin/cl/emilym/sinatra/ui/presentation/screens/preferences/RoutingPreferencesScreen.kt @@ -14,23 +14,22 @@ import cl.emilym.sinatra.FeatureFlag import cl.emilym.sinatra.data.repository.Preference import cl.emilym.sinatra.lib.FloatRange import cl.emilym.sinatra.ui.text -import cl.emilym.sinatra.ui.widgets.form.HorizontalLockup -import cl.emilym.sinatra.ui.widgets.form.PreferencesCheckbox +import cl.emilym.sinatra.ui.widgets.form.HorizontalPreferencesCheckboxLockup import cl.emilym.sinatra.ui.widgets.form.PreferencesFloatSlider import cl.emilym.sinatra.ui.widgets.form.VerticalLockup import cl.emilym.sinatra.ui.widgets.value import org.jetbrains.compose.resources.stringResource import sinatra.ui.generated.resources.Res +import sinatra.ui.generated.resources.preferences_routing_title import sinatra.ui.generated.resources.preferences_setting_bikes import sinatra.ui.generated.resources.preferences_setting_bikes_subtitle import sinatra.ui.generated.resources.preferences_setting_max_walking -import sinatra.ui.generated.resources.preferences_setting_wheelchair -import sinatra.ui.generated.resources.preferences_setting_wheelchair_subtitle -import sinatra.ui.generated.resources.preferences_routing_title import sinatra.ui.generated.resources.preferences_setting_school_service import sinatra.ui.generated.resources.preferences_setting_school_service_subtitle import sinatra.ui.generated.resources.preferences_setting_show_accessibility_icons_navigation import sinatra.ui.generated.resources.preferences_setting_show_accessibility_icons_navigation_subtitle +import sinatra.ui.generated.resources.preferences_setting_wheelchair +import sinatra.ui.generated.resources.preferences_setting_wheelchair_subtitle import kotlin.time.Duration.Companion.minutes class RoutingPreferencesScreen: PreferencesScreen() { @@ -45,41 +44,37 @@ class RoutingPreferencesScreen: PreferencesScreen() { val showSchoolServiceSettings = FeatureFlag.GLOBAL_ENABLE_SCHOOL_SERVICES.value() if (showAccessibilitySettings) { - HorizontalLockup( + HorizontalPreferencesCheckboxLockup( + Preference.RequiresWheelchair, stringResource(Res.string.preferences_setting_wheelchair), stringResource(Res.string.preferences_setting_wheelchair_subtitle), Modifier.fillMaxWidth() - ) { - PreferencesCheckbox(Preference.RequiresWheelchair) - } + ) - HorizontalLockup( + HorizontalPreferencesCheckboxLockup( + Preference.RequiresBikes, stringResource(Res.string.preferences_setting_bikes), stringResource(Res.string.preferences_setting_bikes_subtitle), Modifier.fillMaxWidth() - ) { - PreferencesCheckbox(Preference.RequiresBikes) - } + ) } if (showSchoolServiceSettings) { - HorizontalLockup( + HorizontalPreferencesCheckboxLockup( + Preference.ShowSchoolServices, stringResource(Res.string.preferences_setting_school_service), stringResource(Res.string.preferences_setting_school_service_subtitle), Modifier.fillMaxWidth() - ) { - PreferencesCheckbox(Preference.ShowSchoolServices) - } + ) } if (showAccessibilitySettings) { - HorizontalLockup( + HorizontalPreferencesCheckboxLockup( + Preference.ShowAccessibilityIconsNavigation, stringResource(Res.string.preferences_setting_show_accessibility_icons_navigation), stringResource(Res.string.preferences_setting_show_accessibility_icons_navigation_subtitle), Modifier.fillMaxWidth() - ) { - PreferencesCheckbox(Preference.ShowAccessibilityIconsNavigation) - } + ) } diff --git a/ui/src/commonMain/kotlin/cl/emilym/sinatra/ui/presentation/screens/preferences/UnitsPreferencesScreen.kt b/ui/src/commonMain/kotlin/cl/emilym/sinatra/ui/presentation/screens/preferences/UnitsPreferencesScreen.kt index 1cfe8b4f..0ac70450 100644 --- a/ui/src/commonMain/kotlin/cl/emilym/sinatra/ui/presentation/screens/preferences/UnitsPreferencesScreen.kt +++ b/ui/src/commonMain/kotlin/cl/emilym/sinatra/ui/presentation/screens/preferences/UnitsPreferencesScreen.kt @@ -8,8 +8,7 @@ import cafe.adriel.voyager.core.screen.ScreenKey import cl.emilym.sinatra.data.models.Time24HSetting import cl.emilym.sinatra.data.repository.Preference import cl.emilym.sinatra.ui.widgets.form.DropdownOption -import cl.emilym.sinatra.ui.widgets.form.HorizontalLockup -import cl.emilym.sinatra.ui.widgets.form.PreferencesCheckbox +import cl.emilym.sinatra.ui.widgets.form.HorizontalPreferencesCheckboxLockup import cl.emilym.sinatra.ui.widgets.form.PreferencesDropdown import cl.emilym.sinatra.ui.widgets.form.VerticalLockup import org.jetbrains.compose.resources.stringResource @@ -35,13 +34,12 @@ class UnitsPreferencesScreen: PreferencesScreen() { @Composable override fun ColumnScope.Preferences() { - HorizontalLockup( + HorizontalPreferencesCheckboxLockup( + Preference.CountdownUntilArrival, stringResource(Res.string.preferences_setting_countdown), stringResource(Res.string.preferences_setting_countdown_subtitle), Modifier.fillMaxWidth() - ) { - PreferencesCheckbox(Preference.CountdownUntilArrival) - } + ) VerticalLockup( stringResource(Res.string.preferences_setting_metric), diff --git a/ui/src/commonMain/kotlin/cl/emilym/sinatra/ui/widgets/form/PreferencesCheckbox.kt b/ui/src/commonMain/kotlin/cl/emilym/sinatra/ui/widgets/form/PreferencesCheckbox.kt index 49d94d99..28f124c9 100644 --- a/ui/src/commonMain/kotlin/cl/emilym/sinatra/ui/widgets/form/PreferencesCheckbox.kt +++ b/ui/src/commonMain/kotlin/cl/emilym/sinatra/ui/widgets/form/PreferencesCheckbox.kt @@ -3,6 +3,7 @@ package cl.emilym.sinatra.ui.widgets.form import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import cl.emilym.sinatra.data.repository.Preference +import cl.emilym.sinatra.ui.widgets.noRippleClickable import cl.emilym.sinatra.ui.widgets.rememberPreferenceState @Composable @@ -16,4 +17,26 @@ fun PreferencesCheckbox( { value = it }, modifier ) +} + +@Composable +fun HorizontalPreferencesCheckboxLockup( + preference: Preference, + title: String, + subtitle: String?, + modifier: Modifier = Modifier +) { + var value by rememberPreferenceState(preference) + HorizontalLockup( + title, + subtitle, + Modifier.then(modifier).noRippleClickable({ + value = !value + }) + ) { + SinatraCheckbox( + value, + { value = it }, + ) + } } \ No newline at end of file