diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/components/Dialog.kt b/app/src/main/kotlin/cn/super12138/todo/ui/components/Dialogs.kt similarity index 70% rename from app/src/main/kotlin/cn/super12138/todo/ui/components/Dialog.kt rename to app/src/main/kotlin/cn/super12138/todo/ui/components/Dialogs.kt index ca972f8..f9f192a 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/components/Dialog.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/components/Dialogs.kt @@ -1,5 +1,7 @@ package cn.super12138.todo.ui.components +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ErrorOutline import androidx.compose.material3.AlertDialog import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.Icon @@ -8,6 +10,30 @@ import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.res.stringResource +import cn.super12138.todo.R + +@Composable +fun WarningDialog( + visible: Boolean, + icon: ImageVector = Icons.Outlined.ErrorOutline, + description: String, + onConfirm: () -> Unit, + onDismiss: () -> Unit, + modifier: Modifier = Modifier +) { + BasicDialog( + visible = visible, + icon = icon, + title = stringResource(R.string.title_warning), + text = { Text(description) }, + confirmButton = stringResource(R.string.action_confirm), + dismissButton = stringResource(R.string.action_cancel), + onConfirm = onConfirm, + onDismiss = onDismiss, + modifier = modifier + ) +} @Composable fun BasicDialog( @@ -29,9 +55,7 @@ fun BasicDialog( contentDescription = null // 会跟下面的文本重复,所以设置为 null ) }, - title = { - Text(title) - }, + title = { Text(title) }, text = text, confirmButton = { FilledTonalButton(onClick = onConfirm) { 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 9a4539d..297a2bb 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 @@ -19,8 +19,8 @@ import androidx.compose.foundation.layout.wrapContentWidth import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.outlined.Undo import androidx.compose.material.icons.outlined.Delete -import androidx.compose.material.icons.outlined.ErrorOutline import androidx.compose.material.icons.outlined.Save import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon @@ -53,9 +53,9 @@ import cn.super12138.todo.logic.model.Priority import cn.super12138.todo.logic.model.Subjects import cn.super12138.todo.ui.TodoDefaults import cn.super12138.todo.ui.components.AnimatedExtendedFloatingActionButton -import cn.super12138.todo.ui.components.BasicDialog import cn.super12138.todo.ui.components.FilterChipGroup import cn.super12138.todo.ui.components.LargeTopAppBarScaffold +import cn.super12138.todo.ui.components.WarningDialog @OptIn(ExperimentalMaterial3Api::class, ExperimentalSharedTransitionApi::class) @Composable @@ -245,13 +245,10 @@ fun TodoEditorPage( } } - BasicDialog( + WarningDialog( visible = showConfirmDialog, - icon = Icons.Outlined.ErrorOutline, - title = stringResource(R.string.title_warning), - text = { Text(stringResource(R.string.tip_discard_changes)) }, - confirmButton = stringResource(R.string.action_confirm), - dismissButton = stringResource(R.string.action_cancel), + icon = Icons.AutoMirrored.Outlined.Undo, + description = stringResource(R.string.tip_discard_changes), onConfirm = { showConfirmDialog = false onNavigateUp() diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/MainPage.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/MainPage.kt index f22c651..7aa4e93 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/MainPage.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/MainPage.kt @@ -38,6 +38,7 @@ import cn.super12138.todo.R import cn.super12138.todo.constants.Constants import cn.super12138.todo.logic.database.TodoEntity import cn.super12138.todo.ui.components.BasicDialog +import cn.super12138.todo.ui.components.WarningDialog import cn.super12138.todo.ui.pages.main.components.TodoFAB import cn.super12138.todo.ui.pages.main.components.TodoTopAppBar import cn.super12138.todo.ui.viewmodels.MainViewModel @@ -209,15 +210,10 @@ fun MainPage( } } - BasicDialog( + WarningDialog( visible = showDeleteConfirmDialog, icon = Icons.Outlined.Delete, - title = stringResource(R.string.title_warning), - text = { - Text(stringResource(R.string.tip_delete_task, selectedTodoIds.value.size)) - }, - confirmButton = stringResource(R.string.action_confirm), - dismissButton = stringResource(R.string.action_cancel), + description = stringResource(R.string.tip_delete_task, selectedTodoIds.value.size), onConfirm = { showDeleteConfirmDialog = false viewModel.deleteSelectedTodo()