diff --git a/app/src/main/java/com/orange/ouds/app/ui/ChangeThemeSettingsDialog.kt b/app/src/main/java/com/orange/ouds/app/ui/ChangeThemeSettingsDialog.kt index a01b89691..cd0739cd7 100644 --- a/app/src/main/java/com/orange/ouds/app/ui/ChangeThemeSettingsDialog.kt +++ b/app/src/main/java/com/orange/ouds/app/ui/ChangeThemeSettingsDialog.kt @@ -14,7 +14,9 @@ package com.orange.ouds.app.ui import androidx.annotation.StringRes import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -58,12 +60,14 @@ private fun ChangeThemeSettingsDialogContent(themeState: ThemeState, onThemeSett getSupportedThemeSettings(themeState.currentTheme).forEach { themeSetting -> OudsSwitchItem( checked = when (themeSetting) { + ThemeSetting.RoundedCornerAlertMessages -> themeSettings.roundedCornerAlertMessages.orElse { false } ThemeSetting.RoundedCornerButtons -> themeSettings.roundedCornerButtons.orElse { false } ThemeSetting.RoundedCornerTextInputs -> themeSettings.roundedCornerTextInputs.orElse { false } }, label = stringResource(themeSetting.titleResId), onCheckedChange = { checked -> themeSettings = when (themeSetting) { + ThemeSetting.RoundedCornerAlertMessages -> themeSettings.copy(roundedCornerAlertMessages = checked) ThemeSetting.RoundedCornerButtons -> themeSettings.copy(roundedCornerButtons = checked) ThemeSetting.RoundedCornerTextInputs -> themeSettings.copy(roundedCornerTextInputs = checked) } @@ -72,21 +76,22 @@ private fun ChangeThemeSettingsDialogContent(themeState: ThemeState, onThemeSett ) } - Row( + Column( modifier = Modifier - .padding(horizontal = OudsTheme.grids.margin, vertical = OudsTheme.spaces.fixed.large) - .align(Alignment.End), - horizontalArrangement = Arrangement.spacedBy(OudsTheme.spaces.fixed.extraSmall) + .padding(horizontal = OudsTheme.grids.margin, vertical = OudsTheme.spaces.fixed.large), + verticalArrangement = Arrangement.spacedBy(OudsTheme.spaces.fixed.extraSmall) ) { OudsButton( + modifier = Modifier.fillMaxWidth(), + label = stringResource(R.string.app_themeSettingsDialog_apply_label), + onClick = { onThemeSettingsChange(themeSettings) } + ) + OudsButton( + modifier = Modifier.fillMaxWidth(), label = stringResource(R.string.app_themeSettingsDialog_cancel_label), appearance = OudsButtonAppearance.Minimal, onClick = { onThemeSettingsChange(themeState.currentTheme.settings) } ) - OudsButton( - label = stringResource(R.string.app_themeSettingsDialog_apply_label), - onClick = { onThemeSettingsChange(themeSettings) } - ) } } } @@ -95,6 +100,7 @@ private fun getSupportedThemeSettings(theme: OudsThemeContract): List with(theme.settings) { when (themeSetting) { + ThemeSetting.RoundedCornerAlertMessages -> roundedCornerAlertMessages != null ThemeSetting.RoundedCornerButtons -> roundedCornerButtons != null ThemeSetting.RoundedCornerTextInputs -> roundedCornerTextInputs != null } @@ -111,11 +117,12 @@ object ChangeThemeSettingsDialog { private enum class ThemeSetting { - RoundedCornerButtons, RoundedCornerTextInputs; + RoundedCornerAlertMessages, RoundedCornerButtons, RoundedCornerTextInputs; val titleResId: Int @StringRes get() = when (this) { + RoundedCornerAlertMessages -> R.string.app_themeSettingsDialog_roundedCornerAlertMessages_label RoundedCornerButtons -> R.string.app_themeSettingsDialog_roundedCornerButtons_label RoundedCornerTextInputs -> R.string.app_themeSettingsDialog_roundedCornerTextInputs_label } diff --git a/app/src/main/java/com/orange/ouds/app/ui/MainViewModel.kt b/app/src/main/java/com/orange/ouds/app/ui/MainViewModel.kt index dcf453ae8..5cf4440f2 100644 --- a/app/src/main/java/com/orange/ouds/app/ui/MainViewModel.kt +++ b/app/src/main/java/com/orange/ouds/app/ui/MainViewModel.kt @@ -25,6 +25,7 @@ class MainViewModel @Inject constructor(private val dataStoreService: DataStoreS companion object { private const val USER_THEME_NAME_KEY = "userThemeName" + private const val USER_THEME_SETTINGS_ROUNDED_CORNER_ALERT_MESSAGES_KEY = "userThemeSettingsRoundedCornerAlertMessages" private const val USER_THEME_SETTINGS_ROUNDED_CORNER_BUTTONS_KEY = "userThemeSettingsRoundedCornerButtons" private const val USER_THEME_SETTINGS_ROUNDED_CORNER_TEXT_INPUTS_KEY = "userThemeSettingsRoundedCornerTextInputs" } @@ -38,12 +39,14 @@ class MainViewModel @Inject constructor(private val dataStoreService: DataStoreS } fun storeUserThemeSettings(themeSettings: OudsThemeSettings) = runBlocking { + dataStoreService.putBoolean(USER_THEME_SETTINGS_ROUNDED_CORNER_ALERT_MESSAGES_KEY, themeSettings.roundedCornerAlertMessages) dataStoreService.putBoolean(USER_THEME_SETTINGS_ROUNDED_CORNER_BUTTONS_KEY, themeSettings.roundedCornerButtons) dataStoreService.putBoolean(USER_THEME_SETTINGS_ROUNDED_CORNER_TEXT_INPUTS_KEY, themeSettings.roundedCornerTextInputs) } fun getUserThemeSettings(): OudsThemeSettings? = runBlocking { OudsThemeSettings( + roundedCornerAlertMessages = dataStoreService.getBoolean(USER_THEME_SETTINGS_ROUNDED_CORNER_ALERT_MESSAGES_KEY), roundedCornerButtons = dataStoreService.getBoolean(USER_THEME_SETTINGS_ROUNDED_CORNER_BUTTONS_KEY), roundedCornerTextInputs = dataStoreService.getBoolean(USER_THEME_SETTINGS_ROUNDED_CORNER_TEXT_INPUTS_KEY) ) diff --git a/app/src/main/java/com/orange/ouds/app/ui/ThemeState.kt b/app/src/main/java/com/orange/ouds/app/ui/ThemeState.kt index b57330e9d..0089e0bad 100644 --- a/app/src/main/java/com/orange/ouds/app/ui/ThemeState.kt +++ b/app/src/main/java/com/orange/ouds/app/ui/ThemeState.kt @@ -117,11 +117,13 @@ class ThemeState( when (name) { ORANGE_THEME_NAME -> OrangeTheme( orangeFontFamily = OrangeFontFamily(OrangeHelveticaNeueLatin.Downloadable, OrangeHelveticaNeueArabic.Downloadable), + roundedCornerAlertMessages = roundedCornerAlertMessages.orElse { false }, roundedCornerButtons = roundedCornerButtons.orElse { false }, roundedCornerTextInputs = roundedCornerTextInputs.orElse { false } ) ORANGE_COMPACT_THEME_NAME -> OrangeCompactTheme( orangeFontFamily = OrangeFontFamily(OrangeHelveticaNeueLatin.Downloadable, OrangeHelveticaNeueArabic.Downloadable), + roundedCornerAlertMessages = roundedCornerAlertMessages.orElse { false }, roundedCornerButtons = roundedCornerButtons.orElse { false }, roundedCornerTextInputs = roundedCornerTextInputs.orElse { false } ) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 4b0e111c5..fb86fcd34 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -34,6 +34,7 @@ تطبيق إلغاء تغيير إعدادات السمة + رسائل التنبيه بزوايا مستديرة زر بزوايا مستديرة حقول إدخال نص بزوايا مستديرة diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 2866adb2f..eb2e747ff 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -34,6 +34,7 @@ Appliquer Annuler Changer les réglages du thème + Messages d\'alerte avec coins arrondis Buttons avec coins arrondis Text Inputs avec coins arrondis diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 558a8f2eb..92407b790 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -37,6 +37,7 @@ Apply Cancel Change theme settings + Rounded corner alert messages Rounded corner button Rounded corner text inputs diff --git a/theme-orange/src/main/java/com/orange/ouds/theme/orange/OrangeTheme.kt b/theme-orange/src/main/java/com/orange/ouds/theme/orange/OrangeTheme.kt index 89e320f23..d03502947 100644 --- a/theme-orange/src/main/java/com/orange/ouds/theme/orange/OrangeTheme.kt +++ b/theme-orange/src/main/java/com/orange/ouds/theme/orange/OrangeTheme.kt @@ -117,9 +117,9 @@ const val ORANGE_THEME_NAME = "Orange" * @param orangeFontFamily The Helvetica Neue font family to use for the Orange theme. * If an [OrangeBundledFontFamily] is used, the resource identifiers should reference Helvetica Neue font files. * If an [OrangeDownloadableFontFamily] is used, the [OrangeFontFamily.preloadDownloadableFontFamilies] method should be called to download the Helvetica Neue font files through the Android Downloadable Fonts feature. - * @param roundedCornerButtons Whether or not buttons have rounded corners. - * @param roundedCornerTextInputs Whether or not text inputs have rounded corners. - * @param roundedCornerAlertMessages Whether or not alert messages have rounded corners. + * @param roundedCornerButtons Whether buttons have rounded corners. + * @param roundedCornerTextInputs Whether text inputs have rounded corners. + * @param roundedCornerAlertMessages Whether alert messages have rounded corners. */ open class OrangeTheme( private val orangeFontFamily: OrangeFontFamily, @@ -131,8 +131,8 @@ open class OrangeTheme( /** * Creates a new Orange theme. * - * @param roundedCornerButtons Whether or not buttons have rounded corners. - * @param roundedCornerTextInputs Whether or not text inputs have rounded corners. + * @param roundedCornerButtons Whether buttons have rounded corners. + * @param roundedCornerTextInputs Whether text inputs have rounded corners. */ @Deprecated( "Use constructor with orangeFontFamily parameter instead.",