feat(ui): complete ABox app experience redesign #10

Merged
KremeCN merged 40 commits from feat/ui-ux-redesign into main 2026-08-27 23:25:08 +08:00
Showing only changes of commit 1139606f9f - Show all commits
@@ -84,9 +84,6 @@ import com.flagship.abox.manager.domain.SocketPowerState
import com.flagship.abox.manager.domain.infrared.RemoteKeyBinding
import com.flagship.abox.manager.domain.infrared.VirtualRemote
private const val DEFAULT_SOCKET_DEVICE_NAME = "Zigbee插座控制器"
private const val DEFAULT_TH_DEVICE_NAME = "温湿度传感器"
private const val DEFAULT_IR_DEVICE_NAME = "红外控制器"
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@@ -774,7 +771,7 @@ private fun AddTriggerDialog(
onAdd: (type: Int, deviceName: String, time: String, temp: Double, hum: Double, op: ComparisonOperator) -> Unit,
) {
var selectedType by remember { mutableIntStateOf(0) }
var deviceName by remember { mutableStateOf(DEFAULT_TH_DEVICE_NAME) }
var deviceName by remember { mutableStateOf("") }
var timeInput by remember { mutableStateOf("07:30") }
var tempThreshold by remember { mutableDoubleStateOf(28.0) }
var humThreshold by remember { mutableDoubleStateOf(40.0) }
@@ -855,9 +852,9 @@ private fun AddConditionDialog(
onAddTimeRange: (String, String) -> Unit,
) {
var selectedType by remember { mutableIntStateOf(0) }
var tempDeviceName by remember { mutableStateOf(DEFAULT_TH_DEVICE_NAME) }
var humDeviceName by remember { mutableStateOf(DEFAULT_TH_DEVICE_NAME) }
var socketDeviceName by remember { mutableStateOf(DEFAULT_SOCKET_DEVICE_NAME) }
var tempDeviceName by remember { mutableStateOf("") }
var humDeviceName by remember { mutableStateOf("") }
var socketDeviceName by remember { mutableStateOf("") }
var operator by remember { mutableStateOf(ComparisonOperator.GREATER_THAN) }
var tempVal by remember { mutableDoubleStateOf(26.0) }
var humVal by remember { mutableDoubleStateOf(50.0) }
@@ -997,7 +994,7 @@ private fun AddActionDialog(
val defaultNotifyTitle = stringResource(R.string.scene_default_notify_title)
val defaultNotifyMsg = stringResource(R.string.scene_default_notify_msg)
var socketName by remember { mutableStateOf(DEFAULT_SOCKET_DEVICE_NAME) }
var socketName by remember { mutableStateOf("") }
var socketPower by remember { mutableStateOf(SocketPowerState.ON) }
var selectedRemoteIndex by remember { mutableIntStateOf(0) }
@@ -1056,7 +1053,6 @@ private fun AddActionDialog(
1 -> {
if (availableRemotes.isEmpty()) {
Text(stringResource(R.string.scene_no_virtual_remotes))
OutlinedTextField(value = selectedButtonId, onValueChange = { selectedButtonId = it }, label = { Text(stringResource(R.string.scene_remote_button_slot_label)) }, singleLine = true)
} else {
Text(stringResource(R.string.scene_select_virtual_remote))
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {
@@ -1107,7 +1103,7 @@ private fun AddActionDialog(
confirmButton = {
val canConfirm = when (actionType) {
0 -> socketName.isNotBlank()
1 -> selectedButtonId.isNotBlank()
1 -> availableRemotes.isNotEmpty() && selectedButtonId.isNotBlank()
3 -> notifyTitle.isNotBlank()
else -> true
}
@@ -1119,8 +1115,6 @@ private fun AddActionDialog(
val remote = availableRemotes.getOrNull(selectedRemoteIndex)
if (remote != null) {
onAddRemote(remote.id.value, remote.displayName, selectedButtonId, selectedButtonName)
} else {
onAddRemote("default-ir", DEFAULT_IR_DEVICE_NAME, selectedButtonId, selectedButtonName)
}
}
2 -> onAddDelay(delaySeconds)