refactor(main): 简化二次删除确认对话框的实现
This commit is contained in:
parent
18f0642a0f
commit
b3c36e97d7
2 changed files with 22 additions and 60 deletions
|
|
@ -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 }
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -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
|
|
||||||
)
|
|
||||||
}
|
|
||||||
Loading…
Reference in a new issue