diff --git a/app/src/main/java/com/a2i/forwarder/ui/screens/SettingsScreen.kt b/app/src/main/java/com/a2i/forwarder/ui/screens/SettingsScreen.kt index 99d0041..c05b676 100644 --- a/app/src/main/java/com/a2i/forwarder/ui/screens/SettingsScreen.kt +++ b/app/src/main/java/com/a2i/forwarder/ui/screens/SettingsScreen.kt @@ -381,27 +381,41 @@ private fun ServerRow( color = if (server.enabled) MaterialTheme.colorScheme.primaryContainer.copy(alpha = 0.40f) else MaterialTheme.colorScheme.surfaceVariant.copy(alpha = 0.36f), border = BorderStroke(1.dp, if (server.enabled) MaterialTheme.colorScheme.primary.copy(alpha = 0.30f) else MaterialTheme.colorScheme.outlineVariant), ) { - Column(Modifier.padding(8.dp)) { - Row(Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) { + Column(Modifier.padding(start = 4.dp, end = 4.dp, top = 2.dp, bottom = 6.dp)) { + // 第一行:勾选 + 名称 + 编辑/删除 + Row(verticalAlignment = Alignment.CenterVertically) { Checkbox(checked = server.enabled, onCheckedChange = onToggle) - Column(Modifier.weight(1f)) { - Row(verticalAlignment = Alignment.CenterVertically) { - Text( - server.name.ifBlank { "未命名" }, - style = MaterialTheme.typography.bodyLarge, - fontWeight = FontWeight.Medium, - maxLines = 1, - overflow = TextOverflow.Ellipsis, - modifier = Modifier.weight(1f), - ) - if (!server.enabled) StatusBadge("停用", MaterialTheme.colorScheme.onSurfaceVariant) - } + Row(Modifier.weight(1f), verticalAlignment = Alignment.CenterVertically) { Text( - "${server.server} · key: ${if (server.deviceKey.isBlank()) "未填" else "已填"}", - style = MaterialTheme.typography.bodySmall, - color = MaterialTheme.colorScheme.onSurfaceVariant, + server.name.ifBlank { "未命名" }, + style = MaterialTheme.typography.bodyLarge, + fontWeight = FontWeight.Medium, maxLines = 1, overflow = TextOverflow.Ellipsis, + modifier = Modifier.weight(1f, fill = false), + ) + if (!server.enabled) { + Spacer(Modifier.width(8.dp)) + StatusBadge("停用", MaterialTheme.colorScheme.onSurfaceVariant) + } + } + IconButton(onClick = onEdit) { Icon(Icons.Filled.Edit, "编辑") } + IconButton(onClick = onDelete) { Icon(Icons.Filled.Delete, "删除") } + } + // 第二行:地址 + key + 测试/上移/下移 + Row(verticalAlignment = Alignment.CenterVertically, modifier = Modifier.padding(top = 2.dp)) { + Column(Modifier.weight(1f).padding(start = 36.dp)) { + Text( + server.server, + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.onSurfaceVariant, + maxLines = 2, + overflow = TextOverflow.Ellipsis, + ) + Text( + "device key: " + if (server.deviceKey.isBlank()) "未填" else "已填(${server.deviceKey.length} 位)", + style = MaterialTheme.typography.labelSmall, + color = MaterialTheme.colorScheme.onSurfaceVariant, ) } IconButton( @@ -413,8 +427,6 @@ private fun ServerRow( } IconButton(onClick = onMoveUp, enabled = !isFirst) { Icon(Icons.Filled.KeyboardArrowUp, "上移") } IconButton(onClick = onMoveDown, enabled = !isLast) { Icon(Icons.Filled.KeyboardArrowDown, "下移") } - IconButton(onClick = onEdit) { Icon(Icons.Filled.Edit, "编辑") } - IconButton(onClick = onDelete) { Icon(Icons.Filled.Delete, "删除") } } testMsg?.let { Text(