diff --git a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/Home.kt b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/Home.kt index 3ceccd85..b954775a 100644 --- a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/Home.kt +++ b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/Home.kt @@ -489,7 +489,7 @@ private fun InfoCard() { Spacer(Modifier.height(16.dp)) - val deviceModel = Build.MODEL + val deviceModel = Build.DEVICE InfoCardItem(stringResource(R.string.home_device_model), deviceModel) 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 75b37804..2e592e88 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 @@ -112,6 +112,8 @@ import java.io.BufferedReader import java.io.InputStreamReader import java.util.zip.ZipInputStream import androidx.compose.ui.graphics.Color +import androidx.compose.material3.FloatingActionButtonDefaults + @OptIn(ExperimentalMaterial3Api::class) @Destination @@ -353,16 +355,20 @@ fun ModuleScreen(navigator: DestinationsNavigator) { icon = { Icon( imageVector = Icons.Filled.Add, - contentDescription = moduleInstall, - tint = buttonTextColor + contentDescription = moduleInstall ) }, text = { Text( - text = moduleInstall, - color = buttonTextColor + text = moduleInstall ) - } + }, + elevation = FloatingActionButtonDefaults.elevation( + defaultElevation = 0.dp, + pressedElevation = 0.dp, + focusedElevation = 0.dp, + hoveredElevation = 0.dp + ) ) } }, 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 0b4af1a4..d8f0dc65 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 @@ -119,7 +119,7 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) { // 初始化卡片配置 LaunchedEffect(Unit) { CardConfig.apply { - cardAlpha = prefs.getFloat("card_alpha", 0.85f) + cardAlpha = prefs.getFloat("card_alpha", 0.65f) cardElevation = if (prefs.getBoolean("custom_background_enabled", false)) 0.dp else CardConfig.defaultElevation } } @@ -133,7 +133,6 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) { stringResource(R.string.color_orange) to ThemeColors.Orange, stringResource(R.string.color_pink) to ThemeColors.Pink, stringResource(R.string.color_gray) to ThemeColors.Gray, - stringResource(R.string.color_ivory) to ThemeColors.Ivory ) var showThemeColorDialog by remember { mutableStateOf(false) } @@ -262,7 +261,6 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) { is ThemeColors.Orange -> stringResource(R.string.color_orange) is ThemeColors.Pink -> stringResource(R.string.color_pink) is ThemeColors.Gray -> stringResource(R.string.color_gray) - is ThemeColors.Ivory -> stringResource(R.string.color_ivory) else -> stringResource(R.string.color_default) } Text(currentThemeName) @@ -289,7 +287,6 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) { ThemeColors.Orange -> "orange" ThemeColors.Pink -> "pink" ThemeColors.Gray -> "gray" - ThemeColors.Ivory -> "ivory" else -> "default" }) showThemeColorDialog = false @@ -446,9 +443,9 @@ private fun getSliderColors(cardAlpha: Float, useCustomColors: Boolean = false): // 使用自定义主题色时 useCustomColors -> { SliderDefaults.colors( - activeTrackColor = theme.getCustomSliderActiveColor(), + activeTrackColor = Color.White, inactiveTrackColor = theme.getCustomSliderInactiveColor(), - thumbColor = theme.Primary + thumbColor = Color.White ) } else -> { diff --git a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/Template.kt b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/Template.kt index 4333a287..cd62d571 100644 --- a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/Template.kt +++ b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/Template.kt @@ -24,6 +24,7 @@ import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExtendedFloatingActionButton +import androidx.compose.material3.FloatingActionButtonDefaults import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.ListItem @@ -148,6 +149,12 @@ fun AppProfileTemplateScreen( }, icon = { Icon(Icons.Filled.Add, null) }, text = { Text(stringResource(id = R.string.app_profile_template_create)) }, + elevation = FloatingActionButtonDefaults.elevation( + defaultElevation = 0.dp, + pressedElevation = 0.dp, + focusedElevation = 0.dp, + hoveredElevation = 0.dp + ) ) }, contentWindowInsets = WindowInsets.safeDrawing.only(WindowInsetsSides.Top + WindowInsetsSides.Horizontal) 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 1e8cf91a..e4e75a6b 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 @@ -12,10 +12,11 @@ import androidx.compose.ui.unit.dp import androidx.compose.material3.CardDefaults object CardConfig { - val defaultElevation: Dp = 2.dp + val defaultElevation: Dp = 0.dp var cardAlpha by mutableStateOf(1f) var cardElevation by mutableStateOf(defaultElevation) + var isShadowEnabled by mutableStateOf(true) fun save(context: Context) { val prefs = context.getSharedPreferences("settings", Context.MODE_PRIVATE) @@ -31,12 +32,23 @@ object CardConfig { cardAlpha = prefs.getFloat("card_alpha", 1f) cardElevation = if (prefs.getBoolean("custom_background_enabled", false)) 0.dp else defaultElevation } + + fun updateShadowEnabled(enabled: Boolean) { + isShadowEnabled = enabled + cardElevation = if (enabled) defaultElevation else 0.dp + } + + fun setDarkModeDefaults() { + cardAlpha = 0.5f + cardElevation = 0.dp + } } + @Composable fun getCardColors(originalColor: Color) = CardDefaults.elevatedCardColors( containerColor = originalColor.copy(alpha = CardConfig.cardAlpha), contentColor = if (originalColor.luminance() > 0.5) Color.Black else Color.White ) -fun getCardElevation() = CardConfig.cardElevation +fun getCardElevation() = CardConfig.cardElevation \ No newline at end of file diff --git a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/theme/Color.kt b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/theme/Color.kt index 1f97a2e9..2d023392 100644 --- a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/theme/Color.kt +++ b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/theme/Color.kt @@ -27,12 +27,12 @@ sealed class ThemeColors { override val OnPrimary = Color(0xFFFFFFFF) override val OnSecondary = Color(0xFFFFFFFF) override val OnTertiary = Color(0xFFFFFFFF) - override val PrimaryContainer = Color(0xFFFFFBE9) + override val PrimaryContainer = Color(0xFFFFF7D6) override val SecondaryContainer = Color(0xFFFFE6B3) override val TertiaryContainer = Color(0xFFD7CCC8) - override val OnPrimaryContainer = Color(0xFF000000) - override val OnSecondaryContainer = Color(0xFF000000) - override val OnTertiaryContainer = Color(0xFF000000) + override val OnPrimaryContainer = Color(0xFF1A1600) + override val OnSecondaryContainer = Color(0xFF1A1100) + override val OnTertiaryContainer = Color(0xFF1A1717) } // Blue Theme @@ -43,12 +43,12 @@ sealed class ThemeColors { override val OnPrimary = Color(0xFFFFFFFF) override val OnSecondary = Color(0xFFFFFFFF) override val OnTertiary = Color(0xFFFFFFFF) - override val PrimaryContainer = Color(0xFFE3F2FD) + override val PrimaryContainer = Color(0xFFCBE6FC) override val SecondaryContainer = Color(0xFFBBDEFB) override val TertiaryContainer = Color(0xFF90CAF9) - override val OnPrimaryContainer = Color(0xFF000000) - override val OnSecondaryContainer = Color(0xFF000000) - override val OnTertiaryContainer = Color(0xFF000000) + override val OnPrimaryContainer = Color(0xFF0A1A2E) + override val OnSecondaryContainer = Color(0xFF0A192D) + override val OnTertiaryContainer = Color(0xFF071B3D) } // Green Theme @@ -59,12 +59,12 @@ sealed class ThemeColors { override val OnPrimary = Color(0xFFFFFFFF) override val OnSecondary = Color(0xFFFFFFFF) override val OnTertiary = Color(0xFFFFFFFF) - override val PrimaryContainer = Color(0xFFE8F5E9) - override val SecondaryContainer = Color(0xFFC8E6C9) - override val TertiaryContainer = Color(0xFFA5D6A7) - override val OnPrimaryContainer = Color(0xFF000000) - override val OnSecondaryContainer = Color(0xFF000000) - override val OnTertiaryContainer = Color(0xFF000000) + override val PrimaryContainer = Color(0xFFC8E6C9) + override val SecondaryContainer = Color(0xFFA5D6A7) + override val TertiaryContainer = Color(0xFF81C784) + override val OnPrimaryContainer = Color(0xFF0A1F0B) + override val OnSecondaryContainer = Color(0xFF0A1D0B) + override val OnTertiaryContainer = Color(0xFF071F09) } // Purple Theme @@ -75,12 +75,12 @@ sealed class ThemeColors { override val OnPrimary = Color(0xFFFFFFFF) override val OnSecondary = Color(0xFFFFFFFF) override val OnTertiary = Color(0xFFFFFFFF) - override val PrimaryContainer = Color(0xFFF3E5F5) - override val SecondaryContainer = Color(0xFFE1BEE7) - override val TertiaryContainer = Color(0xFFCE93D8) - override val OnPrimaryContainer = Color(0xFF000000) - override val OnSecondaryContainer = Color(0xFF000000) - override val OnTertiaryContainer = Color(0xFF000000) + override val PrimaryContainer = Color(0xFFE1BEE7) + override val SecondaryContainer = Color(0xFFCE93D8) + override val TertiaryContainer = Color(0xFFB39DDB) + override val OnPrimaryContainer = Color(0xFF1F0A23) + override val OnSecondaryContainer = Color(0xFF1C0A21) + override val OnTertiaryContainer = Color(0xFF12071C) } // Orange Theme @@ -91,12 +91,12 @@ sealed class ThemeColors { override val OnPrimary = Color(0xFFFFFFFF) override val OnSecondary = Color(0xFFFFFFFF) override val OnTertiary = Color(0xFFFFFFFF) - override val PrimaryContainer = Color(0xFFFFF3E0) - override val SecondaryContainer = Color(0xFFFFE0B2) - override val TertiaryContainer = Color(0xFFFFCC80) - override val OnPrimaryContainer = Color(0xFF000000) - override val OnSecondaryContainer = Color(0xFF000000) - override val OnTertiaryContainer = Color(0xFF000000) + override val PrimaryContainer = Color(0xFFFFE0B2) + override val SecondaryContainer = Color(0xFFFFCC80) + override val TertiaryContainer = Color(0xFFFFB74D) + override val OnPrimaryContainer = Color(0xFF1A1100) + override val OnSecondaryContainer = Color(0xFF1A1000) + override val OnTertiaryContainer = Color(0xFF1A0B00) } // Pink Theme @@ -107,12 +107,12 @@ sealed class ThemeColors { override val OnPrimary = Color(0xFFFFFFFF) override val OnSecondary = Color(0xFFFFFFFF) override val OnTertiary = Color(0xFFFFFFFF) - override val PrimaryContainer = Color(0xFFFCE4EC) - override val SecondaryContainer = Color(0xFFF8BBD0) - override val TertiaryContainer = Color(0xFFF48FB1) - override val OnPrimaryContainer = Color(0xFF000000) - override val OnSecondaryContainer = Color(0xFF000000) - override val OnTertiaryContainer = Color(0xFF000000) + override val PrimaryContainer = Color(0xFFF8BBD0) + override val SecondaryContainer = Color(0xFFF48FB1) + override val TertiaryContainer = Color(0xFFE91E63) + override val OnPrimaryContainer = Color(0xFF2E0A14) + override val OnSecondaryContainer = Color(0xFF2B0A13) + override val OnTertiaryContainer = Color(0xFF1C0311) } // Gray Theme @@ -126,25 +126,9 @@ sealed class ThemeColors { override val PrimaryContainer = Color(0xFFEEEEEE) override val SecondaryContainer = Color(0xFFE0E0E0) override val TertiaryContainer = Color(0xFFBDBDBD) - override val OnPrimaryContainer = Color(0xFF000000) - override val OnSecondaryContainer = Color(0xFF000000) - override val OnTertiaryContainer = Color(0xFF000000) - } - - // Ivory Theme - object Ivory : ThemeColors() { - override val Primary = Color(0xFFFAF0E6) - override val Secondary = Color(0xFFFFF0E6) - override val Tertiary = Color(0xFFD7CCC8) - override val OnPrimary = Color(0xFFFFFFFF) - override val OnSecondary = Color(0xFFFFFFFF) - override val OnTertiary = Color(0xFFFFFFFF) - override val PrimaryContainer = Color(0xFFFFFAE3) - override val SecondaryContainer = Color(0xFFFFF0E6) - override val TertiaryContainer = Color(0xFFFFF0E6) - override val OnPrimaryContainer = Color(0xFF000000) - override val OnSecondaryContainer = Color(0xFF000000) - override val OnTertiaryContainer = Color(0xFF000000) + override val OnPrimaryContainer = Color(0xFF1A1A1A) + override val OnSecondaryContainer = Color(0xFF171717) + override val OnTertiaryContainer = Color(0xFF141414) } companion object { @@ -155,7 +139,6 @@ sealed class ThemeColors { "orange" -> Orange "pink" -> Pink "gray" -> Gray - "ivory" -> Ivory else -> Default } } diff --git a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/theme/Theme.kt b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/theme/Theme.kt index 7ae50a94..48eda052 100644 --- a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/theme/Theme.kt +++ b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/theme/Theme.kt @@ -39,22 +39,24 @@ object ThemeConfig { @Composable private fun getDarkColorScheme() = darkColorScheme( - primary = ThemeConfig.currentTheme.Primary, - onPrimary = ThemeConfig.currentTheme.OnPrimary, - primaryContainer = ThemeConfig.currentTheme.PrimaryContainer, + primary = ThemeConfig.currentTheme.Primary.copy(alpha = 0.8f), + onPrimary = Color.White, + primaryContainer = ThemeConfig.currentTheme.PrimaryContainer.copy(alpha = 0.15f), onPrimaryContainer = Color.White, - secondary = ThemeConfig.currentTheme.Secondary, - onSecondary = ThemeConfig.currentTheme.OnSecondary, - secondaryContainer = ThemeConfig.currentTheme.SecondaryContainer, + secondary = ThemeConfig.currentTheme.Secondary.copy(alpha = 0.8f), + onSecondary = Color.White, + secondaryContainer = ThemeConfig.currentTheme.SecondaryContainer.copy(alpha = 0.15f), onSecondaryContainer = Color.White, - tertiary = ThemeConfig.currentTheme.Tertiary, - onTertiary = ThemeConfig.currentTheme.OnTertiary, - tertiaryContainer = ThemeConfig.currentTheme.TertiaryContainer, + tertiary = ThemeConfig.currentTheme.Tertiary.copy(alpha = 0.8f), + onTertiary = Color.White, + tertiaryContainer = ThemeConfig.currentTheme.TertiaryContainer.copy(alpha = 0.15f), onTertiaryContainer = Color.White, - background = Color.Transparent, - surface = Color.Transparent, onBackground = Color.White, - onSurface = Color.White + onSurface = Color.White, + surfaceVariant = Color(0xFF2F2F2F), + onSurfaceVariant = Color.White.copy(alpha = 0.78f), + outline = Color.White.copy(alpha = 0.12f), + outlineVariant = Color.White.copy(alpha = 0.12f) ) @Composable @@ -72,7 +74,13 @@ private fun getLightColorScheme() = lightColorScheme( tertiaryContainer = ThemeConfig.currentTheme.TertiaryContainer, onTertiaryContainer = ThemeConfig.currentTheme.OnTertiaryContainer, background = Color.Transparent, - surface = Color.Transparent + surface = Color.Transparent, + onBackground = Color.Black, + onSurface = Color.Black, + surfaceVariant = Color(0xFFF5F5F5), + onSurfaceVariant = Color.Black.copy(alpha = 0.78f), + outline = Color.Black.copy(alpha = 0.12f), + outlineVariant = Color.Black.copy(alpha = 0.12f) ) // 复制图片到应用内部存储 @@ -119,7 +127,13 @@ fun KernelSUTheme( background = Color.Transparent, surface = Color.Transparent, onBackground = Color.White, - onSurface = Color.White + onSurface = Color.White, + onPrimary = Color.White, + onSecondary = Color.White, + onTertiary = Color.White, + onPrimaryContainer = Color.White, + onSecondaryContainer = Color.White, + onTertiaryContainer = Color.White ) else dynamicLightColorScheme(context).copy( background = Color.Transparent, surface = Color.Transparent @@ -129,6 +143,17 @@ fun KernelSUTheme( else -> getLightColorScheme() } + val isDarkModeWithCustomBackground = darkTheme && ThemeConfig.customBackgroundUri != null + + if (darkTheme && !dynamicColor) { + CardConfig.setDarkModeDefaults() + } else { + CardConfig.cardAlpha = 1f + CardConfig.cardElevation = CardConfig.defaultElevation + } + + CardConfig.updateShadowEnabled(!isDarkModeWithCustomBackground) + MaterialTheme( colorScheme = colorScheme, typography = Typography @@ -202,7 +227,6 @@ fun KernelSUTheme( } } - fun Context.saveCustomBackground(uri: Uri?) { val newUri = uri?.let { copyImageToInternalStorage(it) } getSharedPreferences("theme_prefs", Context.MODE_PRIVATE) @@ -253,7 +277,6 @@ fun Context.saveThemeColors(themeName: String) { "orange" -> ThemeColors.Orange "pink" -> ThemeColors.Pink "gray" -> ThemeColors.Gray - "ivory" -> ThemeColors.Ivory else -> ThemeColors.Default } } @@ -269,7 +292,6 @@ fun Context.loadThemeColors() { "orange" -> ThemeColors.Orange "pink" -> ThemeColors.Pink "gray" -> ThemeColors.Gray - "ivory" -> ThemeColors.Ivory else -> ThemeColors.Default } }