implement DebugTheme and update system bar colors in MainActivity
This commit is contained in:
@@ -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.CoffeeTheme
|
||||||
import eu.gaudian.translator.ui.theme.themes.CrimsonTheme
|
import eu.gaudian.translator.ui.theme.themes.CrimsonTheme
|
||||||
import eu.gaudian.translator.ui.theme.themes.CyberpunkTheme
|
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.DefaultTheme
|
||||||
import eu.gaudian.translator.ui.theme.themes.ForestTheme
|
import eu.gaudian.translator.ui.theme.themes.ForestTheme
|
||||||
import eu.gaudian.translator.ui.theme.themes.NordTheme
|
import eu.gaudian.translator.ui.theme.themes.NordTheme
|
||||||
@@ -113,6 +114,7 @@ val AllThemes = listOf(
|
|||||||
SpaceTheme,
|
SpaceTheme,
|
||||||
CyberpunkTheme,
|
CyberpunkTheme,
|
||||||
SynthwaveTheme,
|
SynthwaveTheme,
|
||||||
|
DebugTheme,
|
||||||
|
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
)
|
||||||
|
)
|
||||||
@@ -24,6 +24,7 @@ import androidx.compose.material3.Text
|
|||||||
import androidx.compose.material3.TextButton
|
import androidx.compose.material3.TextButton
|
||||||
import androidx.compose.material3.dynamicDarkColorScheme
|
import androidx.compose.material3.dynamicDarkColorScheme
|
||||||
import androidx.compose.material3.dynamicLightColorScheme
|
import androidx.compose.material3.dynamicLightColorScheme
|
||||||
|
import androidx.compose.material3.surfaceColorAtElevation
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.CompositionLocalProvider
|
import androidx.compose.runtime.CompositionLocalProvider
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
@@ -35,12 +36,14 @@ import androidx.compose.runtime.mutableStateOf
|
|||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.runtime.setValue
|
import androidx.compose.runtime.setValue
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.graphics.toArgb
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.platform.LocalDensity
|
import androidx.compose.ui.platform.LocalDensity
|
||||||
import androidx.compose.ui.platform.LocalView
|
import androidx.compose.ui.platform.LocalView
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.text.font.Font
|
import androidx.compose.ui.text.font.Font
|
||||||
import androidx.compose.ui.text.font.FontFamily
|
import androidx.compose.ui.text.font.FontFamily
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
||||||
import androidx.core.view.WindowCompat
|
import androidx.core.view.WindowCompat
|
||||||
import androidx.core.view.WindowInsetsControllerCompat
|
import androidx.core.view.WindowInsetsControllerCompat
|
||||||
@@ -56,6 +59,7 @@ import eu.gaudian.translator.MyApplication
|
|||||||
import eu.gaudian.translator.R
|
import eu.gaudian.translator.R
|
||||||
import eu.gaudian.translator.ui.theme.AllFonts
|
import eu.gaudian.translator.ui.theme.AllFonts
|
||||||
import eu.gaudian.translator.ui.theme.AllThemes
|
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.ui.theme.buildColorScheme
|
||||||
import eu.gaudian.translator.utils.Log
|
import eu.gaudian.translator.utils.Log
|
||||||
import eu.gaudian.translator.utils.findActivity
|
import eu.gaudian.translator.utils.findActivity
|
||||||
@@ -150,9 +154,6 @@ fun TranslatorApp(
|
|||||||
val activity = LocalContext.current.findActivity()
|
val activity = LocalContext.current.findActivity()
|
||||||
val statusViewModel: StatusViewModel = hiltViewModel(activity)
|
val statusViewModel: StatusViewModel = hiltViewModel(activity)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
val navController = rememberNavController()
|
val navController = rememberNavController()
|
||||||
val statusState by statusViewModel.status.collectAsStateWithLifecycle()
|
val statusState by statusViewModel.status.collectAsStateWithLifecycle()
|
||||||
val keyboardInsets = WindowInsets.ime
|
val keyboardInsets = WindowInsets.ime
|
||||||
@@ -357,9 +358,12 @@ private fun AppTheme(
|
|||||||
val window = (view.context as Activity).window
|
val window = (view.context as Activity).window
|
||||||
val windowInsetsController = WindowInsetsControllerCompat(window, view)
|
val windowInsetsController = WindowInsetsControllerCompat(window, view)
|
||||||
|
|
||||||
//window.statusBarColor = android.graphics.Color.TRANSPARENT
|
// We must keep this for older Android version!!!
|
||||||
//window.navigationBarColor = android.graphics.Color.TRANSPARENT
|
@Suppress("DEPRECATION")
|
||||||
//TODO remove eventually
|
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.isAppearanceLightStatusBars = !useDarkTheme
|
||||||
windowInsetsController.isAppearanceLightNavigationBars = !useDarkTheme
|
windowInsetsController.isAppearanceLightNavigationBars = !useDarkTheme
|
||||||
@@ -400,7 +404,7 @@ private fun AppTheme(
|
|||||||
colorScheme = colorScheme,
|
colorScheme = colorScheme,
|
||||||
typography = dynamicTypography,
|
typography = dynamicTypography,
|
||||||
) {
|
) {
|
||||||
eu.gaudian.translator.ui.theme.ProvideSemanticColors {
|
ProvideSemanticColors {
|
||||||
content()
|
content()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user