[WIP] Compose appearance preference screen
This commit is contained in:
parent
e513ecb887
commit
9fe2f0f347
@ -25,10 +25,7 @@ import de.mm20.launcher2.ui.locals.LocalColorScheme
|
|||||||
import de.mm20.launcher2.ui.locals.LocalNavController
|
import de.mm20.launcher2.ui.locals.LocalNavController
|
||||||
import de.mm20.launcher2.ui.locals.LocalWindowSize
|
import de.mm20.launcher2.ui.locals.LocalWindowSize
|
||||||
import de.mm20.launcher2.ui.screens.LauncherMainScreen
|
import de.mm20.launcher2.ui.screens.LauncherMainScreen
|
||||||
import de.mm20.launcher2.ui.screens.settings.SettingsAboutScreen
|
import de.mm20.launcher2.ui.screens.settings.*
|
||||||
import de.mm20.launcher2.ui.screens.settings.SettingsBadgesScreen
|
|
||||||
import de.mm20.launcher2.ui.screens.settings.SettingsLicenseScreen
|
|
||||||
import de.mm20.launcher2.ui.screens.settings.SettingsMainScreen
|
|
||||||
import de.mm20.launcher2.ui.theme.WallpaperColors
|
import de.mm20.launcher2.ui.theme.WallpaperColors
|
||||||
import de.mm20.launcher2.ui.theme.colors.DefaultColorScheme
|
import de.mm20.launcher2.ui.theme.colors.DefaultColorScheme
|
||||||
import de.mm20.launcher2.ui.theme.colors.WallpaperColorScheme
|
import de.mm20.launcher2.ui.theme.colors.WallpaperColorScheme
|
||||||
@ -110,6 +107,9 @@ class ComposeActivity : AppCompatActivity() {
|
|||||||
composable("settings/badges") {
|
composable("settings/badges") {
|
||||||
SettingsBadgesScreen()
|
SettingsBadgesScreen()
|
||||||
}
|
}
|
||||||
|
composable("settings/appearance") {
|
||||||
|
SettingsAppearanceScreen()
|
||||||
|
}
|
||||||
composable(
|
composable(
|
||||||
"settings/license?library={libraryName}",
|
"settings/license?library={libraryName}",
|
||||||
arguments = listOf(navArgument("libraryName") {
|
arguments = listOf(navArgument("libraryName") {
|
||||||
|
|||||||
@ -0,0 +1,47 @@
|
|||||||
|
package de.mm20.launcher2.ui.screens.settings
|
||||||
|
|
||||||
|
import androidx.compose.runtime.*
|
||||||
|
import androidx.compose.ui.platform.LocalContext
|
||||||
|
import androidx.compose.ui.res.stringResource
|
||||||
|
import de.mm20.launcher2.preferences.Settings
|
||||||
|
import de.mm20.launcher2.preferences.dataStore
|
||||||
|
import de.mm20.launcher2.ui.R
|
||||||
|
import de.mm20.launcher2.ui.component.preferences.ListPreference
|
||||||
|
import de.mm20.launcher2.ui.component.preferences.PreferenceCategory
|
||||||
|
import de.mm20.launcher2.ui.component.preferences.PreferenceScreen
|
||||||
|
import kotlinx.coroutines.flow.map
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun SettingsAppearanceScreen() {
|
||||||
|
val context = LocalContext.current
|
||||||
|
val dataStore = context.dataStore
|
||||||
|
val scope = rememberCoroutineScope()
|
||||||
|
PreferenceScreen(title = stringResource(id = R.string.preference_screen_appearance)) {
|
||||||
|
item {
|
||||||
|
PreferenceCategory {
|
||||||
|
val theme by remember {
|
||||||
|
dataStore.data.map { it.appearance.theme }
|
||||||
|
}.collectAsState(initial = Settings.AppearanceSettings.Theme.System)
|
||||||
|
ListPreference(
|
||||||
|
title = stringResource(id = R.string.preference_theme),
|
||||||
|
items = listOf(
|
||||||
|
stringResource(id = R.string.preference_theme_system) to Settings.AppearanceSettings.Theme.System,
|
||||||
|
stringResource(id = R.string.preference_theme_light) to Settings.AppearanceSettings.Theme.Light,
|
||||||
|
stringResource(id = R.string.preference_theme_dark) to Settings.AppearanceSettings.Theme.Dark,
|
||||||
|
),
|
||||||
|
value = theme,
|
||||||
|
onValueChanged = { newValue ->
|
||||||
|
scope.launch {
|
||||||
|
dataStore.updateData {
|
||||||
|
it.toBuilder()
|
||||||
|
.setAppearance(it.appearance.toBuilder().setTheme(newValue))
|
||||||
|
.build()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -22,7 +22,10 @@ fun SettingsMainScreen() {
|
|||||||
Preference(
|
Preference(
|
||||||
icon = Icons.Rounded.Palette,
|
icon = Icons.Rounded.Palette,
|
||||||
title = stringResource(id = R.string.preference_screen_appearance),
|
title = stringResource(id = R.string.preference_screen_appearance),
|
||||||
summary = stringResource(id = R.string.preference_screen_appearance_summary)
|
summary = stringResource(id = R.string.preference_screen_appearance_summary),
|
||||||
|
onClick = {
|
||||||
|
navController?.navigate("settings/appearance")
|
||||||
|
}
|
||||||
)
|
)
|
||||||
Preference(
|
Preference(
|
||||||
icon = Icons.Rounded.Search,
|
icon = Icons.Rounded.Search,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user