- Manger: Fix the device model acquisition logic

- Manger: Update card default shadow and transparency settings, optimize theme color scheme

- Manger: Optimize dark color mode style

Signed-off-by:ShirkNeko<ShirkNeko@2773800761@qq.com>
This commit is contained in:
ShirkNeko
2025-03-23 00:06:03 +08:00
parent ff99ab8e62
commit 7265d5aacd
7 changed files with 110 additions and 83 deletions

View File

@@ -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)

View File

@@ -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<RootGraph>
@@ -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
)
}
)
}
},

View File

@@ -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 -> {

View File

@@ -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)

View File

@@ -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,8 +32,19 @@ 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),

View File

@@ -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
}
}

View File

@@ -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
}
}