Add palette property to ColorPaletteMode

This commit is contained in:
vfsfitvnm 2022-06-28 15:59:40 +02:00
parent c74a8f9f07
commit aa02242cc6
3 changed files with 28 additions and 16 deletions

View file

@ -34,8 +34,7 @@ import androidx.compose.ui.unit.dp
import com.google.accompanist.systemuicontroller.rememberSystemUiController import com.google.accompanist.systemuicontroller.rememberSystemUiController
import com.valentinilk.shimmer.LocalShimmerTheme import com.valentinilk.shimmer.LocalShimmerTheme
import com.valentinilk.shimmer.defaultShimmerTheme import com.valentinilk.shimmer.defaultShimmerTheme
import it.vfsfitvnm.vimusic.enums.ColorPaletteMode import it.vfsfitvnm.vimusic.service.PlayerService
import it.vfsfitvnm.vimusic.services.PlayerService
import it.vfsfitvnm.vimusic.ui.components.BottomSheetMenu import it.vfsfitvnm.vimusic.ui.components.BottomSheetMenu
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState import it.vfsfitvnm.vimusic.ui.components.LocalMenuState
import it.vfsfitvnm.vimusic.ui.components.rememberBottomSheetState import it.vfsfitvnm.vimusic.ui.components.rememberBottomSheetState
@ -86,28 +85,20 @@ class MainActivity : ComponentActivity() {
val preferences = rememberPreferences() val preferences = rememberPreferences()
val systemUiController = rememberSystemUiController() val systemUiController = rememberSystemUiController()
val (isDarkTheme, colorPalette) = when (preferences.colorPaletteMode) { val colorPalette = preferences.colorPaletteMode.palette(isSystemInDarkTheme())
ColorPaletteMode.Light -> false to LightColorPalette
ColorPaletteMode.Dark -> true to DarkColorPalette
ColorPaletteMode.Black -> true to BlackColorPalette
ColorPaletteMode.System -> when (isSystemInDarkTheme()) {
true -> true to DarkColorPalette
false -> false to LightColorPalette
}
}
val rippleTheme = remember(colorPalette.text, isDarkTheme) { val rippleTheme = remember(colorPalette.text, colorPalette.isDark) {
object : RippleTheme { object : RippleTheme {
@Composable @Composable
override fun defaultColor(): Color = RippleTheme.defaultRippleColor( override fun defaultColor(): Color = RippleTheme.defaultRippleColor(
contentColor = colorPalette.text, contentColor = colorPalette.text,
lightTheme = !isDarkTheme lightTheme = !colorPalette.isDark
) )
@Composable @Composable
override fun rippleAlpha(): RippleAlpha = RippleTheme.defaultRippleAlpha( override fun rippleAlpha(): RippleAlpha = RippleTheme.defaultRippleAlpha(
contentColor = colorPalette.text, contentColor = colorPalette.text,
lightTheme = !isDarkTheme lightTheme = !colorPalette.isDark
) )
} }
} }
@ -131,7 +122,7 @@ class MainActivity : ComponentActivity() {
} }
SideEffect { SideEffect {
systemUiController.setSystemBarsColor(colorPalette.background, !isDarkTheme) systemUiController.setSystemBarsColor(colorPalette.background, !colorPalette.isDark)
} }
CompositionLocalProvider( CompositionLocalProvider(

View file

@ -1,8 +1,25 @@
package it.vfsfitvnm.vimusic.enums package it.vfsfitvnm.vimusic.enums
import it.vfsfitvnm.vimusic.ui.styling.BlackColorPalette
import it.vfsfitvnm.vimusic.ui.styling.ColorPalette
import it.vfsfitvnm.vimusic.ui.styling.DarkColorPalette
import it.vfsfitvnm.vimusic.ui.styling.LightColorPalette
enum class ColorPaletteMode { enum class ColorPaletteMode {
Light, Light,
Dark, Dark,
Black, Black,
System System;
fun palette(isSystemInDarkMode: Boolean): ColorPalette {
return when (this) {
Light -> LightColorPalette
Dark -> DarkColorPalette
Black -> BlackColorPalette
System -> when (isSystemInDarkMode) {
true -> DarkColorPalette
false -> LightColorPalette
}
}
}
} }

View file

@ -24,6 +24,8 @@ data class ColorPalette(
val primaryContainer: Color, val primaryContainer: Color,
val onPrimaryContainer: Color, val onPrimaryContainer: Color,
val iconOnPrimaryContainer: Color, val iconOnPrimaryContainer: Color,
val isDark: Boolean
) )
val DarkColorPalette = ColorPalette( val DarkColorPalette = ColorPalette(
@ -46,6 +48,7 @@ val DarkColorPalette = ColorPalette(
primaryContainer = Color(0xff4046bf), primaryContainer = Color(0xff4046bf),
onPrimaryContainer = Color.White, onPrimaryContainer = Color.White,
iconOnPrimaryContainer = Color.White, iconOnPrimaryContainer = Color.White,
isDark = true
) )
val BlackColorPalette = DarkColorPalette.copy( val BlackColorPalette = DarkColorPalette.copy(
@ -77,6 +80,7 @@ val LightColorPalette = ColorPalette(
// primaryContainer = Color(0xffecedf9), // primaryContainer = Color(0xffecedf9),
// onPrimaryContainer = Color(0xff121212), // onPrimaryContainer = Color(0xff121212),
// iconOnPrimaryContainer = Color(0xff2e30b8), // iconOnPrimaryContainer = Color(0xff2e30b8),
isDark = false
) )
val LocalColorPalette = staticCompositionLocalOf { LightColorPalette } val LocalColorPalette = staticCompositionLocalOf { LightColorPalette }