refactor(main, editor): 简化对话框实现
This commit is contained in:
parent
b3c36e97d7
commit
1aebd9f517
3 changed files with 35 additions and 18 deletions
|
|
@ -1,5 +1,7 @@
|
||||||
package cn.super12138.todo.ui.components
|
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.AlertDialog
|
||||||
import androidx.compose.material3.FilledTonalButton
|
import androidx.compose.material3.FilledTonalButton
|
||||||
import androidx.compose.material3.Icon
|
import androidx.compose.material3.Icon
|
||||||
|
|
@ -8,6 +10,30 @@ import androidx.compose.material3.TextButton
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.vector.ImageVector
|
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
|
@Composable
|
||||||
fun BasicDialog(
|
fun BasicDialog(
|
||||||
|
|
@ -29,9 +55,7 @@ fun BasicDialog(
|
||||||
contentDescription = null // 会跟下面的文本重复,所以设置为 null
|
contentDescription = null // 会跟下面的文本重复,所以设置为 null
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
title = {
|
title = { Text(title) },
|
||||||
Text(title)
|
|
||||||
},
|
|
||||||
text = text,
|
text = text,
|
||||||
confirmButton = {
|
confirmButton = {
|
||||||
FilledTonalButton(onClick = onConfirm) {
|
FilledTonalButton(onClick = onConfirm) {
|
||||||
|
|
@ -19,8 +19,8 @@ import androidx.compose.foundation.layout.wrapContentWidth
|
||||||
import androidx.compose.foundation.rememberScrollState
|
import androidx.compose.foundation.rememberScrollState
|
||||||
import androidx.compose.foundation.verticalScroll
|
import androidx.compose.foundation.verticalScroll
|
||||||
import androidx.compose.material.icons.Icons
|
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.Delete
|
||||||
import androidx.compose.material.icons.outlined.ErrorOutline
|
|
||||||
import androidx.compose.material.icons.outlined.Save
|
import androidx.compose.material.icons.outlined.Save
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.Icon
|
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.logic.model.Subjects
|
||||||
import cn.super12138.todo.ui.TodoDefaults
|
import cn.super12138.todo.ui.TodoDefaults
|
||||||
import cn.super12138.todo.ui.components.AnimatedExtendedFloatingActionButton
|
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.FilterChipGroup
|
||||||
import cn.super12138.todo.ui.components.LargeTopAppBarScaffold
|
import cn.super12138.todo.ui.components.LargeTopAppBarScaffold
|
||||||
|
import cn.super12138.todo.ui.components.WarningDialog
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalSharedTransitionApi::class)
|
@OptIn(ExperimentalMaterial3Api::class, ExperimentalSharedTransitionApi::class)
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -245,13 +245,10 @@ fun TodoEditorPage(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BasicDialog(
|
WarningDialog(
|
||||||
visible = showConfirmDialog,
|
visible = showConfirmDialog,
|
||||||
icon = Icons.Outlined.ErrorOutline,
|
icon = Icons.AutoMirrored.Outlined.Undo,
|
||||||
title = stringResource(R.string.title_warning),
|
description = stringResource(R.string.tip_discard_changes),
|
||||||
text = { Text(stringResource(R.string.tip_discard_changes)) },
|
|
||||||
confirmButton = stringResource(R.string.action_confirm),
|
|
||||||
dismissButton = stringResource(R.string.action_cancel),
|
|
||||||
onConfirm = {
|
onConfirm = {
|
||||||
showConfirmDialog = false
|
showConfirmDialog = false
|
||||||
onNavigateUp()
|
onNavigateUp()
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ import cn.super12138.todo.R
|
||||||
import cn.super12138.todo.constants.Constants
|
import cn.super12138.todo.constants.Constants
|
||||||
import cn.super12138.todo.logic.database.TodoEntity
|
import cn.super12138.todo.logic.database.TodoEntity
|
||||||
import cn.super12138.todo.ui.components.BasicDialog
|
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.TodoFAB
|
||||||
import cn.super12138.todo.ui.pages.main.components.TodoTopAppBar
|
import cn.super12138.todo.ui.pages.main.components.TodoTopAppBar
|
||||||
import cn.super12138.todo.ui.viewmodels.MainViewModel
|
import cn.super12138.todo.ui.viewmodels.MainViewModel
|
||||||
|
|
@ -209,15 +210,10 @@ fun MainPage(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BasicDialog(
|
WarningDialog(
|
||||||
visible = showDeleteConfirmDialog,
|
visible = showDeleteConfirmDialog,
|
||||||
icon = Icons.Outlined.Delete,
|
icon = Icons.Outlined.Delete,
|
||||||
title = stringResource(R.string.title_warning),
|
description = stringResource(R.string.tip_delete_task, selectedTodoIds.value.size),
|
||||||
text = {
|
|
||||||
Text(stringResource(R.string.tip_delete_task, selectedTodoIds.value.size))
|
|
||||||
},
|
|
||||||
confirmButton = stringResource(R.string.action_confirm),
|
|
||||||
dismissButton = stringResource(R.string.action_cancel),
|
|
||||||
onConfirm = {
|
onConfirm = {
|
||||||
showDeleteConfirmDialog = false
|
showDeleteConfirmDialog = false
|
||||||
viewModel.deleteSelectedTodo()
|
viewModel.deleteSelectedTodo()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue