From fff3490719c176448ca5d568bb4190b890f03a37 Mon Sep 17 00:00:00 2001 From: soraefir Date: Thu, 3 Sep 2026 21:44:29 +0200 Subject: [PATCH] Default color to system --- .../android/settings/SettingsScreen.kt | 30 ++++++++++++------- .../net/helcel/cowspent/util/ColorUtils.kt | 2 +- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/net/helcel/cowspent/android/settings/SettingsScreen.kt b/app/src/main/java/net/helcel/cowspent/android/settings/SettingsScreen.kt index dc3ffa1..3232c4b 100644 --- a/app/src/main/java/net/helcel/cowspent/android/settings/SettingsScreen.kt +++ b/app/src/main/java/net/helcel/cowspent/android/settings/SettingsScreen.kt @@ -54,6 +54,7 @@ import androidx.preference.PreferenceManager import net.helcel.cowspent.R import net.helcel.cowspent.android.helper.ColorPicker import net.helcel.cowspent.persistence.CowspentSQLiteOpenHelper +import net.helcel.cowspent.persistence.CowspentServerSyncHelper import net.helcel.cowspent.util.ColorUtils import net.helcel.cowspent.util.Cowspent @@ -81,21 +82,26 @@ fun SettingsScreen( val keyShowArchived = stringResource(R.string.pref_key_show_archived) val keyBetaFeatures = stringResource(R.string.pref_key_beta_features) + val isNextcloudConfigured = CowspentServerSyncHelper.isNextcloudAccountConfigured(context) + // States for preferences var nightMode by remember(keyNightMode) { mutableStateOf(sharedPreferences.getString(keyNightMode, "-1") ?: "-1") } - var colorMode by remember(keyColorMode, keyUseServerColor, keyUseSystemColor) { - mutableStateOf(sharedPreferences.getString(keyColorMode, null) ?: run { - val useServer = sharedPreferences.getBoolean(keyUseServerColor, true) + var colorMode by remember(keyColorMode, keyUseServerColor, keyUseSystemColor, isNextcloudConfigured) { + val savedMode = sharedPreferences.getString(keyColorMode, null) + val mode = savedMode ?: run { + val useServer = sharedPreferences.getBoolean(keyUseServerColor, false) val useSystem = sharedPreferences.getBoolean(keyUseSystemColor, true) when { - useServer -> "server" + useServer && isNextcloudConfigured -> "server" useSystem -> "system" 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 @@ -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( title = stringResource(R.string.settings_color_mode), icon = Icons.Default.Palette, value = colorMode, - entries = mapOf( - "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) - ), + entries = colorModeEntries, onValueChange = { mode -> colorMode = mode sharedPreferences.edit { diff --git a/app/src/main/java/net/helcel/cowspent/util/ColorUtils.kt b/app/src/main/java/net/helcel/cowspent/util/ColorUtils.kt index 0d965ef..47a844d 100644 --- a/app/src/main/java/net/helcel/cowspent/util/ColorUtils.kt +++ b/app/src/main/java/net/helcel/cowspent/util/ColorUtils.kt @@ -24,7 +24,7 @@ object ColorUtils { val colorMode = if (prefs.contains(modeKey)) { prefs.getString(modeKey, "system") } 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) when { useServer -> "server"