implement DebugTheme and update system bar colors in MainActivity

This commit is contained in:
jonasgaudian
2026-02-15 13:01:35 +01:00
parent 77b86208c3
commit fa3524268a
3 changed files with 136 additions and 7 deletions

View File

@@ -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,
)

View File

@@ -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)
)
)

View File

@@ -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()
}
}