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 {
Default = 0;
BlackAndWhite = 1;
DebugMaterialYouCompat = 2;
}
ColorScheme color_scheme = 6;
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.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel
import de.mm20.launcher2.ktx.isAtLeastApiLevel
import de.mm20.launcher2.preferences.Settings.AppearanceSettings
import de.mm20.launcher2.ui.BuildConfig
import de.mm20.launcher2.ui.R
import de.mm20.launcher2.ui.component.preferences.Preference
import de.mm20.launcher2.ui.component.preferences.PreferenceCategory
@ -32,14 +34,18 @@ fun ColorSchemeSettingsScreen() {
val colorScheme by viewModel.colorScheme.observeAsState()
val items = mutableListOf(
AppearanceSettings.ColorScheme.Default to R.string.preference_colors_default,
AppearanceSettings.ColorScheme.BlackAndWhite to R.string.preference_colors_bw,
AppearanceSettings.ColorScheme.Default to stringResource(R.string.preference_colors_default),
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) {
val scheme by colorSchemeAsState(cs.first)
Preference(
title = stringResource(cs.second),
title = cs.second,
icon = if (colorScheme == cs.first) Icons.Rounded.RadioButtonChecked else Icons.Rounded.RadioButtonUnchecked,
onClick = { viewModel.setColorScheme(cs.first) },
controls = {

View File

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