From 89ad89abaa4491b667c363cc0890d885a3758369 Mon Sep 17 00:00:00 2001 From: paulolima18 Date: Tue, 17 Sep 2024 11:16:17 +0100 Subject: [PATCH] Create True Black mode for amoled screens --- .../main/java/com/ivy/home/HomeMoreMenu.kt | 4 ++++ .../java/com/ivy/settings/SettingsScreen.kt | 2 ++ .../main/java/com/ivy/base/legacy/Theme.kt | 2 +- .../ui/core/src/main/res/values/strings.xml | 1 + .../domain/action/settings/SettingsAct.kt | 3 ++- .../ivy/design/api/systems/IvyWalletDesign.kt | 23 +++++++++++++++++++ .../java/com/ivy/design/l0_system/Colors.kt | 3 +++ 7 files changed, 36 insertions(+), 2 deletions(-) diff --git a/screen/home/src/main/java/com/ivy/home/HomeMoreMenu.kt b/screen/home/src/main/java/com/ivy/home/HomeMoreMenu.kt index a41db76190..5811048a69 100644 --- a/screen/home/src/main/java/com/ivy/home/HomeMoreMenu.kt +++ b/screen/home/src/main/java/com/ivy/home/HomeMoreMenu.kt @@ -445,21 +445,25 @@ private fun QuickAccess( icon = when (theme) { Theme.LIGHT -> R.drawable.home_more_menu_light_mode Theme.DARK -> R.drawable.home_more_menu_dark_mode + Theme.TRUE_BLACK -> R.drawable.home_more_menu_dark_mode Theme.AUTO -> R.drawable.home_more_menu_auto_mode }, label = when (theme) { Theme.LIGHT -> stringResource(R.string.light_mode) Theme.DARK -> stringResource(R.string.dark_mode) + Theme.TRUE_BLACK -> stringResource(R.string.amoled_mode) Theme.AUTO -> stringResource(R.string.auto_mode) }, backgroundColor = when (theme) { Theme.LIGHT -> UI.colors.pure Theme.DARK -> UI.colors.pureInverse + Theme.TRUE_BLACK -> UI.colors.pureInverse Theme.AUTO -> UI.colors.pure }, tint = when (theme) { Theme.LIGHT -> UI.colors.pureInverse Theme.DARK -> UI.colors.pure + Theme.TRUE_BLACK -> UI.colors.pure Theme.AUTO -> UI.colors.pureInverse } ) { diff --git a/screen/settings/src/main/java/com/ivy/settings/SettingsScreen.kt b/screen/settings/src/main/java/com/ivy/settings/SettingsScreen.kt index 745152a4fb..33f673746d 100644 --- a/screen/settings/src/main/java/com/ivy/settings/SettingsScreen.kt +++ b/screen/settings/src/main/java/com/ivy/settings/SettingsScreen.kt @@ -281,11 +281,13 @@ private fun BoxWithConstraintsScope.UI( icon = when (theme) { Theme.LIGHT -> R.drawable.home_more_menu_light_mode Theme.DARK -> R.drawable.home_more_menu_dark_mode + Theme.TRUE_BLACK -> R.drawable.home_more_menu_dark_mode Theme.AUTO -> R.drawable.home_more_menu_auto_mode }, label = when (theme) { Theme.LIGHT -> stringResource(R.string.light_mode) Theme.DARK -> stringResource(R.string.dark_mode) + Theme.TRUE_BLACK -> stringResource(R.string.amoled_mode) Theme.AUTO -> stringResource(R.string.auto_mode) } ) { diff --git a/shared/base/src/main/java/com/ivy/base/legacy/Theme.kt b/shared/base/src/main/java/com/ivy/base/legacy/Theme.kt index ab99ea0c7e..21f2b001ea 100644 --- a/shared/base/src/main/java/com/ivy/base/legacy/Theme.kt +++ b/shared/base/src/main/java/com/ivy/base/legacy/Theme.kt @@ -5,5 +5,5 @@ import androidx.compose.runtime.Immutable @Deprecated("Old design system. Use `:ivy-design` and Material3") @Immutable enum class Theme { - LIGHT, DARK, AUTO + LIGHT, DARK, AUTO, TRUE_BLACK } diff --git a/shared/ui/core/src/main/res/values/strings.xml b/shared/ui/core/src/main/res/values/strings.xml index 25af3e2adb..cb541dda71 100644 --- a/shared/ui/core/src/main/res/values/strings.xml +++ b/shared/ui/core/src/main/res/values/strings.xml @@ -103,6 +103,7 @@ Settings Light mode Dark mode + Black mode Auto mode Planned\nPayments Share Ivy diff --git a/temp/legacy-code/src/main/java/com/ivy/legacy/domain/action/settings/SettingsAct.kt b/temp/legacy-code/src/main/java/com/ivy/legacy/domain/action/settings/SettingsAct.kt index 34770928ef..8286dd0658 100644 --- a/temp/legacy-code/src/main/java/com/ivy/legacy/domain/action/settings/SettingsAct.kt +++ b/temp/legacy-code/src/main/java/com/ivy/legacy/domain/action/settings/SettingsAct.kt @@ -19,7 +19,8 @@ class SettingsAct @Inject constructor( val currentSettings = this(Unit) val newTheme = when (currentSettings.theme) { Theme.LIGHT -> Theme.DARK - Theme.DARK -> Theme.AUTO + Theme.DARK -> Theme.TRUE_BLACK + Theme.TRUE_BLACK -> Theme.AUTO Theme.AUTO -> Theme.LIGHT } return currentSettings.copy(theme = newTheme) diff --git a/temp/old-design/src/main/java/com/ivy/design/api/systems/IvyWalletDesign.kt b/temp/old-design/src/main/java/com/ivy/design/api/systems/IvyWalletDesign.kt index cb31a11801..58d94afe5d 100644 --- a/temp/old-design/src/main/java/com/ivy/design/api/systems/IvyWalletDesign.kt +++ b/temp/old-design/src/main/java/com/ivy/design/api/systems/IvyWalletDesign.kt @@ -161,6 +161,29 @@ abstract class IvyWalletDesign : IvyDesign { override val isLight = false } + Theme.TRUE_BLACK -> object : IvyColors { + override val pure = TrueBlack + override val pureInverse = White + override val gray = Gray + override val medium = MediumBlack + override val mediumInverse = MediumWhite + + override val primary = Purple + override val primary1 = IvyLight + + override val green = Green + override val green1 = GreenDark + + override val orange = Orange + override val orange1 = OrangeDark + + override val red = Red + override val red1 = RedDark + override val red1Inverse = RedLight + + override val isLight = false + } + Theme.AUTO -> if (isDarkModeEnabled) { colors(Theme.DARK, true) } else { diff --git a/temp/old-design/src/main/java/com/ivy/design/l0_system/Colors.kt b/temp/old-design/src/main/java/com/ivy/design/l0_system/Colors.kt index 40ff0d5db1..2b5a811f55 100644 --- a/temp/old-design/src/main/java/com/ivy/design/l0_system/Colors.kt +++ b/temp/old-design/src/main/java/com/ivy/design/l0_system/Colors.kt @@ -174,6 +174,9 @@ val Red2Dark = Color(0xFF802030) val Red3Dark = Color(0xFF802653) // -------------------------------------------------------------------------------------------------- +@Deprecated("Old design system. Use `:ivy-design` and Material3") +val TrueBlack = Color(0xFF000000) + @Deprecated("Old design system. Use `:ivy-design` and Material3") val MediumBlack = Color(0xFF2B2C2D)