diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 37e6092..b092eba 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -34,7 +34,7 @@ android { applicationId = "cn.super12138.todo" minSdk = 24 targetSdk = 36 - versionCode = 605 + versionCode = 606 versionName = "2.1.2" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/components/Dialogs.kt b/app/src/main/kotlin/cn/super12138/todo/ui/components/Dialogs.kt index 0dea239..91842d4 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/components/Dialogs.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/components/Dialogs.kt @@ -20,22 +20,25 @@ import cn.super12138.todo.R import cn.super12138.todo.utils.VibrationUtils @Composable -fun WarningDialog( +fun ConfirmDialog( + modifier: Modifier = Modifier, visible: Boolean, icon: ImageVector = Icons.Outlined.ErrorOutline, - description: String, - onConfirm: () -> Unit, - onDismiss: () -> Unit, + title: String = stringResource(R.string.title_warning), + text: String, + confirmButtonText: String = stringResource(R.string.action_confirm), + dismissButtonText: String = stringResource(R.string.action_cancel), properties: DialogProperties = DialogProperties(), - modifier: Modifier = Modifier + onConfirm: () -> Unit, + onDismiss: () -> Unit ) { 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), + title = title, + text = { Text(text) }, // 已经实现好滚动了 + confirmButton = confirmButtonText, + dismissButton = dismissButtonText, onConfirm = { onConfirm() onDismiss() @@ -46,49 +49,9 @@ fun WarningDialog( ) } -@Composable -fun ConfirmDialog( - visible: Boolean, - icon: ImageVector, - title: String, - text: String, - confirmButton: String, - onConfirm: () -> Unit, - onDismiss: () -> Unit, - properties: DialogProperties = DialogProperties(), - modifier: Modifier = Modifier -) { - val view = LocalView.current - BasicDialog( - visible = visible, - icon = { - Icon( - imageVector = icon, - contentDescription = null // 会跟下面的文本重复,所以设置为 null - ) - }, - title = { Text(title) }, - text = { Text(text) }, - confirmButton = { - FilledTonalButton( - onClick = { - VibrationUtils.performHapticFeedback(view) - onConfirm() - onDismiss() - } - ) { - Text(confirmButton) - } - }, - dismissButton = {}, - onDismissRequest = onDismiss, - properties = properties, - modifier = modifier - ) -} - @Composable fun BasicDialog( + modifier: Modifier = Modifier, visible: Boolean, icon: ImageVector, title: String, @@ -97,8 +60,7 @@ fun BasicDialog( dismissButton: String, onConfirm: () -> Unit, onDismiss: () -> Unit, - properties: DialogProperties = DialogProperties(), - modifier: Modifier = Modifier + properties: DialogProperties = DialogProperties() ) { val view = LocalView.current BasicDialog( @@ -110,7 +72,11 @@ fun BasicDialog( ) }, title = { Text(title) }, - text = text, + text = { + Column(modifier = Modifier.verticalScroll(rememberScrollState())) { + text?.let { it() } + } + }, confirmButton = { FilledTonalButton( onClick = { @@ -139,6 +105,7 @@ fun BasicDialog( @Composable fun BasicDialog( + modifier: Modifier = Modifier, visible: Boolean, icon: @Composable (() -> Unit)? = null, title: @Composable () -> Unit, @@ -146,18 +113,13 @@ fun BasicDialog( confirmButton: (@Composable () -> Unit), dismissButton: (@Composable () -> Unit)? = null, onDismissRequest: () -> Unit, - properties: DialogProperties = DialogProperties(), - modifier: Modifier = Modifier + properties: DialogProperties = DialogProperties() ) { if (visible) { AlertDialog( icon = icon, title = title, - text = { - Column(modifier = Modifier.verticalScroll(rememberScrollState())) { - text?.let { it() } - } - }, + text = text, confirmButton = confirmButton, dismissButton = dismissButton, onDismissRequest = onDismissRequest, diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/components/FloatingActionButton.kt b/app/src/main/kotlin/cn/super12138/todo/ui/components/FloatingActionButton.kt index 895b615..fb508e2 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/components/FloatingActionButton.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/components/FloatingActionButton.kt @@ -38,6 +38,7 @@ import cn.super12138.todo.utils.VibrationUtils */ @Composable fun AnimatedExtendedFloatingActionButton( + modifier: Modifier = Modifier, icon: ImageVector, text: String, textOverflow: TextOverflow = TextOverflow.Clip, @@ -45,8 +46,7 @@ fun AnimatedExtendedFloatingActionButton( containerColor: Color = FloatingActionButtonDefaults.containerColor, contentColor: Color = contentColorFor(containerColor), elevation: FloatingActionButtonElevation = FloatingActionButtonDefaults.elevation(), - onClick: () -> Unit, - modifier: Modifier = Modifier + onClick: () -> Unit ) { val view = LocalView.current FloatingActionButton( diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/components/Konfetti.kt b/app/src/main/kotlin/cn/super12138/todo/ui/components/Konfetti.kt index 107a518..130bcf3 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/components/Konfetti.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/components/Konfetti.kt @@ -28,9 +28,9 @@ import java.util.concurrent.TimeUnit @Composable fun Konfetti( + modifier: Modifier = Modifier, state: MutableState, - primary: Color = MaterialTheme.colorScheme.primary, - modifier: Modifier = Modifier + primary: Color = MaterialTheme.colorScheme.primary ) { var visible by state if (!visible) { diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/components/Scaffolds.kt b/app/src/main/kotlin/cn/super12138/todo/ui/components/Scaffolds.kt index 7993b25..267818d 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/components/Scaffolds.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/components/Scaffolds.kt @@ -39,6 +39,7 @@ import cn.super12138.todo.utils.VibrationUtils @OptIn(ExperimentalMaterial3Api::class) @Composable fun LargeTopAppBarScaffold( + modifier: Modifier = Modifier, title: String, scrollBehavior: TopAppBarScrollBehavior, onBack: () -> Unit, @@ -46,7 +47,6 @@ fun LargeTopAppBarScaffold( floatingActionButton: @Composable () -> Unit = {}, floatingActionButtonPosition: FabPosition = FabPosition.End, contentWindowInsets: WindowInsets = WindowInsets.safeContent.exclude(WindowInsets.ime), - modifier: Modifier = Modifier, content: @Composable (PaddingValues) -> Unit ) { val view = LocalView.current @@ -75,7 +75,8 @@ fun LargeTopAppBarScaffold( snackbarHost = snackbarHost, floatingActionButton = floatingActionButton, floatingActionButtonPosition = floatingActionButtonPosition, - contentWindowInsets = contentWindowInsets + contentWindowInsets = contentWindowInsets, + modifier = modifier ) { innerPadding -> Box { content(innerPadding) } } @@ -84,6 +85,7 @@ fun LargeTopAppBarScaffold( @OptIn(ExperimentalMaterial3Api::class) @Composable fun LargeTopAppBarScaffold( + modifier: Modifier = Modifier, title: @Composable () -> Unit = {}, navigationIcon: @Composable () -> Unit = {}, actions: @Composable RowScope.() -> Unit = {}, @@ -92,7 +94,6 @@ fun LargeTopAppBarScaffold( floatingActionButton: @Composable () -> Unit = {}, floatingActionButtonPosition: FabPosition = FabPosition.End, contentWindowInsets: WindowInsets = ScaffoldDefaults.contentWindowInsets, - modifier: Modifier = Modifier, content: @Composable (PaddingValues) -> Unit ) { Scaffold( 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 df35bca..35f7f44 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 @@ -58,9 +58,9 @@ 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.ChipItem +import cn.super12138.todo.ui.components.ConfirmDialog import cn.super12138.todo.ui.components.FilterChipGroup import cn.super12138.todo.ui.components.LargeTopAppBarScaffold -import cn.super12138.todo.ui.components.WarningDialog import cn.super12138.todo.utils.VibrationUtils @OptIn(ExperimentalMaterial3Api::class, ExperimentalSharedTransitionApi::class) @@ -310,10 +310,10 @@ fun TodoEditorPage( } } - WarningDialog( + ConfirmDialog( visible = showExitConfirmDialog, icon = Icons.AutoMirrored.Outlined.Undo, - description = stringResource(R.string.tip_discard_changes), + text = stringResource(R.string.tip_discard_changes), onConfirm = { showExitConfirmDialog = false onNavigateUp() @@ -321,10 +321,10 @@ fun TodoEditorPage( onDismiss = { showExitConfirmDialog = false } ) - WarningDialog( + ConfirmDialog( visible = showDeleteConfirmDialog, icon = Icons.Outlined.Delete, - description = stringResource(R.string.tip_delete_task, 1), + text = stringResource(R.string.tip_delete_task, 1), onConfirm = onDelete, onDismiss = { showDeleteConfirmDialog = false } ) 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 cb587bd..b8072e0 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,7 +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.AnimatedExtendedFloatingActionButton -import cn.super12138.todo.ui.components.WarningDialog +import cn.super12138.todo.ui.components.ConfirmDialog import cn.super12138.todo.ui.pages.main.components.TodoTopAppBar import cn.super12138.todo.ui.viewmodels.MainViewModel @@ -220,10 +220,10 @@ fun MainPage( } } - WarningDialog( + ConfirmDialog( visible = showDeleteConfirmDialog, icon = Icons.Outlined.Delete, - description = stringResource(R.string.tip_delete_task, selectedTodoIds.size), + text = stringResource(R.string.tip_delete_task, selectedTodoIds.size), onConfirm = { viewModel.deleteSelectedTodo() }, onDismiss = { showDeleteConfirmDialog = false } ) diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsData.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsData.kt index a3aa60b..d58cee7 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsData.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsData.kt @@ -139,7 +139,6 @@ fun SettingsData( icon = Icons.Outlined.RestartAlt, title = stringResource(R.string.tip_tips), text = stringResource(R.string.tip_restore_success), - confirmButton = stringResource(R.string.action_confirm), onConfirm = { restartApp(context) }, onDismiss = { showRestoreDialog = false }, properties = DialogProperties(dismissOnBackPress = false, dismissOnClickOutside = false)