From 0266115dac58b9ab35ff34749601191de105a148 Mon Sep 17 00:00:00 2001 From: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com> Date: Sun, 23 Mar 2025 16:50:00 +0800 Subject: [PATCH] Opt theme mode management Update card color and dark color setting logic --- .../shirkneko/zako/sukisu/ui/MainActivity.kt | 1 - .../shirkneko/zako/sukisu/ui/screen/Module.kt | 1 - .../zako/sukisu/ui/screen/MoreSettings.kt | 23 +++++++++++++ .../zako/sukisu/ui/theme/CardManage.kt | 33 +++++++++++++++++-- 4 files changed, 54 insertions(+), 4 deletions(-) diff --git a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/MainActivity.kt b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/MainActivity.kt index 8e2c437a..15099c52 100644 --- a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/MainActivity.kt +++ b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/MainActivity.kt @@ -148,7 +148,6 @@ private fun BottomBar(navController: NavHostController) { label = { Text(stringResource(destination.label)) }, alwaysShowLabel = false, colors = androidx.compose.material3.NavigationBarItemDefaults.colors( - selectedTextColor = Color.Black, unselectedTextColor = MaterialTheme.colorScheme.onSurfaceVariant ) ) diff --git a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/Module.kt b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/Module.kt index bb48f47f..53245621 100644 --- a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/Module.kt +++ b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/Module.kt @@ -124,7 +124,6 @@ fun ModuleScreen(navigator: DestinationsNavigator) { val snackBarHost = LocalSnackbarHost.current val scope = rememberCoroutineScope() val confirmDialog = rememberConfirmDialog() - val buttonTextColor = androidx.compose.ui.graphics.Color.Black val selectZipLauncher = rememberLauncherForActivityResult( contract = ActivityResultContracts.StartActivityForResult() diff --git a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/MoreSettings.kt b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/MoreSettings.kt index 444561e5..4a2e845d 100644 --- a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/MoreSettings.kt +++ b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/MoreSettings.kt @@ -356,6 +356,9 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) { cardAlpha = 0.65f themeMode = 0 context.saveThemeMode(null) + CardConfig.isUserDarkModeEnabled = false + CardConfig.isUserLightModeEnabled = false + CardConfig.save(context) } } ) @@ -424,6 +427,26 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) { else -> null } context.saveThemeMode(newThemeMode) + when (index) { + 2 -> { + ThemeConfig.forceDarkMode = true + CardConfig.isUserLightModeEnabled = false + CardConfig.isUserDarkModeEnabled = true + CardConfig.save(context) + } + 1 -> { + ThemeConfig.forceDarkMode = false + CardConfig.isUserLightModeEnabled = true + CardConfig.isUserDarkModeEnabled = false + CardConfig.save(context) + } + 0 -> { + ThemeConfig.forceDarkMode = null + CardConfig.isUserLightModeEnabled = false + CardConfig.isUserDarkModeEnabled = false + CardConfig.save(context) + } + } showThemeModeDialog = false } .padding(vertical = 12.dp), diff --git a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/theme/CardManage.kt b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/theme/CardManage.kt index 535383dc..b91c3403 100644 --- a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/theme/CardManage.kt +++ b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/theme/CardManage.kt @@ -1,6 +1,8 @@ package shirkneko.zako.sukisu.ui.theme import android.content.Context +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.CardDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -9,7 +11,6 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.luminance import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import androidx.compose.material3.CardDefaults object CardConfig { val defaultElevation: Dp = 0.dp @@ -18,6 +19,9 @@ object CardConfig { var cardElevation by mutableStateOf(defaultElevation) var isShadowEnabled by mutableStateOf(true) var isCustomAlphaSet by mutableStateOf(false) + var isUserDarkModeEnabled by mutableStateOf(false) + var isUserLightModeEnabled by mutableStateOf(false) + var isCustomBackgroundEnabled by mutableStateOf(false) fun save(context: Context) { val prefs = context.getSharedPreferences("settings", Context.MODE_PRIVATE) @@ -25,6 +29,9 @@ object CardConfig { putFloat("card_alpha", cardAlpha) putBoolean("custom_background_enabled", cardElevation == 0.dp) putBoolean("is_custom_alpha_set", isCustomAlphaSet) + putBoolean("is_user_dark_mode_enabled", isUserDarkModeEnabled) + putBoolean("is_user_light_mode_enabled", isUserLightModeEnabled) + putBoolean("is_custom_background_enabled", isCustomBackgroundEnabled) apply() } } @@ -34,6 +41,9 @@ object CardConfig { cardAlpha = prefs.getFloat("card_alpha", 1f) cardElevation = if (prefs.getBoolean("custom_background_enabled", false)) 0.dp else defaultElevation isCustomAlphaSet = prefs.getBoolean("is_custom_alpha_set", false) + isUserDarkModeEnabled = prefs.getBoolean("is_user_dark_mode_enabled", false) + isUserLightModeEnabled = prefs.getBoolean("is_user_light_mode_enabled", false) + isCustomBackgroundEnabled = prefs.getBoolean("is_custom_background_enabled", false) } fun updateShadowEnabled(enabled: Boolean) { @@ -53,7 +63,26 @@ object CardConfig { @Composable fun getCardColors(originalColor: Color) = CardDefaults.elevatedCardColors( containerColor = originalColor.copy(alpha = CardConfig.cardAlpha), - contentColor = if (originalColor.luminance() > 0.5) Color.Black else Color.White + contentColor = when { + CardConfig.isUserLightModeEnabled -> { + Color.Black + } + CardConfig.isUserDarkModeEnabled -> { + Color.White + } + !isSystemInDarkTheme() && !CardConfig.isUserDarkModeEnabled -> { + Color.Black + } + !isSystemInDarkTheme() && !CardConfig.isCustomBackgroundEnabled && !CardConfig.isUserDarkModeEnabled && originalColor.luminance() > 0.3 -> { + Color.Black + } + isSystemInDarkTheme() && !CardConfig.isUserDarkModeEnabled && !CardConfig.isUserLightModeEnabled-> { + Color.White + } + else -> { + Color.White + } + } ) fun getCardElevation() = CardConfig.cardElevation \ No newline at end of file