Add debug setting to enable Material You compat color scheme on API 31+

This commit is contained in:
MM20 2022-04-13 10:09:30 +02:00
parent f2041e51c2
commit 17dd8558c0
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389
3 changed files with 18 additions and 12 deletions

View File

@ -15,6 +15,7 @@ message Settings {
enum ColorScheme { enum ColorScheme {
Default = 0; Default = 0;
BlackAndWhite = 1; BlackAndWhite = 1;
DebugMaterialYouCompat = 2;
} }
ColorScheme color_scheme = 6; ColorScheme color_scheme = 6;
bool dim_wallpaper = 7; bool dim_wallpaper = 7;

View File

@ -15,7 +15,9 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel import androidx.lifecycle.viewmodel.compose.viewModel
import de.mm20.launcher2.ktx.isAtLeastApiLevel
import de.mm20.launcher2.preferences.Settings.AppearanceSettings import de.mm20.launcher2.preferences.Settings.AppearanceSettings
import de.mm20.launcher2.ui.BuildConfig
import de.mm20.launcher2.ui.R import de.mm20.launcher2.ui.R
import de.mm20.launcher2.ui.component.preferences.Preference import de.mm20.launcher2.ui.component.preferences.Preference
import de.mm20.launcher2.ui.component.preferences.PreferenceCategory import de.mm20.launcher2.ui.component.preferences.PreferenceCategory
@ -32,14 +34,18 @@ fun ColorSchemeSettingsScreen() {
val colorScheme by viewModel.colorScheme.observeAsState() val colorScheme by viewModel.colorScheme.observeAsState()
val items = mutableListOf( val items = mutableListOf(
AppearanceSettings.ColorScheme.Default to R.string.preference_colors_default, AppearanceSettings.ColorScheme.Default to stringResource(R.string.preference_colors_default),
AppearanceSettings.ColorScheme.BlackAndWhite to R.string.preference_colors_bw, AppearanceSettings.ColorScheme.BlackAndWhite to stringResource(R.string.preference_colors_bw),
) )
if (BuildConfig.DEBUG && isAtLeastApiLevel(27)) {
items.add(AppearanceSettings.ColorScheme.DebugMaterialYouCompat to "Material You Compat")
}
for (cs in items) { for (cs in items) {
val scheme by colorSchemeAsState(cs.first) val scheme by colorSchemeAsState(cs.first)
Preference( Preference(
title = stringResource(cs.second), title = cs.second,
icon = if (colorScheme == cs.first) Icons.Rounded.RadioButtonChecked else Icons.Rounded.RadioButtonUnchecked, icon = if (colorScheme == cs.first) Icons.Rounded.RadioButtonChecked else Icons.Rounded.RadioButtonUnchecked,
onClick = { viewModel.setColorScheme(cs.first) }, onClick = { viewModel.setColorScheme(cs.first) },
controls = { controls = {

View File

@ -58,15 +58,7 @@ fun colorSchemeAsState(colorScheme: AppearanceSettings.ColorScheme): MutableStat
} }
} }
else -> { else -> {
if (Build.VERSION.SDK_INT >= 31) { if (Build.VERSION.SDK_INT >= 27 && (Build.VERSION.SDK_INT < 31 || colorScheme == AppearanceSettings.ColorScheme.DebugMaterialYouCompat)) {
return remember(darkTheme) {
mutableStateOf(
if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
)
}
}
if (Build.VERSION.SDK_INT >= 27 && Build.VERSION.SDK_INT < 31) {
val wallpaperColors by wallpaperColorsAsState() val wallpaperColors by wallpaperColorsAsState()
val state = remember(wallpaperColors, darkTheme) { val state = remember(wallpaperColors, darkTheme) {
mutableStateOf( mutableStateOf(
@ -76,6 +68,13 @@ fun colorSchemeAsState(colorScheme: AppearanceSettings.ColorScheme): MutableStat
} }
return state return state
} }
if (Build.VERSION.SDK_INT >= 31) {
return remember(darkTheme) {
mutableStateOf(
if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
)
}
}
return remember { mutableStateOf(if (darkTheme) DarkDefaultColorScheme else LightDefaultColorScheme) } return remember { mutableStateOf(if (darkTheme) DarkDefaultColorScheme else LightDefaultColorScheme) }