From 165606344990e28c60244bdf39763118c067ec04 Mon Sep 17 00:00:00 2001 From: Super12138 <70494801+Super12138@users.noreply.github.com> Date: Wed, 15 Jan 2025 09:17:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=88=A0=E9=99=A4=E5=8D=95=E4=B8=AA?= =?UTF-8?q?=E5=BE=85=E5=8A=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/super12138/todo/logic/Repository.kt | 6 +++++- .../super12138/todo/logic/database/TodoDao.kt | 3 +++ .../super12138/todo/ui/pages/main/MainPage.kt | 11 +++-------- .../todo/ui/pages/main/TodoBottomSheet.kt | 19 +++++++++++++++++++ .../todo/ui/viewmodels/MainViewModel.kt | 6 ++++++ app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 7 files changed, 38 insertions(+), 9 deletions(-) diff --git a/app/src/main/kotlin/cn/super12138/todo/logic/Repository.kt b/app/src/main/kotlin/cn/super12138/todo/logic/Repository.kt index 2e7e0cb..0c591dd 100644 --- a/app/src/main/kotlin/cn/super12138/todo/logic/Repository.kt +++ b/app/src/main/kotlin/cn/super12138/todo/logic/Repository.kt @@ -14,7 +14,11 @@ object Repository { fun getAllTodos(): Flow> = toDoDao.getAll() - suspend fun updateTodo(toDo: TodoEntity){ + suspend fun updateTodo(toDo: TodoEntity) { toDoDao.update(toDo) } + + suspend fun deleteTodo(toDo: TodoEntity) { + toDoDao.delete(toDo.id) + } } \ No newline at end of file diff --git a/app/src/main/kotlin/cn/super12138/todo/logic/database/TodoDao.kt b/app/src/main/kotlin/cn/super12138/todo/logic/database/TodoDao.kt index 12c5fb4..a0a8c91 100644 --- a/app/src/main/kotlin/cn/super12138/todo/logic/database/TodoDao.kt +++ b/app/src/main/kotlin/cn/super12138/todo/logic/database/TodoDao.kt @@ -17,4 +17,7 @@ interface TodoDao { @Update suspend fun update(toDo: TodoEntity) + + @Query("DELETE FROM todo WHERE id = :toDoId") + suspend fun delete(toDoId: Int) } \ No newline at end of file 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 4fda39c..504795a 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 @@ -158,15 +158,7 @@ fun MainPage(viewModel: MainViewModel, modifier: Modifier = Modifier) { }, toDo = selectedEditTodoItem, onSave = { toDo -> - viewModel.setEditTodoItem(null) viewModel.addTodo(toDo) - scope - .launch { bottomSheetState.hide() } - .invokeOnCompletion { - if (!bottomSheetState.isVisible) { - openBottomSheet = false - } - } }, onClose = { viewModel.setEditTodoItem(null) @@ -177,6 +169,9 @@ fun MainPage(viewModel: MainViewModel, modifier: Modifier = Modifier) { openBottomSheet = false } } + }, + onDelete = { + if (selectedEditTodoItem !== null) viewModel.deleteTodo(selectedEditTodoItem) } ) } diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/TodoBottomSheet.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/TodoBottomSheet.kt index a928148..dd5db82 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/TodoBottomSheet.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/TodoBottomSheet.kt @@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.ButtonColors import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.MaterialTheme @@ -44,6 +45,7 @@ fun TodoBottomSheet( toDo: TodoEntity? = null, onSave: (TodoEntity) -> Unit, onClose: () -> Unit, + onDelete: () -> Unit, modifier: Modifier = Modifier ) { val context = LocalContext.current @@ -104,6 +106,22 @@ fun TodoBottomSheet( OutlinedButton(onClick = onClose) { Text(stringResource(R.string.action_cancel)) } + if (toDo !== null) { + FilledTonalButton( + onClick = { + onDelete() + onClose() + }, + colors = ButtonColors( + containerColor = MaterialTheme.colorScheme.errorContainer, + contentColor = MaterialTheme.colorScheme.onErrorContainer, + disabledContainerColor = MaterialTheme.colorScheme.onSurface, + disabledContentColor = MaterialTheme.colorScheme.onSurfaceVariant + ) + ) { + Text(stringResource(R.string.action_delete)) + } + } FilledTonalButton( onClick = { // 文本为空 @@ -121,6 +139,7 @@ fun TodoBottomSheet( id = toDo?.id ?: 0 ) ) + onClose() } ) { Text(stringResource(R.string.action_save)) diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/viewmodels/MainViewModel.kt b/app/src/main/kotlin/cn/super12138/todo/ui/viewmodels/MainViewModel.kt index 06e288b..3392abd 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/viewmodels/MainViewModel.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/viewmodels/MainViewModel.kt @@ -35,4 +35,10 @@ class MainViewModel : ViewModel() { fun setEditTodoItem(toDo: TodoEntity?) { selectedEditTodoItem = toDo } + + fun deleteTodo(toDo: TodoEntity) { + viewModelScope.launch { + Repository.deleteTodo(toDo) + } + } } \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index c1b4bd2..103c579 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -25,4 +25,5 @@ 应用程序出现错误 没有日志传入 退出应用 + 删除 \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ec41fd3..9b10c20 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -24,4 +24,5 @@ Oops! App went wrong No crash logs Exit app + Delete \ No newline at end of file