Default color to system
This commit is contained in:
@@ -54,6 +54,7 @@ import androidx.preference.PreferenceManager
|
|||||||
import net.helcel.cowspent.R
|
import net.helcel.cowspent.R
|
||||||
import net.helcel.cowspent.android.helper.ColorPicker
|
import net.helcel.cowspent.android.helper.ColorPicker
|
||||||
import net.helcel.cowspent.persistence.CowspentSQLiteOpenHelper
|
import net.helcel.cowspent.persistence.CowspentSQLiteOpenHelper
|
||||||
|
import net.helcel.cowspent.persistence.CowspentServerSyncHelper
|
||||||
import net.helcel.cowspent.util.ColorUtils
|
import net.helcel.cowspent.util.ColorUtils
|
||||||
import net.helcel.cowspent.util.Cowspent
|
import net.helcel.cowspent.util.Cowspent
|
||||||
|
|
||||||
@@ -81,21 +82,26 @@ fun SettingsScreen(
|
|||||||
val keyShowArchived = stringResource(R.string.pref_key_show_archived)
|
val keyShowArchived = stringResource(R.string.pref_key_show_archived)
|
||||||
val keyBetaFeatures = stringResource(R.string.pref_key_beta_features)
|
val keyBetaFeatures = stringResource(R.string.pref_key_beta_features)
|
||||||
|
|
||||||
|
val isNextcloudConfigured = CowspentServerSyncHelper.isNextcloudAccountConfigured(context)
|
||||||
|
|
||||||
// States for preferences
|
// States for preferences
|
||||||
var nightMode by remember(keyNightMode) {
|
var nightMode by remember(keyNightMode) {
|
||||||
mutableStateOf(sharedPreferences.getString(keyNightMode, "-1") ?: "-1")
|
mutableStateOf(sharedPreferences.getString(keyNightMode, "-1") ?: "-1")
|
||||||
}
|
}
|
||||||
|
|
||||||
var colorMode by remember(keyColorMode, keyUseServerColor, keyUseSystemColor) {
|
var colorMode by remember(keyColorMode, keyUseServerColor, keyUseSystemColor, isNextcloudConfigured) {
|
||||||
mutableStateOf(sharedPreferences.getString(keyColorMode, null) ?: run {
|
val savedMode = sharedPreferences.getString(keyColorMode, null)
|
||||||
val useServer = sharedPreferences.getBoolean(keyUseServerColor, true)
|
val mode = savedMode ?: run {
|
||||||
|
val useServer = sharedPreferences.getBoolean(keyUseServerColor, false)
|
||||||
val useSystem = sharedPreferences.getBoolean(keyUseSystemColor, true)
|
val useSystem = sharedPreferences.getBoolean(keyUseSystemColor, true)
|
||||||
when {
|
when {
|
||||||
useServer -> "server"
|
useServer && isNextcloudConfigured -> "server"
|
||||||
useSystem -> "system"
|
useSystem -> "system"
|
||||||
else -> "manual"
|
else -> "manual"
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
|
// Fallback to system if server is selected but not configured
|
||||||
|
mutableStateOf(if (mode == "server" && !isNextcloudConfigured) "system" else mode)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply theme globally only when leaving settings to avoid flickering/restarts during selection
|
// Apply theme globally only when leaving settings to avoid flickering/restarts during selection
|
||||||
@@ -181,15 +187,19 @@ fun SettingsScreen(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
val colorModeEntries = buildMap {
|
||||||
|
put("system", stringResource(R.string.pref_value_color_system))
|
||||||
|
if (isNextcloudConfigured) {
|
||||||
|
put("server", stringResource(R.string.pref_value_color_server))
|
||||||
|
}
|
||||||
|
put("manual", stringResource(R.string.pref_value_color_manual))
|
||||||
|
}
|
||||||
|
|
||||||
SettingsListPreference(
|
SettingsListPreference(
|
||||||
title = stringResource(R.string.settings_color_mode),
|
title = stringResource(R.string.settings_color_mode),
|
||||||
icon = Icons.Default.Palette,
|
icon = Icons.Default.Palette,
|
||||||
value = colorMode,
|
value = colorMode,
|
||||||
entries = mapOf(
|
entries = colorModeEntries,
|
||||||
"system" to stringResource(R.string.pref_value_color_system),
|
|
||||||
"server" to stringResource(R.string.pref_value_color_server),
|
|
||||||
"manual" to stringResource(R.string.pref_value_color_manual)
|
|
||||||
),
|
|
||||||
onValueChange = { mode ->
|
onValueChange = { mode ->
|
||||||
colorMode = mode
|
colorMode = mode
|
||||||
sharedPreferences.edit {
|
sharedPreferences.edit {
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ object ColorUtils {
|
|||||||
val colorMode = if (prefs.contains(modeKey)) {
|
val colorMode = if (prefs.contains(modeKey)) {
|
||||||
prefs.getString(modeKey, "system")
|
prefs.getString(modeKey, "system")
|
||||||
} else {
|
} else {
|
||||||
val useServer = prefs.getBoolean(context.getString(R.string.pref_key_use_server_color), true)
|
val useServer = prefs.getBoolean(context.getString(R.string.pref_key_use_server_color), false)
|
||||||
val useSystem = prefs.getBoolean(context.getString(R.string.pref_key_use_system_color), true)
|
val useSystem = prefs.getBoolean(context.getString(R.string.pref_key_use_system_color), true)
|
||||||
when {
|
when {
|
||||||
useServer -> "server"
|
useServer -> "server"
|
||||||
|
|||||||
Reference in New Issue
Block a user