manager: Refactoring the settings interface

- Merge Web Debugging and Web X Eruda switches
This commit is contained in:
ShirkNeko
2025-05-31 12:49:58 +08:00
parent 0835f330e2
commit 3484e187da
4 changed files with 53 additions and 102 deletions

View File

@@ -1,7 +1,6 @@
package com.sukisu.ultra.ui.component
import androidx.compose.foundation.LocalIndication
import androidx.compose.foundation.background
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.selection.toggleable
import androidx.compose.material3.Icon
@@ -13,7 +12,6 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.semantics.Role
import com.dergoogler.mmrl.ui.component.LabelItem

View File

@@ -13,7 +13,6 @@ import androidx.compose.animation.expandVertically
import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut
import androidx.compose.animation.shrinkVertically
import androidx.compose.foundation.border
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column

View File

@@ -28,7 +28,6 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
@@ -519,12 +518,16 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
enter = fadeIn() + expandVertically(),
exit = fadeOut() + shrinkVertically()
) {
Surface(
shape = RoundedCornerShape(16.dp),
tonalElevation = 1.dp,
modifier = Modifier.padding(bottom = 16.dp)
Card(
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 16.dp),
colors = CardDefaults.cardColors(
containerColor = MaterialTheme.colorScheme.surfaceContainerHigh.copy(alpha = cardAlpha)
),
elevation = CardDefaults.cardElevation(defaultElevation = 0.dp)
) {
Column {
Column(modifier = Modifier.padding(vertical = 8.dp)) {
// 语言设置
ListItem(
headlineContent = { Text(stringResource(R.string.language_setting)) },
@@ -552,11 +555,6 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
modifier = Modifier.clickable { showLanguageDialog = true }
)
HorizontalDivider(
modifier = Modifier.padding(horizontal = 16.dp),
color = MaterialTheme.colorScheme.outlineVariant
)
// 主题模式
ListItem(
headlineContent = { Text(stringResource(R.string.theme_mode)) },
@@ -581,11 +579,6 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
modifier = Modifier.clickable { showThemeModeDialog = true }
)
HorizontalDivider(
modifier = Modifier.padding(horizontal = 16.dp),
color = MaterialTheme.colorScheme.outlineVariant
)
// 动态颜色开关
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
SwitchItem(
@@ -597,11 +590,6 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
useDynamicColor = enabled
context.saveDynamicColorState(enabled)
}
HorizontalDivider(
modifier = Modifier.padding(horizontal = 16.dp),
color = MaterialTheme.colorScheme.outlineVariant
)
}
// 只在未启用动态颜色时显示主题色选择
@@ -644,11 +632,6 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
),
modifier = Modifier.clickable { showThemeColorDialog = true }
)
HorizontalDivider(
modifier = Modifier.padding(horizontal = 16.dp),
color = MaterialTheme.colorScheme.outlineVariant
)
}
}
@@ -740,11 +723,6 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
)
}
HorizontalDivider(
modifier = Modifier.padding(horizontal = 16.dp),
color = MaterialTheme.colorScheme.outlineVariant
)
// 自定义背景开关
ListItem(
headlineContent = { Text(stringResource(id = R.string.settings_custom_background)) },
@@ -927,12 +905,16 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
enter = fadeIn() + expandVertically(),
exit = fadeOut() + shrinkVertically()
) {
Surface(
shape = RoundedCornerShape(16.dp),
tonalElevation = 1.dp,
modifier = Modifier.padding(bottom = 16.dp)
Card(
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 16.dp),
colors = CardDefaults.cardColors(
containerColor = MaterialTheme.colorScheme.surfaceContainerHigh.copy(alpha = cardAlpha)
),
elevation = CardDefaults.cardElevation(defaultElevation = 0.dp)
) {
Column {
Column(modifier = Modifier.padding(vertical = 8.dp)) {
// 添加简洁模式开关
SwitchItem(
icon = Icons.Filled.Brush,
@@ -943,10 +925,7 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
onSimpleModeChange(it)
}
HorizontalDivider(
modifier = Modifier.padding(horizontal = 16.dp),
color = MaterialTheme.colorScheme.outlineVariant
)
// 隐藏内核部分版本号
SwitchItem(
@@ -958,11 +937,6 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
onHideVersionChange(it)
}
HorizontalDivider(
modifier = Modifier.padding(horizontal = 16.dp),
color = MaterialTheme.colorScheme.outlineVariant
)
// 模块数量等信息
SwitchItem(
icon = Icons.Filled.VisibilityOff,
@@ -972,12 +946,7 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
) {
onHideOtherInfoChange(it)
}
HorizontalDivider(
modifier = Modifier.padding(horizontal = 16.dp),
color = MaterialTheme.colorScheme.outlineVariant
)
// SuSFS 状态信息
SwitchItem(
icon = Icons.Filled.VisibilityOff,
@@ -989,11 +958,6 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
}
if (Natives.version >= Natives.MINIMAL_SUPPORTED_KPM) {
HorizontalDivider(
modifier = Modifier.padding(horizontal = 16.dp),
color = MaterialTheme.colorScheme.outlineVariant
)
// 显示KPM开关
SwitchItem(
icon = Icons.Filled.Visibility,
@@ -1005,11 +969,6 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
}
}
HorizontalDivider(
modifier = Modifier.padding(horizontal = 16.dp),
color = MaterialTheme.colorScheme.outlineVariant
)
// 隐藏链接信息
SwitchItem(
icon = Icons.Filled.VisibilityOff,
@@ -1035,12 +994,16 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
enter = fadeIn() + expandVertically(),
exit = fadeOut() + shrinkVertically()
) {
Surface(
shape = RoundedCornerShape(16.dp),
tonalElevation = 1.dp,
modifier = Modifier.padding(bottom = 16.dp)
Card(
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 16.dp),
colors = CardDefaults.cardColors(
containerColor = MaterialTheme.colorScheme.surfaceContainerHigh.copy(alpha = cardAlpha)
),
elevation = CardDefaults.cardElevation(defaultElevation = 0.dp)
) {
Column {
Column(modifier = Modifier.padding(vertical = 8.dp)) {
// SELinux 开关
KsuIsValid {
SwitchItem(
@@ -1072,11 +1035,6 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
}
}
}
HorizontalDivider(
modifier = Modifier.padding(horizontal = 16.dp),
color = MaterialTheme.colorScheme.outlineVariant
)
}
// SuSFS 配置(仅在支持时显示)

View File

@@ -229,25 +229,6 @@ fun SettingScreen(navigator: DestinationsNavigator) {
}
)
// Web调试开关
var enableWebDebugging by rememberSaveable {
mutableStateOf(
prefs.getBoolean("enable_web_debugging", false)
)
}
KsuIsValid {
SwitchSettingItem(
icon = Icons.Filled.DeveloperMode,
title = stringResource(id = R.string.enable_web_debugging),
summary = stringResource(id = R.string.enable_web_debugging_summary),
checked = enableWebDebugging,
onCheckedChange = {
prefs.edit { putBoolean("enable_web_debugging", it) }
enableWebDebugging = it
}
)
}
// WebUI引擎选择
KsuIsValid {
val engineOptions = listOf(
@@ -309,29 +290,44 @@ fun SettingScreen(navigator: DestinationsNavigator) {
}
}
// Web X Eruda 开关
// Web调试和Web X Eruda 开关
var enableWebDebugging by rememberSaveable {
mutableStateOf(
prefs.getBoolean("enable_web_debugging", false)
)
}
var useWebUIXEruda by rememberSaveable {
mutableStateOf(
prefs.getBoolean("use_webuix_eruda", false)
)
}
KsuIsValid {
SwitchSettingItem(
icon = Icons.Filled.DeveloperMode,
title = stringResource(id = R.string.enable_web_debugging),
summary = stringResource(id = R.string.enable_web_debugging_summary),
checked = enableWebDebugging,
onCheckedChange = {
prefs.edit { putBoolean("enable_web_debugging", it) }
enableWebDebugging = it
}
)
AnimatedVisibility(
visible = enableWebDebugging && selectedEngine == "wx",
enter = fadeIn() + expandVertically(),
exit = fadeOut() + shrinkVertically()
) {
SwitchItem(
beta = true,
enabled = Platform.isAlive && enableWebDebugging,
SwitchSettingItem(
icon = Icons.Filled.FormatListNumbered,
title = stringResource(id = R.string.use_webuix_eruda),
summary = stringResource(id = R.string.use_webuix_eruda_summary),
checked = useWebUIXEruda
) {
prefs.edit { putBoolean("use_webuix_eruda", it) }
useWebUIXEruda = it
}
checked = useWebUIXEruda,
onCheckedChange = {
prefs.edit { putBoolean("use_webuix_eruda", it) }
useWebUIXEruda = it
}
)
}
}