[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.LocalWindowSize
|
||||
import de.mm20.launcher2.ui.screens.LauncherMainScreen
|
||||
import de.mm20.launcher2.ui.screens.settings.SettingsAboutScreen
|
||||
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.screens.settings.*
|
||||
import de.mm20.launcher2.ui.theme.WallpaperColors
|
||||
import de.mm20.launcher2.ui.theme.colors.DefaultColorScheme
|
||||
import de.mm20.launcher2.ui.theme.colors.WallpaperColorScheme
|
||||
@ -110,6 +107,9 @@ class ComposeActivity : AppCompatActivity() {
|
||||
composable("settings/badges") {
|
||||
SettingsBadgesScreen()
|
||||
}
|
||||
composable("settings/appearance") {
|
||||
SettingsAppearanceScreen()
|
||||
}
|
||||
composable(
|
||||
"settings/license?library={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(
|
||||
icon = Icons.Rounded.Palette,
|
||||
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(
|
||||
icon = Icons.Rounded.Search,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user