diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/editor/TodoEditorPage.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/editor/TodoEditorPage.kt index 6083b3c..b784ac9 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/editor/TodoEditorPage.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/editor/TodoEditorPage.kt @@ -29,6 +29,7 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.PlainTooltip import androidx.compose.material3.Slider import androidx.compose.material3.SliderDefaults +import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.material3.TextField import androidx.compose.material3.TopAppBarDefaults @@ -40,6 +41,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalView @@ -81,12 +83,14 @@ fun TodoEditorPage( var isError by rememberSaveable { mutableStateOf(false) } var selectedSubjectIndex by rememberSaveable { mutableIntStateOf(toDo?.subject ?: 0) } var priorityState by rememberSaveable { mutableFloatStateOf(toDo?.priority ?: 0f) } + var completedSwitchState by rememberSaveable { mutableStateOf(toDo?.isCompleted ?: false) } fun checkModifiedBeforeBack() { var isModified = false if ((toDo?.content ?: "") != toDoContent) isModified = true if ((toDo?.subject ?: 0) != selectedSubjectIndex) isModified = true if ((toDo?.priority ?: 0f) != priorityState) isModified = true + if ((toDo?.isCompleted == true) != completedSwitchState) isModified = true if (isModified) { showExitConfirmDialog = true } else { @@ -128,7 +132,7 @@ fun TodoEditorPage( TodoEntity( content = toDoContent, subject = selectedSubjectIndex, - isCompleted = toDo?.isCompleted ?: false, + isCompleted = completedSwitchState, priority = priorityState, id = toDo?.id ?: 0 ) @@ -239,7 +243,36 @@ fun TodoEditorPage( } ) - Spacer(Modifier.size(40.dp)) + Spacer(Modifier.size(10.dp)) + + if (toDo != null) { + Text( + text = stringResource(R.string.label_priority), + style = MaterialTheme.typography.titleMedium + ) + + Spacer(Modifier.size(5.dp)) + + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier.fillMaxWidth() + ) { + Text( + text = stringResource(R.string.label_more), + style = MaterialTheme.typography.labelLarge, + modifier = Modifier.padding(end = 5.dp) + ) + Switch( + checked = completedSwitchState, + onCheckedChange = { + completedSwitchState = it + VibrationUtils.performHapticFeedback(view) + } + ) + } + } + + Spacer(Modifier.size(20.dp)) } } diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 22a5788..cfcaf6d 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -106,4 +106,5 @@ 恢复失败 安全模式 阻止截屏并保护后台预览图 + 更多 \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f1da624..038d86d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -107,4 +107,5 @@ Restore failed Secure Mode Prevent screenshots and protect the background preview image + More \ No newline at end of file