From fa3524268a44527c2ecdb72a16f8266ad6e19af4 Mon Sep 17 00:00:00 2001 From: jonasgaudian <43753916+jonasgaudian@users.noreply.github.com> Date: Sun, 15 Feb 2026 13:01:35 +0100 Subject: [PATCH] implement `DebugTheme` and update system bar colors in `MainActivity` --- .../eu/gaudian/translator/ui/theme/Theme.kt | 2 + .../translator/ui/theme/themes/DebugTheme.kt | 123 ++++++++++++++++++ .../gaudian/translator/view/MainActivity.kt | 18 ++- 3 files changed, 136 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/eu/gaudian/translator/ui/theme/themes/DebugTheme.kt diff --git a/app/src/main/java/eu/gaudian/translator/ui/theme/Theme.kt b/app/src/main/java/eu/gaudian/translator/ui/theme/Theme.kt index 4043cf3..e5bf845 100644 --- a/app/src/main/java/eu/gaudian/translator/ui/theme/Theme.kt +++ b/app/src/main/java/eu/gaudian/translator/ui/theme/Theme.kt @@ -9,6 +9,7 @@ import eu.gaudian.translator.ui.theme.themes.CitrusSplashTheme import eu.gaudian.translator.ui.theme.themes.CoffeeTheme import eu.gaudian.translator.ui.theme.themes.CrimsonTheme import eu.gaudian.translator.ui.theme.themes.CyberpunkTheme +import eu.gaudian.translator.ui.theme.themes.DebugTheme import eu.gaudian.translator.ui.theme.themes.DefaultTheme import eu.gaudian.translator.ui.theme.themes.ForestTheme import eu.gaudian.translator.ui.theme.themes.NordTheme @@ -113,6 +114,7 @@ val AllThemes = listOf( SpaceTheme, CyberpunkTheme, SynthwaveTheme, + DebugTheme, ) diff --git a/app/src/main/java/eu/gaudian/translator/ui/theme/themes/DebugTheme.kt b/app/src/main/java/eu/gaudian/translator/ui/theme/themes/DebugTheme.kt new file mode 100644 index 0000000..74936fe --- /dev/null +++ b/app/src/main/java/eu/gaudian/translator/ui/theme/themes/DebugTheme.kt @@ -0,0 +1,123 @@ +@file:Suppress("HardCodedStringLiteral") + +package eu.gaudian.translator.ui.theme.themes + +import androidx.compose.ui.graphics.Color +import eu.gaudian.translator.ui.theme.AppTheme +import eu.gaudian.translator.ui.theme.ThemeColorSet + +val DebugTheme = AppTheme( + name = "Debug", + lightColors = ThemeColorSet( + // Primary: Bright Red + primary = Color(0xFFFF0000), + onPrimary = Color(0xFFFFFFFF), + primaryContainer = Color(0xFFFFCCCC), + onPrimaryContainer = Color(0xFF660000), + + // Secondary: Bright Blue + secondary = Color(0xFF0000FF), + onSecondary = Color(0xFFFFFFFF), + secondaryContainer = Color(0xFFCCCCFF), + onSecondaryContainer = Color(0xFF000066), + + // Tertiary: Bright Green + tertiary = Color(0xFF00FF00), + onTertiary = Color(0xFF000000), + tertiaryContainer = Color(0xFFCCFFCC), + onTertiaryContainer = Color(0xFF006600), + + // Error: Standard Material Red + error = Color(0xFFBA1A1A), + onError = Color(0xFFFFFFFF), + errorContainer = Color(0xFFFFDAD6), + onErrorContainer = Color(0xFF410002), + + // Background: Light Gray + background = Color(0xFFF5F5F5), + onBackground = Color(0xFF333333), + + // Surface: White + surface = Color(0xFFFFFFFF), + onSurface = Color(0xFF333333), + surfaceVariant = Color(0xFFE0E0E0), + onSurfaceVariant = Color(0xFF666666), + + // Outline + outline = Color(0xFF999999), + outlineVariant = Color(0xFFCCCCCC), + + // Scrim + scrim = Color(0xFF000000), + + // Inverse colors + inverseSurface = Color(0xFF333333), + inverseOnSurface = Color(0xFFFFFFFF), + inversePrimary = Color(0xFFFF6666), + + // Surface containers + surfaceDim = Color(0xFFE8E8E8), + surfaceBright = Color(0xFFFFFFFF), + surfaceContainerLowest = Color(0xFFFFFFFF), + surfaceContainerLow = Color(0xFFEEEEEE), + surfaceContainer = Color(0xFFF5F5F5), + surfaceContainerHigh = Color(0xFFFAFAFA), + surfaceContainerHighest = Color(0xFFFFFFFF) + ), + darkColors = ThemeColorSet( + // Primary: Bright Cyan + primary = Color(0xFF00FFFF), + onPrimary = Color(0xFF000000), + primaryContainer = Color(0xFF66FFFF), + onPrimaryContainer = Color(0xFF003333), + + // Secondary: Bright Magenta + secondary = Color(0xFFFF00FF), + onSecondary = Color(0xFF000000), + secondaryContainer = Color(0xFFFF66FF), + onSecondaryContainer = Color(0xFF330033), + + // Tertiary: Bright Yellow + tertiary = Color(0xFFFFFF00), + onTertiary = Color(0xFF000000), + tertiaryContainer = Color(0xFFFFFF66), + onTertiaryContainer = Color(0xFF333300), + + // Error: Standard Material Red + error = Color(0xFFFFB4AB), + onError = Color(0xFF690005), + errorContainer = Color(0xFF93000A), + onErrorContainer = Color(0xFFFFDAD6), + + // Background: Dark Gray + background = Color(0xFF121212), + onBackground = Color(0xFFE0E0E0), + + // Surface: Dark Gray + surface = Color(0xFF1E1E1E), + onSurface = Color(0xFFE0E0E0), + surfaceVariant = Color(0xFF2D2D2D), + onSurfaceVariant = Color(0xFFB0B0B0), + + // Outline + outline = Color(0xFF555555), + outlineVariant = Color(0xFF333333), + + // Scrim + scrim = Color(0xFF000000), + + // Inverse colors + inverseSurface = Color(0xFFE0E0E0), + inverseOnSurface = Color(0xFF121212), + inversePrimary = Color(0xFF006666), + + // Surface containers + surfaceDim = Color(0xFF121212), + surfaceBright = Color(0xFF333333), + surfaceContainerLowest = Color(0xFF0A0A0A), + surfaceContainerLow = Color(0xFF181818), + surfaceContainer = Color(0xFF1E1E1E), + surfaceContainerHigh = Color(0xFF252525), + surfaceContainerHighest = Color(0xFF2D2D2D) + ) +) \ No newline at end of file diff --git a/app/src/main/java/eu/gaudian/translator/view/MainActivity.kt b/app/src/main/java/eu/gaudian/translator/view/MainActivity.kt index 22b8590..1131d52 100644 --- a/app/src/main/java/eu/gaudian/translator/view/MainActivity.kt +++ b/app/src/main/java/eu/gaudian/translator/view/MainActivity.kt @@ -24,6 +24,7 @@ import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.dynamicDarkColorScheme import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.material3.surfaceColorAtElevation import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.LaunchedEffect @@ -35,12 +36,14 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalView import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.Font import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.unit.dp import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsControllerCompat @@ -56,6 +59,7 @@ import eu.gaudian.translator.MyApplication import eu.gaudian.translator.R import eu.gaudian.translator.ui.theme.AllFonts import eu.gaudian.translator.ui.theme.AllThemes +import eu.gaudian.translator.ui.theme.ProvideSemanticColors import eu.gaudian.translator.ui.theme.buildColorScheme import eu.gaudian.translator.utils.Log import eu.gaudian.translator.utils.findActivity @@ -150,9 +154,6 @@ fun TranslatorApp( val activity = LocalContext.current.findActivity() val statusViewModel: StatusViewModel = hiltViewModel(activity) - - - val navController = rememberNavController() val statusState by statusViewModel.status.collectAsStateWithLifecycle() val keyboardInsets = WindowInsets.ime @@ -357,9 +358,12 @@ private fun AppTheme( val window = (view.context as Activity).window val windowInsetsController = WindowInsetsControllerCompat(window, view) - //window.statusBarColor = android.graphics.Color.TRANSPARENT - //window.navigationBarColor = android.graphics.Color.TRANSPARENT - //TODO remove eventually + // We must keep this for older Android version!!! + @Suppress("DEPRECATION") + window.statusBarColor = colorScheme.surface.toArgb() + //Elevation must be the same as BottomNavigationBar + @Suppress("DEPRECATION") + window.navigationBarColor = colorScheme.surfaceColorAtElevation(8.dp).toArgb() windowInsetsController.isAppearanceLightStatusBars = !useDarkTheme windowInsetsController.isAppearanceLightNavigationBars = !useDarkTheme @@ -400,7 +404,7 @@ private fun AppTheme( colorScheme = colorScheme, typography = dynamicTypography, ) { - eu.gaudian.translator.ui.theme.ProvideSemanticColors { + ProvideSemanticColors { content() } }