refactor(main): 简化二次删除确认对话框的实现

This commit is contained in:
Super12138 2025-02-06 10:27:20 +08:00
parent 18f0642a0f
commit b3c36e97d7
2 changed files with 22 additions and 60 deletions

View file

@ -18,7 +18,10 @@ import androidx.compose.foundation.layout.ime
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.safeContent import androidx.compose.foundation.layout.safeContent
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Delete
import androidx.compose.material3.Scaffold import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
@ -29,10 +32,12 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.window.core.layout.WindowWidthSizeClass import androidx.window.core.layout.WindowWidthSizeClass
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.pages.main.components.TodoDeleteConfirmDialog import cn.super12138.todo.ui.components.BasicDialog
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
@ -203,16 +208,20 @@ fun MainPage(
} }
} }
} }
if (showDeleteConfirmDialog) {
TodoDeleteConfirmDialog( BasicDialog(
onConfirm = { visible = showDeleteConfirmDialog,
showDeleteConfirmDialog = false icon = Icons.Outlined.Delete,
viewModel.apply { title = stringResource(R.string.title_warning),
deleteSelectedTodo() text = {
} Text(stringResource(R.string.tip_delete_task, selectedTodoIds.value.size))
}, },
onDismiss = { showDeleteConfirmDialog = false }, confirmButton = stringResource(R.string.action_confirm),
deleteTodoCount = selectedTodoIds.value.size dismissButton = stringResource(R.string.action_cancel),
) onConfirm = {
} showDeleteConfirmDialog = false
viewModel.deleteSelectedTodo()
},
onDismiss = { showDeleteConfirmDialog = false }
)
} }

View file

@ -1,47 +0,0 @@
package cn.super12138.todo.ui.pages.main.components
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Delete
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.FilledTonalButton
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import cn.super12138.todo.R
@Composable
fun TodoDeleteConfirmDialog(
onConfirm: () -> Unit,
onDismiss: () -> Unit,
deleteTodoCount: Int,
modifier: Modifier = Modifier
) {
AlertDialog(
icon = {
Icon(
imageVector = Icons.Outlined.Delete,
contentDescription = stringResource(R.string.action_delete)
)
},
title = {
Text(stringResource(R.string.title_warning))
},
text = {
Text(stringResource(R.string.tip_delete_task, deleteTodoCount))
},
confirmButton = {
FilledTonalButton(onClick = onConfirm) {
Text(stringResource(R.string.action_confirm))
}
},
dismissButton = {
TextButton(onClick = onDismiss) {
Text(stringResource(R.string.action_cancel))
}
},
onDismissRequest = onDismiss
)
}