perf: font, icon

This commit is contained in:
lisonge 2024-06-10 20:05:30 +08:00
parent 59ad7b7355
commit e13b3b76a1
7 changed files with 143 additions and 100 deletions

View File

@ -126,7 +126,7 @@ fun AdvancedPage() {
Text(
text = "Shizuku",
modifier = Modifier.itemPadding(),
style = MaterialTheme.typography.titleMedium,
style = MaterialTheme.typography.titleSmall,
color = MaterialTheme.colorScheme.primary,
)
val shizukuOk by shizukuOkState.stateFlow.collectAsState()
@ -152,7 +152,7 @@ fun AdvancedPage() {
Text(
text = "HTTP服务",
modifier = Modifier.itemPadding(),
style = MaterialTheme.typography.titleMedium,
style = MaterialTheme.typography.titleSmall,
color = MaterialTheme.colorScheme.primary,
)
Row(
@ -247,7 +247,7 @@ fun AdvancedPage() {
Text(
text = "快照",
modifier = Modifier.itemPadding(),
style = MaterialTheme.typography.titleMedium,
style = MaterialTheme.typography.titleSmall,
color = MaterialTheme.colorScheme.primary,
)
@ -337,7 +337,7 @@ fun AdvancedPage() {
Text(
text = "其它",
modifier = Modifier.itemPadding(),
style = MaterialTheme.typography.titleMedium,
style = MaterialTheme.typography.titleSmall,
color = MaterialTheme.colorScheme.primary,
)
@ -359,9 +359,12 @@ fun AdvancedPage() {
var value by remember {
mutableStateOf(store.httpServerPort.toString())
}
AlertDialog(title = { Text(text = "请输入新端口") }, text = {
AlertDialog(title = { Text(text = "服务端口") }, text = {
OutlinedTextField(
value = value,
placeholder = {
Text(text = "请输入 5000-65535 的整数")
},
onValueChange = {
value = it.filter { c -> c.isDigit() }.take(5)
},
@ -382,7 +385,7 @@ fun AdvancedPage() {
onClick = {
val newPort = value.toIntOrNull()
if (newPort == null || !(5000 <= newPort && newPort <= 65535)) {
toast("请输入在 5000~65535 的任意数字")
toast("请输入 5000-65535 的整数")
return@TextButton
}
storeFlow.value = store.copy(

View File

@ -58,6 +58,7 @@ import li.songe.gkd.db.DbSet
import li.songe.gkd.ui.destinations.AppItemPageDestination
import li.songe.gkd.ui.destinations.GlobalRulePageDestination
import li.songe.gkd.ui.style.itemPadding
import li.songe.gkd.ui.style.menuPadding
import li.songe.gkd.util.LOCAL_SUBS_ID
import li.songe.gkd.util.LocalNavController
import li.songe.gkd.util.ProfileTransitions
@ -124,20 +125,24 @@ fun AppConfigPage(appId: String) {
expanded = expanded,
onDismissRequest = { expanded = false }
) {
Text(
text = "排序",
modifier = Modifier.menuPadding(),
style = MaterialTheme.typography.labelMedium,
color = MaterialTheme.colorScheme.primary,
)
RuleSortOption.allSubObject.forEach { s ->
DropdownMenuItem(
text = {
Row(
verticalAlignment = Alignment.CenterVertically
) {
RadioButton(
selected = ruleSortType == s,
onClick = {
vm.ruleSortTypeFlow.update { s }
}
)
Text(s.label)
}
Text(s.label)
},
trailingIcon = {
RadioButton(
selected = ruleSortType == s,
onClick = {
vm.ruleSortTypeFlow.update { s }
}
)
},
onClick = {
vm.ruleSortTypeFlow.update { s }
@ -171,9 +176,18 @@ fun AppConfigPage(appId: String) {
ExcludeData.parse(g.config?.exclude)
}
val checked = getChecked(excludeData, g.group, appId, appInfo)
AppGroupCard(g.group, checked, onClick = {
navController.navigate(GlobalRulePageDestination(g.subsItem.id, g.group.key))
}) { newChecked ->
AppGroupCard(
group = g.group,
checked = checked,
onClick = {
navController.navigate(
GlobalRulePageDestination(
g.subsItem.id,
g.group.key
)
)
}
) { newChecked ->
vm.viewModelScope.launchTry {
DbSet.subsConfigDao.insert(
(g.config ?: SubsConfig(

View File

@ -28,7 +28,6 @@ import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Checkbox
import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
@ -71,6 +70,7 @@ import li.songe.gkd.db.DbSet
import li.songe.gkd.service.launcherAppId
import li.songe.gkd.ui.component.AppBarTextField
import li.songe.gkd.ui.style.appItemPadding
import li.songe.gkd.ui.style.menuPadding
import li.songe.gkd.util.LocalNavController
import li.songe.gkd.util.ProfileTransitions
import li.songe.gkd.util.SortTypeOption
@ -182,38 +182,45 @@ fun GlobalRuleExcludePage(subsItemId: Long, groupKey: Int) {
expanded = expanded,
onDismissRequest = { expanded = false }
) {
Text(
text = "排序",
modifier = Modifier.menuPadding(),
style = MaterialTheme.typography.labelMedium,
color = MaterialTheme.colorScheme.primary,
)
SortTypeOption.allSubObject.forEach { sortOption ->
DropdownMenuItem(
text = {
Row(
verticalAlignment = Alignment.CenterVertically
) {
RadioButton(selected = sortType == sortOption,
onClick = {
vm.sortTypeFlow.value = sortOption
}
)
Text(sortOption.label)
}
Text(sortOption.label)
},
trailingIcon = {
RadioButton(selected = sortType == sortOption,
onClick = {
vm.sortTypeFlow.value = sortOption
}
)
},
onClick = {
vm.sortTypeFlow.value = sortOption
},
)
}
HorizontalDivider()
Text(
text = "选项",
modifier = Modifier.menuPadding(),
style = MaterialTheme.typography.labelMedium,
color = MaterialTheme.colorScheme.primary,
)
DropdownMenuItem(
text = {
Row(
verticalAlignment = Alignment.CenterVertically
) {
Checkbox(
checked = showSystemApp,
onCheckedChange = {
vm.showSystemAppFlow.value = !vm.showSystemAppFlow.value
})
Text("显示系统应用")
}
Text("显示系统应用")
},
trailingIcon = {
Checkbox(
checked = showSystemApp,
onCheckedChange = {
vm.showSystemAppFlow.value = !vm.showSystemAppFlow.value
})
},
onClick = {
vm.showSystemAppFlow.value = !vm.showSystemAppFlow.value

View File

@ -2,7 +2,6 @@ package li.songe.gkd.ui
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
@ -22,7 +21,6 @@ import androidx.compose.material3.Checkbox
import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.FloatingActionButton
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
@ -62,6 +60,7 @@ import li.songe.gkd.ui.component.AppBarTextField
import li.songe.gkd.ui.component.SubsAppCard
import li.songe.gkd.ui.component.getDialogResult
import li.songe.gkd.ui.destinations.AppItemPageDestination
import li.songe.gkd.ui.style.menuPadding
import li.songe.gkd.util.LocalNavController
import li.songe.gkd.util.ProfileTransitions
import li.songe.gkd.util.SortTypeOption
@ -186,36 +185,43 @@ fun SubsPage(
modifier = Modifier.wrapContentSize(Alignment.TopStart)
) {
DropdownMenu(expanded = expanded, onDismissRequest = { expanded = false }) {
Text(
text = "排序",
modifier = Modifier.menuPadding(),
style = MaterialTheme.typography.labelMedium,
color = MaterialTheme.colorScheme.primary,
)
SortTypeOption.allSubObject.forEach { sortOption ->
DropdownMenuItem(
text = {
Row(
verticalAlignment = Alignment.CenterVertically
) {
RadioButton(
selected = sortType == sortOption,
onClick = {
vm.sortTypeFlow.value = sortOption
})
Text(sortOption.label)
}
Text(sortOption.label)
},
trailingIcon = {
RadioButton(
selected = sortType == sortOption,
onClick = {
vm.sortTypeFlow.value = sortOption
})
},
onClick = {
vm.sortTypeFlow.value = sortOption
},
)
}
HorizontalDivider()
Text(
text = "选项",
modifier = Modifier.menuPadding(),
style = MaterialTheme.typography.labelMedium,
color = MaterialTheme.colorScheme.primary,
)
DropdownMenuItem(
text = {
Row(
verticalAlignment = Alignment.CenterVertically
) {
Checkbox(checked = showUninstallApp, onCheckedChange = {
vm.showUninstallAppFlow.value = it
})
Text("显示未安装应用")
}
Text("显示未安装应用")
},
trailingIcon = {
Checkbox(checked = showUninstallApp, onCheckedChange = {
vm.showUninstallAppFlow.value = it
})
},
onClick = {
vm.showUninstallAppFlow.value = !showUninstallApp

View File

@ -31,7 +31,6 @@ import androidx.compose.material3.Checkbox
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
@ -70,6 +69,7 @@ import li.songe.gkd.permission.checkOrRequestPermission
import li.songe.gkd.ui.component.AppBarTextField
import li.songe.gkd.ui.destinations.AppConfigPageDestination
import li.songe.gkd.ui.style.appItemPadding
import li.songe.gkd.ui.style.menuPadding
import li.songe.gkd.util.LocalNavController
import li.songe.gkd.util.SortTypeOption
import li.songe.gkd.util.appRefreshingFlow
@ -213,38 +213,46 @@ fun useAppListPage(): ScaffoldExt {
expanded = expanded,
onDismissRequest = { expanded = false }
) {
Text(
text = "排序",
modifier = Modifier.menuPadding(),
style = MaterialTheme.typography.labelMedium,
color = MaterialTheme.colorScheme.primary,
)
SortTypeOption.allSubObject.forEach { sortOption ->
DropdownMenuItem(
text = {
Row(
verticalAlignment = Alignment.CenterVertically
) {
RadioButton(selected = sortType == sortOption,
onClick = {
storeFlow.update { s -> s.copy(sortType = sortOption.value) }
}
)
Text(sortOption.label)
}
Text(sortOption.label)
},
trailingIcon = {
RadioButton(selected = sortType == sortOption,
onClick = {
storeFlow.update { s -> s.copy(sortType = sortOption.value) }
}
)
},
onClick = {
storeFlow.update { s -> s.copy(sortType = sortOption.value) }
},
)
}
HorizontalDivider()
Text(
text = "选项",
modifier = Modifier.menuPadding(),
style = MaterialTheme.typography.labelMedium,
color = MaterialTheme.colorScheme.primary,
)
DropdownMenuItem(
text = {
Row(
verticalAlignment = Alignment.CenterVertically
) {
Checkbox(
checked = showSystemApp,
onCheckedChange = {
storeFlow.update { s -> s.copy(showSystemApp = !showSystemApp) }
})
Text("显示系统应用")
}
Text("显示系统应用")
},
trailingIcon = {
Checkbox(
checked = showSystemApp,
onCheckedChange = {
storeFlow.update { s -> s.copy(showSystemApp = !showSystemApp) }
}
)
},
onClick = {
storeFlow.update { s -> s.copy(showSystemApp = !showSystemApp) }
@ -252,16 +260,14 @@ fun useAppListPage(): ScaffoldExt {
)
DropdownMenuItem(
text = {
Row(
verticalAlignment = Alignment.CenterVertically
) {
Checkbox(
checked = showHiddenApp,
onCheckedChange = {
storeFlow.update { s -> s.copy(showHiddenApp = !s.showHiddenApp) }
})
Text("显示隐藏应用")
}
Text("显示隐藏应用")
},
trailingIcon = {
Checkbox(
checked = showHiddenApp,
onCheckedChange = {
storeFlow.update { s -> s.copy(showHiddenApp = !s.showHiddenApp) }
})
},
onClick = {
storeFlow.update { s -> s.copy(showHiddenApp = !showHiddenApp) }

View File

@ -95,9 +95,12 @@ fun useSettingsPage(): ScaffoldExt {
mutableStateOf(store.clickToast)
}
val maxCharLen = 32
AlertDialog(title = { Text(text = "请输入提示文字") }, text = {
AlertDialog(title = { Text(text = "触发提示") }, text = {
OutlinedTextField(
value = value,
placeholder = {
Text(text = "请输入提示内容")
},
onValueChange = {
value = it.take(maxCharLen)
},
@ -257,7 +260,7 @@ fun useSettingsPage(): ScaffoldExt {
Text(
text = "常规",
modifier = Modifier.itemPadding(),
style = MaterialTheme.typography.titleMedium,
style = MaterialTheme.typography.titleSmall,
color = MaterialTheme.colorScheme.primary,
)
@ -309,7 +312,7 @@ fun useSettingsPage(): ScaffoldExt {
Text(
text = "更新",
modifier = Modifier.itemPadding(),
style = MaterialTheme.typography.titleMedium,
style = MaterialTheme.typography.titleSmall,
color = MaterialTheme.colorScheme.primary,
)
@ -356,7 +359,7 @@ fun useSettingsPage(): ScaffoldExt {
Text(
text = "日志",
modifier = Modifier.itemPadding(),
style = MaterialTheme.typography.titleMedium,
style = MaterialTheme.typography.titleSmall,
color = MaterialTheme.colorScheme.primary,
)
@ -393,7 +396,7 @@ fun useSettingsPage(): ScaffoldExt {
Text(
text = "其它",
modifier = Modifier.itemPadding(),
style = MaterialTheme.typography.titleMedium,
style = MaterialTheme.typography.titleSmall,
color = MaterialTheme.colorScheme.primary,
)

View File

@ -1,9 +1,13 @@
package li.songe.gkd.ui.style
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.MenuDefaults
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
fun Modifier.itemPadding() = this then padding(16.dp, 12.dp)
fun Modifier.appItemPadding() = this then padding(10.dp, 8.dp)
fun Modifier.menuPadding() =
this then padding(MenuDefaults.DropdownMenuItemContentPadding).padding(vertical = 8.dp)