From 3cc10cd21668e97fcab0be4ac825398a1572a571 Mon Sep 17 00:00:00 2001 From: Super12138 <70494801+Super12138@users.noreply.github.com> Date: Sun, 12 Jan 2025 13:35:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E4=BF=AE=E6=94=B9?= =?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/database/TodoDao.kt | 3 ++- .../cn/super12138/todo/ui/pages/main/MainPage.kt | 10 ++++++++-- .../super12138/todo/ui/pages/main/TodoBottomSheet.kt | 12 ++++++++---- app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 5 files changed, 20 insertions(+), 7 deletions(-) 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 942624f..12c5fb4 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 @@ -2,13 +2,14 @@ package cn.super12138.todo.logic.database import androidx.room.Dao import androidx.room.Insert +import androidx.room.OnConflictStrategy import androidx.room.Query import androidx.room.Update import kotlinx.coroutines.flow.Flow @Dao interface TodoDao { - @Insert + @Insert(onConflict = OnConflictStrategy.REPLACE) suspend fun insert(toDo: TodoEntity) @Query("SELECT * FROM todo") 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 11dc9fb..a69a564 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 @@ -46,6 +46,7 @@ fun MainPage(viewModel: MainViewModel, modifier: Modifier = Modifier) { } } + var selectedTodoItem by remember { mutableStateOf(null) } var openBottomSheet by rememberSaveable { mutableStateOf(false) } val bottomSheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) val scope = rememberCoroutineScope() @@ -105,8 +106,9 @@ fun MainPage(viewModel: MainViewModel, modifier: Modifier = Modifier) { ManagerFragment( state = listState, list = toDoList.value.filter { item -> !item.isCompleted }, - onItemClick = { - + onItemClick = { item -> + openBottomSheet = true + selectedTodoItem = item }, onItemChecked = { item -> item.apply { @@ -130,8 +132,11 @@ fun MainPage(viewModel: MainViewModel, modifier: Modifier = Modifier) { sheetState = bottomSheetState, onDismissRequest = { openBottomSheet = false + selectedTodoItem = null }, + toDo = selectedTodoItem, onSave = { toDo -> + selectedTodoItem = null viewModel.addTodo(toDo) scope .launch { bottomSheetState.hide() } @@ -142,6 +147,7 @@ fun MainPage(viewModel: MainViewModel, modifier: Modifier = Modifier) { } }, onClose = { + selectedTodoItem = null scope .launch { bottomSheetState.hide() } .invokeOnCompletion { 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 c8e3f34..f8a824d 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 @@ -38,6 +38,7 @@ import cn.super12138.todo.ui.pages.main.components.FilterChipGroup fun TodoBottomSheet( sheetState: SheetState, onDismissRequest: () -> Unit, + toDo: TodoEntity? = null, onSave: (TodoEntity) -> Unit, onClose: () -> Unit, modifier: Modifier = Modifier @@ -54,13 +55,13 @@ fun TodoBottomSheet( modifier = Modifier.padding(horizontal = 16.dp) ) { Text( - text = stringResource(R.string.action_add_task), + text = stringResource(if (toDo != null) R.string.title_edit_task else R.string.action_add_task), style = MaterialTheme.typography.headlineMedium ) Spacer(Modifier.size(25.dp)) - var text by rememberSaveable { mutableStateOf("") } + var text by rememberSaveable { mutableStateOf(toDo?.content ?: "") } var isError by rememberSaveable { mutableStateOf(false) } TextField( value = text, @@ -82,9 +83,10 @@ fun TodoBottomSheet( it.getDisplayName(context) } } - var selectedItemIndex by rememberSaveable { mutableIntStateOf(0) } + var selectedItemIndex by rememberSaveable { mutableIntStateOf(toDo?.subject ?: 0) } FilterChipGroup( items = subjects, + defaultSelectedItemIndex = toDo?.subject ?: 0, onSelectedChanged = { selectedItemIndex = it }, @@ -109,7 +111,9 @@ fun TodoBottomSheet( onSave( TodoEntity( content = text, - subject = selectedItemIndex + subject = selectedItemIndex, + isCompleted = toDo?.isCompleted ?: false, + id = toDo?.id ?: 0 ) ) } diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index ca79401..060e30f 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -20,4 +20,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 b8e9dc3..f74ec94 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -19,4 +19,5 @@ Chemistry History Others + Edit Task \ No newline at end of file