From 1aebd9f517c17386efa71d0a99f6743135bd1c64 Mon Sep 17 00:00:00 2001 From: Super12138 <70494801+Super12138@users.noreply.github.com> Date: Thu, 6 Feb 2025 10:42:23 +0800 Subject: [PATCH] =?UTF-8?q?refactor(main,=20editor):=20=E7=AE=80=E5=8C=96?= =?UTF-8?q?=E5=AF=B9=E8=AF=9D=E6=A1=86=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/components/{Dialog.kt => Dialogs.kt} | 30 +++++++++++++++++-- .../todo/ui/pages/editor/TodoEditorPage.kt | 13 ++++---- .../super12138/todo/ui/pages/main/MainPage.kt | 10 ++----- 3 files changed, 35 insertions(+), 18 deletions(-) rename app/src/main/kotlin/cn/super12138/todo/ui/components/{Dialog.kt => Dialogs.kt} (70%) 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()