From 3487c64fe5a2c5183f608a484ce14c0db387dc7c Mon Sep 17 00:00:00 2001 From: Super12138 <70494801+Super12138@users.noreply.github.com> Date: Sun, 16 Nov 2025 15:09:26 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=8A=8A=20Material=20Icon=20?= =?UTF-8?q?=E6=9B=BF=E6=8D=A2=E6=88=90=20Material=20Symbols?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 并优化部分无障碍表述 --- app/build.gradle.kts | 2 - .../todo/ui/components/ChipGroup.kt | 7 +-- .../super12138/todo/ui/components/Dialogs.kt | 14 ++--- .../ui/components/FloatingActionButton.kt | 9 +-- .../todo/ui/components/Scaffolds.kt | 5 +- .../icons/{GithubIcons.kt => GitHubIcons.kt} | 0 .../todo/ui/pages/crash/CrashPage.kt | 5 +- .../todo/ui/pages/editor/TodoEditorPage.kt | 12 ++-- .../super12138/todo/ui/pages/main/MainPage.kt | 8 +-- .../todo/ui/pages/main/ProgressFragment.kt | 8 ++- .../todo/ui/pages/main/components/TodoCard.kt | 9 ++- .../ui/pages/main/components/TodoTopAppBar.kt | 14 ++--- .../todo/ui/pages/settings/SettingsAbout.kt | 13 ++--- .../ui/pages/settings/SettingsAppearance.kt | 4 +- .../todo/ui/pages/settings/SettingsData.kt | 13 ++--- .../ui/pages/settings/SettingsDataCategory.kt | 4 +- .../settings/SettingsDeveloperOptions.kt | 4 +- .../settings/SettingsInterfaceInteraction.kt | 15 ++--- .../todo/ui/pages/settings/SettingsMain.kt | 13 ++--- .../pages/settings/components/SettingsItem.kt | 55 +++++++++++++++++++ .../settings/components/SettingsPlainBox.kt | 5 +- .../settings/components/SwitchSettingsItem.kt | 31 +++++++++++ .../appearance/darkmode/DarkModeItem.kt | 7 ++- .../appearance/darkmode/DarkModePicker.kt | 2 +- .../components/category/CategoryDialog.kt | 5 +- .../components/category/CategoryItem.kt | 5 +- .../cn/super12138/todo/ui/theme/DarkMode.kt | 13 ++--- app/src/main/res/drawable/ic_add.xml | 9 +++ app/src/main/res/drawable/ic_arrow_back.xml | 10 ++++ app/src/main/res/drawable/ic_balance.xml | 9 +++ app/src/main/res/drawable/ic_category.xml | 9 +++ app/src/main/res/drawable/ic_check.xml | 9 +++ app/src/main/res/drawable/ic_checklist.xml | 9 +++ app/src/main/res/drawable/ic_close.xml | 9 +++ app/src/main/res/drawable/ic_code_blocks.xml | 9 +++ app/src/main/res/drawable/ic_dark_mode.xml | 9 +++ app/src/main/res/drawable/ic_delete.xml | 9 +++ app/src/main/res/drawable/ic_dns.xml | 9 +++ app/src/main/res/drawable/ic_download.xml | 9 +++ app/src/main/res/drawable/ic_exit_to_app.xml | 10 ++++ app/src/main/res/drawable/ic_info.xml | 9 +++ app/src/main/res/drawable/ic_light_mode.xml | 9 +++ app/src/main/res/drawable/ic_lightbulb_2.xml | 9 +++ app/src/main/res/drawable/ic_numbers.xml | 9 +++ app/src/main/res/drawable/ic_padding.xml | 9 +++ app/src/main/res/drawable/ic_palette.xml | 9 +++ app/src/main/res/drawable/ic_person_4.xml | 9 +++ app/src/main/res/drawable/ic_restart_alt.xml | 9 +++ app/src/main/res/drawable/ic_save.xml | 9 +++ app/src/main/res/drawable/ic_select_all.xml | 9 +++ app/src/main/res/drawable/ic_settings.xml | 9 +++ app/src/main/res/drawable/ic_shield.xml | 9 +++ app/src/main/res/drawable/ic_sort.xml | 11 ++++ app/src/main/res/drawable/ic_touch_long.xml | 9 +++ app/src/main/res/drawable/ic_undo.xml | 10 ++++ app/src/main/res/drawable/ic_upload.xml | 9 +++ app/src/main/res/drawable/ic_view_comfy.xml | 9 +++ app/src/main/res/drawable/ic_wand_stars.xml | 9 +++ app/src/main/res/values/strings.xml | 1 + gradle/libs.versions.toml | 3 - 60 files changed, 446 insertions(+), 124 deletions(-) rename app/src/main/kotlin/cn/super12138/todo/ui/icons/{GithubIcons.kt => GitHubIcons.kt} (100%) create mode 100644 app/src/main/res/drawable/ic_add.xml create mode 100644 app/src/main/res/drawable/ic_arrow_back.xml create mode 100644 app/src/main/res/drawable/ic_balance.xml create mode 100644 app/src/main/res/drawable/ic_category.xml create mode 100644 app/src/main/res/drawable/ic_check.xml create mode 100644 app/src/main/res/drawable/ic_checklist.xml create mode 100644 app/src/main/res/drawable/ic_close.xml create mode 100644 app/src/main/res/drawable/ic_code_blocks.xml create mode 100644 app/src/main/res/drawable/ic_dark_mode.xml create mode 100644 app/src/main/res/drawable/ic_delete.xml create mode 100644 app/src/main/res/drawable/ic_dns.xml create mode 100644 app/src/main/res/drawable/ic_download.xml create mode 100644 app/src/main/res/drawable/ic_exit_to_app.xml create mode 100644 app/src/main/res/drawable/ic_info.xml create mode 100644 app/src/main/res/drawable/ic_light_mode.xml create mode 100644 app/src/main/res/drawable/ic_lightbulb_2.xml create mode 100644 app/src/main/res/drawable/ic_numbers.xml create mode 100644 app/src/main/res/drawable/ic_padding.xml create mode 100644 app/src/main/res/drawable/ic_palette.xml create mode 100644 app/src/main/res/drawable/ic_person_4.xml create mode 100644 app/src/main/res/drawable/ic_restart_alt.xml create mode 100644 app/src/main/res/drawable/ic_save.xml create mode 100644 app/src/main/res/drawable/ic_select_all.xml create mode 100644 app/src/main/res/drawable/ic_settings.xml create mode 100644 app/src/main/res/drawable/ic_shield.xml create mode 100644 app/src/main/res/drawable/ic_sort.xml create mode 100644 app/src/main/res/drawable/ic_touch_long.xml create mode 100644 app/src/main/res/drawable/ic_undo.xml create mode 100644 app/src/main/res/drawable/ic_upload.xml create mode 100644 app/src/main/res/drawable/ic_view_comfy.xml create mode 100644 app/src/main/res/drawable/ic_wand_stars.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 0685a42..b170988 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -106,8 +106,6 @@ dependencies { implementation(libs.androidx.ui.graphics) implementation(libs.androidx.ui.tooling.preview) implementation(libs.androidx.material3) - implementation(libs.androidx.material.icon.core) - implementation(libs.androidx.material.icon.extended) implementation(libs.androidx.navigation3.runtime) implementation(libs.androidx.navigation3.ui) // About Libraries diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/components/ChipGroup.kt b/app/src/main/kotlin/cn/super12138/todo/ui/components/ChipGroup.kt index 779ff3e..d46199d 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/components/ChipGroup.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/components/ChipGroup.kt @@ -4,8 +4,6 @@ import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Check import androidx.compose.material3.FilterChip import androidx.compose.material3.FilterChipDefaults import androidx.compose.material3.Icon @@ -18,6 +16,7 @@ import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import cn.super12138.todo.R @@ -71,8 +70,8 @@ private fun FilterChipItem( if (selected) { { Icon( - imageVector = Icons.Outlined.Check, - contentDescription = stringResource(R.string.tip_select_this), + painter = painterResource(R.drawable.ic_check), + contentDescription = stringResource(R.string.tip_selected), modifier = Modifier.size(FilterChipDefaults.IconSize) ) } diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/components/Dialogs.kt b/app/src/main/kotlin/cn/super12138/todo/ui/components/Dialogs.kt index 1b44314..ee9e49d 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/components/Dialogs.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/components/Dialogs.kt @@ -1,10 +1,9 @@ package cn.super12138.todo.ui.components +import androidx.annotation.DrawableRes import androidx.compose.foundation.layout.Column import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.ErrorOutline import androidx.compose.material3.AlertDialog import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi @@ -14,8 +13,9 @@ import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.window.DialogProperties import cn.super12138.todo.R @@ -25,7 +25,7 @@ import cn.super12138.todo.utils.VibrationUtils fun ConfirmDialog( modifier: Modifier = Modifier, visible: Boolean, - icon: ImageVector = Icons.Outlined.ErrorOutline, + @DrawableRes iconRes: Int, title: String = stringResource(R.string.title_warning), text: String, confirmButtonText: String = stringResource(R.string.action_confirm), @@ -37,7 +37,7 @@ fun ConfirmDialog( ) { BasicDialog( visible = visible, - icon = icon, + painter = painterResource(iconRes), title = title, text = { Text(text) }, // 已经实现好滚动了 confirmButton = confirmButtonText, @@ -57,7 +57,7 @@ fun ConfirmDialog( fun BasicDialog( modifier: Modifier = Modifier, visible: Boolean, - icon: ImageVector, + painter: Painter, title: String, text: @Composable (() -> Unit)? = null, confirmButton: String, @@ -71,7 +71,7 @@ fun BasicDialog( visible = visible, icon = { Icon( - imageVector = icon, + painter = painter, contentDescription = null // 会跟下面的文本重复,所以设置为 null ) }, diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/components/FloatingActionButton.kt b/app/src/main/kotlin/cn/super12138/todo/ui/components/FloatingActionButton.kt index b47aba2..40cf4b2 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/components/FloatingActionButton.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/components/FloatingActionButton.kt @@ -1,5 +1,6 @@ package cn.super12138.todo.ui.components +import androidx.annotation.DrawableRes import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.FloatingActionButtonDefaults @@ -12,8 +13,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Shape -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.style.TextOverflow import cn.super12138.todo.utils.VibrationUtils @@ -22,7 +23,7 @@ import cn.super12138.todo.utils.VibrationUtils * * (现在内置组件的动画好像好一点了) * * 将缩放部分转为最简单的`AnimatedVisibility`实现 - * @param icon FAB 的前置图标 + * @param iconRes FAB 的前置图标 * @param text FAB 的文本 * @param expanded 是否为展开状态 * @param containerColor FAB 容器的颜色 @@ -35,7 +36,7 @@ import cn.super12138.todo.utils.VibrationUtils @Composable fun TodoFloatingActionButton( text: String, - icon: ImageVector, + @DrawableRes iconRes: Int, onClick: () -> Unit, modifier: Modifier = Modifier, expanded: Boolean = true, @@ -56,7 +57,7 @@ fun TodoFloatingActionButton( }, icon = { Icon( - imageVector = icon, + painter = painterResource(iconRes), contentDescription = null ) }, diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/components/Scaffolds.kt b/app/src/main/kotlin/cn/super12138/todo/ui/components/Scaffolds.kt index d5f4e80..158fe2a 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/components/Scaffolds.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/components/Scaffolds.kt @@ -4,8 +4,6 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.outlined.ArrowBack import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.FabPosition @@ -22,6 +20,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import cn.super12138.todo.R @@ -68,7 +67,7 @@ fun LargeTopAppBarScaffold( } ) { Icon( - imageVector = Icons.AutoMirrored.Outlined.ArrowBack, + painter = painterResource(R.drawable.ic_arrow_back), contentDescription = stringResource(R.string.action_back) ) } diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/icons/GithubIcons.kt b/app/src/main/kotlin/cn/super12138/todo/ui/icons/GitHubIcons.kt similarity index 100% rename from app/src/main/kotlin/cn/super12138/todo/ui/icons/GithubIcons.kt rename to app/src/main/kotlin/cn/super12138/todo/ui/icons/GitHubIcons.kt diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/crash/CrashPage.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/crash/CrashPage.kt index 8472b7a..2a8da2f 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/crash/CrashPage.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/crash/CrashPage.kt @@ -10,8 +10,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.outlined.ExitToApp import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.Icon @@ -28,6 +26,7 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.buildAnnotatedString @@ -83,7 +82,7 @@ fun CrashPage( text = { Text(stringResource(R.string.action_exit_app)) }, icon = { Icon( - imageVector = Icons.AutoMirrored.Outlined.ExitToApp, + painter = painterResource(R.drawable.ic_exit_to_app), contentDescription = null ) }, diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/editor/TodoEditorPage.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/editor/TodoEditorPage.kt index 2e86810..f2904e2 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/editor/TodoEditorPage.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/editor/TodoEditorPage.kt @@ -17,10 +17,6 @@ import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn -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.Save import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.MaterialTheme @@ -128,7 +124,7 @@ fun TodoEditorPage( if (toDo !== null) { TodoFloatingActionButton( text = stringResource(R.string.action_delete), - icon = Icons.Outlined.Delete, + iconRes = R.drawable.ic_delete, expanded = true, containerColor = MaterialTheme.colorScheme.errorContainer, onClick = { uiState.showDeleteConfirmDialog = true } @@ -136,7 +132,7 @@ fun TodoEditorPage( } TodoFloatingActionButton( text = stringResource(R.string.action_save), - icon = Icons.Outlined.Save, + iconRes = R.drawable.ic_save, expanded = true, onClick = { if (uiState.setErrorIfNotValid()) { @@ -256,7 +252,7 @@ fun TodoEditorPage( ConfirmDialog( visible = uiState.showExitConfirmDialog, - icon = Icons.AutoMirrored.Outlined.Undo, + iconRes = R.drawable.ic_undo, text = stringResource(R.string.tip_discard_changes), onConfirm = { uiState.showExitConfirmDialog = false @@ -267,7 +263,7 @@ fun TodoEditorPage( ConfirmDialog( visible = uiState.showDeleteConfirmDialog, - icon = Icons.Outlined.Delete, + iconRes = R.drawable.ic_delete, text = stringResource(R.string.tip_delete_task, 1), onConfirm = onDelete, onDismiss = { uiState.showDeleteConfirmDialog = false } 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 f5c3ae5..af8eadc 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 @@ -8,9 +8,6 @@ import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Add -import androidx.compose.material.icons.outlined.Delete import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.Scaffold import androidx.compose.material3.animateFloatingActionButton @@ -24,7 +21,6 @@ import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.layout.ModifierLocalBeyondBoundsLayout import androidx.compose.ui.res.stringResource import androidx.navigation3.ui.LocalNavAnimatedContentScope import cn.super12138.todo.R @@ -82,7 +78,7 @@ fun MainPage( with(sharedTransitionScope) { TodoFloatingActionButton( text = stringResource(R.string.action_add_task), - icon = Icons.Outlined.Add, + iconRes = R.drawable.ic_add, expanded = expandedFab, onClick = { toTodoEditPage(null) }, modifier = Modifier @@ -175,7 +171,7 @@ fun MainPage( /*}*/ ConfirmDialog( visible = showDeleteConfirmDialog, - icon = Icons.Outlined.Delete, + iconRes = R.drawable.ic_delete, text = stringResource(R.string.tip_delete_task, selectedTodoIds.size), onConfirm = { viewModel.deleteSelectedTodo() }, onDismiss = { showDeleteConfirmDialog = false } diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/ProgressFragment.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/ProgressFragment.kt index 5a3dcb3..10f5d77 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/ProgressFragment.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/ProgressFragment.kt @@ -119,8 +119,12 @@ fun ProgressFragment( } AnimatedVisibility( visible = remainTasks != 0, - enter = fadeIn(MaterialTheme.motionScheme.fastSpatialSpec()) + expandVertically(MaterialTheme.motionScheme.fastSpatialSpec()), - exit = fadeOut(MaterialTheme.motionScheme.fastSpatialSpec()) + shrinkVertically(MaterialTheme.motionScheme.fastSpatialSpec()), + enter = fadeIn(MaterialTheme.motionScheme.fastSpatialSpec()) + expandVertically( + MaterialTheme.motionScheme.fastSpatialSpec() + ), + exit = fadeOut(MaterialTheme.motionScheme.fastSpatialSpec()) + shrinkVertically( + MaterialTheme.motionScheme.fastSpatialSpec() + ), ) { Text( text = stringResource(R.string.tip_remain_tasks, remainTasks), diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/components/TodoCard.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/components/TodoCard.kt index dd22418..a232388 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/components/TodoCard.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/components/TodoCard.kt @@ -15,8 +15,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Check import androidx.compose.material3.Badge import androidx.compose.material3.BadgedBox import androidx.compose.material3.ElevatedCard @@ -31,6 +29,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.text.style.TextOverflow @@ -87,9 +86,9 @@ fun TodoCard( .padding(5.dp) ) { Icon( - imageVector = Icons.Outlined.Check, + painter = painterResource(R.drawable.ic_check), tint = contentColorFor(MaterialTheme.colorScheme.secondary), - contentDescription = stringResource(R.string.tip_select_this) + contentDescription = stringResource(R.string.tip_selected) ) } } @@ -158,7 +157,7 @@ fun TodoCard( } ) { Icon( - imageVector = Icons.Outlined.Check, + painter = painterResource(R.drawable.ic_check), tint = MaterialTheme.colorScheme.primary, contentDescription = stringResource(R.string.tip_mark_completed) ) diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/components/TodoTopAppBar.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/components/TodoTopAppBar.kt index 24f9901..2f00f64 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/components/TodoTopAppBar.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/components/TodoTopAppBar.kt @@ -11,11 +11,6 @@ import androidx.compose.animation.scaleIn import androidx.compose.animation.shrinkOut import androidx.compose.animation.togetherWith import androidx.compose.foundation.layout.Row -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Close -import androidx.compose.material.icons.outlined.Delete -import androidx.compose.material.icons.outlined.SelectAll -import androidx.compose.material.icons.outlined.Settings import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -30,6 +25,7 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview @@ -70,7 +66,7 @@ fun TodoTopAppBar( } ) { Icon( - imageVector = Icons.Outlined.Close, + painter = painterResource(R.drawable.ic_close), contentDescription = stringResource(R.string.tip_clear_selected_items) ) } @@ -125,7 +121,7 @@ fun TodoTopAppBar( } ) { Icon( - imageVector = Icons.Outlined.Settings, + painter = painterResource(R.drawable.ic_settings), contentDescription = stringResource(R.string.page_settings) ) } @@ -138,7 +134,7 @@ fun TodoTopAppBar( } ) { Icon( - imageVector = Icons.Outlined.SelectAll, + painter = painterResource(R.drawable.ic_select_all), contentDescription = stringResource(R.string.tip_select_all) ) } @@ -149,7 +145,7 @@ fun TodoTopAppBar( } ) { Icon( - imageVector = Icons.Outlined.Delete, + painter = painterResource(R.drawable.ic_delete), contentDescription = stringResource(R.string.action_delete) ) } diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsAbout.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsAbout.kt index 816c6c7..898ba75 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsAbout.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsAbout.kt @@ -7,11 +7,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Balance -import androidx.compose.material.icons.outlined.DeveloperMode -import androidx.compose.material.icons.outlined.Numbers -import androidx.compose.material.icons.outlined.Person4 import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.TopAppBarDefaults @@ -82,7 +77,7 @@ fun SettingsAbout( } SettingsItem( - leadingIcon = Icons.Outlined.Numbers, + leadingIconRes = R.drawable.ic_numbers, title = stringResource(R.string.pref_app_version), description = SystemUtils.getAppVersion(context), onClick = { @@ -98,7 +93,7 @@ fun SettingsAbout( } ) SettingsItem( - leadingIcon = Icons.Outlined.Person4, + leadingIconRes = R.drawable.ic_person_4, title = stringResource(R.string.pref_developer), description = stringResource(R.string.developer_name), onClick = { uriHandler.openUri(Constants.DEVELOPER_GITHUB) } @@ -110,13 +105,13 @@ fun SettingsAbout( onClick = { uriHandler.openUri(Constants.GITHUB_REPO) } ) SettingsItem( - leadingIcon = Icons.Outlined.Balance, + leadingIconRes = R.drawable.ic_balance, title = stringResource(R.string.pref_licence), description = stringResource(R.string.pref_licence_desc), onClick = toLicencePage ) SettingsItem( - leadingIcon = Icons.Outlined.DeveloperMode, + leadingIconRes = R.drawable.ic_code_blocks, title = stringResource(R.string.pref_developer_options), description = stringResource(R.string.pref_developer_options_desc), onClick = toDevPage diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsAppearance.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsAppearance.kt index f534369..f881f59 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsAppearance.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsAppearance.kt @@ -5,8 +5,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.AutoAwesome import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable @@ -60,7 +58,7 @@ fun SettingsAppearance( Settings { SwitchSettingsItem( checked = dynamicColor, - leadingIcon = Icons.Outlined.AutoAwesome, + leadingIconRes = R.drawable.ic_wand_stars, title = stringResource(R.string.pref_appearance_dynamic_color), description = stringResource(R.string.pref_appearance_dynamic_color_desc), onCheckedChange = { scope.launch { DataStoreManager.setDynamicColor(it) } }, diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsData.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsData.kt index fe8d71d..227c668 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsData.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsData.kt @@ -9,11 +9,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Category -import androidx.compose.material.icons.outlined.FileDownload -import androidx.compose.material.icons.outlined.FileUpload -import androidx.compose.material.icons.outlined.RestartAlt import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.SnackbarHost @@ -126,7 +121,7 @@ fun SettingsData( SettingsCategory(stringResource(R.string.pref_category_data_management)) Settings { SettingsItem( - leadingIcon = Icons.Outlined.FileDownload, + leadingIconRes = R.drawable.ic_download, title = stringResource(R.string.pref_backup), description = stringResource(R.string.pref_backup_desc), onClick = { @@ -134,7 +129,7 @@ fun SettingsData( } ) SettingsItem( - leadingIcon = Icons.Outlined.FileUpload, + leadingIconRes = R.drawable.ic_upload, title = stringResource(R.string.pref_restore), description = stringResource(R.string.pref_restore_desc), onClick = { @@ -145,7 +140,7 @@ fun SettingsData( SettingsCategory(stringResource(R.string.pref_category_category_management)) Settings { SettingsItem( - leadingIcon = Icons.Outlined.Category, + leadingIconRes = R.drawable.ic_category, title = stringResource(R.string.pref_category_category_management), description = stringResource(R.string.pref_category_management_desc), onClick = toCategoryManager @@ -155,7 +150,7 @@ fun SettingsData( } ConfirmDialog( visible = showRestoreDialog, - icon = Icons.Outlined.RestartAlt, + iconRes = R.drawable.ic_restart_alt, title = stringResource(R.string.tip_tips), text = stringResource(R.string.tip_restore_success), showDismissButton = false, diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsDataCategory.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsDataCategory.kt index d586fed..38f0e35 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsDataCategory.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsDataCategory.kt @@ -10,8 +10,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Add import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.material3.SnackbarHost @@ -66,7 +64,7 @@ fun SettingsDataCategory( snackbarHost = { SnackbarHost(snackbarHostState) }, floatingActionButton = { TodoFloatingActionButton( - icon = Icons.Outlined.Add, + iconRes = R.drawable.ic_add, text = stringResource(R.string.action_add_category), expanded = isExpanded, onClick = { diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsDeveloperOptions.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsDeveloperOptions.kt index bc888fb..76507d2 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsDeveloperOptions.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsDeveloperOptions.kt @@ -5,8 +5,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Padding import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable @@ -42,7 +40,7 @@ fun SettingsDeveloperOptions( ) { Settings { SettingsItem( - leadingIcon = Icons.Outlined.Padding, + leadingIconRes = R.drawable.ic_padding, title = stringResource(R.string.pref_padding), onClick = toPaddingPage ) diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsInterfaceInteraction.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsInterfaceInteraction.kt index 0936a40..96251d1 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsInterfaceInteraction.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsInterfaceInteraction.kt @@ -5,11 +5,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.outlined.Sort -import androidx.compose.material.icons.outlined.Checklist -import androidx.compose.material.icons.outlined.Shield -import androidx.compose.material.icons.outlined.Vibration import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.TopAppBarDefaults @@ -71,14 +66,14 @@ fun SettingsInterface( SettingsCategory(stringResource(R.string.pref_category_todo_list)) Settings { SwitchSettingsItem( - checked = showCompleted, - leadingIcon = Icons.Outlined.Checklist, + leadingIconRes = R.drawable.ic_checklist, title = stringResource(R.string.pref_show_completed), description = stringResource(R.string.pref_show_completed_desc), + checked = showCompleted, onCheckedChange = { scope.launch { DataStoreManager.setShowCompleted(it) } }, ) SettingsItem( - leadingIcon = Icons.AutoMirrored.Outlined.Sort, + leadingIconRes = R.drawable.ic_sort, title = stringResource(R.string.pref_sorting_method), description = SortingMethod.fromId(sortingMethod).getDisplayName(context), onClick = { showSortingMethodDialog = true } @@ -88,14 +83,14 @@ fun SettingsInterface( Settings { SwitchSettingsItem( checked = secureMode, - leadingIcon = Icons.Outlined.Shield, + leadingIconRes = R.drawable.ic_shield, title = stringResource(R.string.pref_secure_mode), description = stringResource(R.string.pref_secure_mode_desc), onCheckedChange = { scope.launch { DataStoreManager.setSecureMode(it) } } ) SwitchSettingsItem( checked = hapticFeedback, - leadingIcon = Icons.Outlined.Vibration, + leadingIconRes = R.drawable.ic_touch_long, title = stringResource(R.string.pref_haptic_feedback), description = stringResource(R.string.pref_haptic_feedback_desc), onCheckedChange = { scope.launch { DataStoreManager.setHapticFeedback(it) } } diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsMain.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsMain.kt index e19d509..6299153 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsMain.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsMain.kt @@ -5,11 +5,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.ColorLens -import androidx.compose.material.icons.outlined.Dns -import androidx.compose.material.icons.outlined.Info -import androidx.compose.material.icons.outlined.ViewComfy import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.TopAppBarDefaults @@ -49,25 +44,25 @@ fun SettingsMain( ) { Settings { SettingsItem( - leadingIcon = Icons.Outlined.ColorLens, + leadingIconRes = R.drawable.ic_palette, title = stringResource(R.string.pref_appearance), description = stringResource(R.string.pref_appearance_desc), onClick = toAppearancePage ) SettingsItem( - leadingIcon = Icons.Outlined.ViewComfy, + leadingIconRes = R.drawable.ic_view_comfy, title = stringResource(R.string.pref_interface_interaction), description = stringResource(R.string.pref_interface_interaction_desc), onClick = toInterfacePage ) SettingsItem( - leadingIcon = Icons.Outlined.Dns, + leadingIconRes = R.drawable.ic_dns, title = stringResource(R.string.pref_data), description = stringResource(R.string.pref_data_desc), onClick = toDataPage ) SettingsItem( - leadingIcon = Icons.Outlined.Info, + leadingIconRes = R.drawable.ic_info, title = stringResource(R.string.pref_about), description = stringResource(R.string.pref_about_desc), onClick = toAboutPage diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/SettingsItem.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/SettingsItem.kt index a5a4fb0..2a9381e 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/SettingsItem.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/SettingsItem.kt @@ -1,5 +1,6 @@ package cn.super12138.todo.ui.pages.settings.components +import androidx.annotation.DrawableRes import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column @@ -17,13 +18,35 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Shape +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.sp import cn.super12138.todo.ui.TodoDefaults import cn.super12138.todo.utils.VibrationUtils +@Composable +fun SettingsItem( + modifier: Modifier = Modifier, + @DrawableRes leadingIconRes: Int, + title: String, + description: String? = null, + enableClick: Boolean = true, + onClick: () -> Unit = {} +) { + SettingsItem( + leadingIcon = painterResource(leadingIconRes), + title = title, + description = description, + trailingContent = null, + enableClick = enableClick, + onClick = onClick, + modifier = modifier + ) +} + @Composable fun SettingsItem( modifier: Modifier = Modifier, @@ -44,6 +67,38 @@ fun SettingsItem( ) } +@Composable +fun SettingsItem( + modifier: Modifier = Modifier, + leadingIcon: Painter? = null, + title: String, + description: String? = null, + trailingContent: (@Composable () -> Unit)? = null, + background: Color = MaterialTheme.colorScheme.surfaceContainerHigh, + enableClick: Boolean = true, + onClick: () -> Unit = {} +) { + SettingsItem( + leadingIcon = { + leadingIcon?.let { + Icon( + painter = leadingIcon, + contentDescription = null, + tint = MaterialTheme.colorScheme.onSurface, + modifier = Modifier.padding(end = TodoDefaults.settingsItemHorizontalPadding), + ) + } + }, + title = title, + description = description, + trailingContent = trailingContent, + background = background, + enableClick = enableClick, + onClick = onClick, + modifier = modifier + ) +} + @Composable fun SettingsItem( modifier: Modifier = Modifier, diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/SettingsPlainBox.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/SettingsPlainBox.kt index 3e3112c..630a754 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/SettingsPlainBox.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/SettingsPlainBox.kt @@ -6,13 +6,12 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.wrapContentHeight -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Info import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.clearAndSetSemantics import androidx.compose.ui.semantics.contentDescription @@ -37,7 +36,7 @@ fun SettingsPlainBox( ), ) { Icon( - imageVector = Icons.Outlined.Info, + painter = painterResource(R.drawable.ic_info), contentDescription = null ) Spacer(Modifier.size(20.dp)) diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/SwitchSettingsItem.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/SwitchSettingsItem.kt index b0db4d8..dba0e6f 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/SwitchSettingsItem.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/SwitchSettingsItem.kt @@ -1,14 +1,45 @@ package cn.super12138.todo.ui.pages.settings.components +import androidx.annotation.DrawableRes import androidx.compose.foundation.layout.padding import androidx.compose.material3.Switch import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.res.painterResource import cn.super12138.todo.ui.TodoDefaults import cn.super12138.todo.utils.VibrationUtils +@Composable +fun SwitchSettingsItem( + modifier: Modifier = Modifier, + @DrawableRes leadingIconRes: Int, + title: String, + description: String? = null, + checked: Boolean, + onCheckedChange: (Boolean) -> Unit +) { + val view = LocalView.current + SettingsItem( + leadingIcon = painterResource(leadingIconRes), + title = title, + description = description, + trailingContent = { + Switch( + checked = checked, + onCheckedChange = { + VibrationUtils.performHapticFeedback(view) + onCheckedChange(it) + }, + modifier = Modifier.padding(start = TodoDefaults.settingsItemHorizontalPadding / 2) + ) + }, + onClick = { onCheckedChange(!checked) }, + modifier = modifier, + ) +} + @Composable fun SwitchSettingsItem( modifier: Modifier = Modifier, diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/darkmode/DarkModeItem.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/darkmode/DarkModeItem.kt index 53b7843..77e4778 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/darkmode/DarkModeItem.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/darkmode/DarkModeItem.kt @@ -1,5 +1,6 @@ package cn.super12138.todo.ui.pages.settings.components.appearance.darkmode +import androidx.annotation.DrawableRes import androidx.compose.animation.core.animateDpAsState import androidx.compose.foundation.background import androidx.compose.foundation.border @@ -18,15 +19,15 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.res.painterResource import androidx.compose.ui.semantics.Role import androidx.compose.ui.unit.dp import cn.super12138.todo.utils.VibrationUtils @Composable fun DarkModeItem( - icon: ImageVector, + @DrawableRes iconRes: Int, name: String, contentColor: Color, containerColor: Color, @@ -61,7 +62,7 @@ fun DarkModeItem( ), ) { Icon( - imageVector = icon, + painter = painterResource(iconRes), contentDescription = null, tint = contentColor, modifier = Modifier diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/darkmode/DarkModePicker.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/darkmode/DarkModePicker.kt index afaca2e..8cdec0c 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/darkmode/DarkModePicker.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/darkmode/DarkModePicker.kt @@ -44,7 +44,7 @@ fun DarkModePicker( val isSelected by remember { derivedStateOf { currentDarkMode() == it } } DarkModeItem( - icon = it.icon, + iconRes = it.iconRes, name = it.getDisplayName(context), contentColor = contentColor, containerColor = containerColor, diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/category/CategoryDialog.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/category/CategoryDialog.kt index d4ae27f..aa59817 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/category/CategoryDialog.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/category/CategoryDialog.kt @@ -7,8 +7,6 @@ import androidx.compose.foundation.text.input.TextFieldLineLimits import androidx.compose.foundation.text.input.clearText import androidx.compose.foundation.text.input.rememberTextFieldState import androidx.compose.foundation.text.input.setTextAndPlaceCursorAtEnd -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Info import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -19,6 +17,7 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.compose.ui.window.DialogProperties @@ -53,7 +52,7 @@ fun CategoryPromptDialog( BasicDialog( visible = visible, - icon = Icons.Outlined.Info, + painter = painterResource(R.drawable.ic_info), title = stringResource(R.string.tip_tips), text = { // 已经是实现好滚动的Column布局 diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/category/CategoryItem.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/category/CategoryItem.kt index 0ca8269..c858d9f 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/category/CategoryItem.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/category/CategoryItem.kt @@ -5,8 +5,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.wrapContentHeight -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Delete import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -16,6 +14,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import cn.super12138.todo.R @@ -64,7 +63,7 @@ fun CategoryItem( } ) { Icon( - imageVector = Icons.Outlined.Delete, + painter = painterResource(R.drawable.ic_delete), contentDescription = stringResource(R.string.action_delete) ) } diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/theme/DarkMode.kt b/app/src/main/kotlin/cn/super12138/todo/ui/theme/DarkMode.kt index 6eabe08..d63eb4b 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/theme/DarkMode.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/theme/DarkMode.kt @@ -1,20 +1,15 @@ package cn.super12138.todo.ui.theme import android.content.Context -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.DarkMode -import androidx.compose.material.icons.outlined.LightMode -import androidx.compose.material.icons.outlined.SettingsSuggest -import androidx.compose.ui.graphics.vector.ImageVector import cn.super12138.todo.R enum class DarkMode( val id: Int, - val icon: ImageVector + val iconRes: Int ) { - FollowSystem(-1, Icons.Outlined.SettingsSuggest), - Light(1, Icons.Outlined.LightMode), - Dark(2, Icons.Outlined.DarkMode); + FollowSystem(-1, R.drawable.ic_lightbulb_2), + Light(1, R.drawable.ic_light_mode), + Dark(2, R.drawable.ic_dark_mode); fun getDisplayName(context: Context): String { val resId = when (this) { diff --git a/app/src/main/res/drawable/ic_add.xml b/app/src/main/res/drawable/ic_add.xml new file mode 100644 index 0000000..cebf3ad --- /dev/null +++ b/app/src/main/res/drawable/ic_add.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_arrow_back.xml b/app/src/main/res/drawable/ic_arrow_back.xml new file mode 100644 index 0000000..6c86b2c --- /dev/null +++ b/app/src/main/res/drawable/ic_arrow_back.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_balance.xml b/app/src/main/res/drawable/ic_balance.xml new file mode 100644 index 0000000..25d6c7e --- /dev/null +++ b/app/src/main/res/drawable/ic_balance.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_category.xml b/app/src/main/res/drawable/ic_category.xml new file mode 100644 index 0000000..93b5ce7 --- /dev/null +++ b/app/src/main/res/drawable/ic_category.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_check.xml b/app/src/main/res/drawable/ic_check.xml new file mode 100644 index 0000000..93cea1a --- /dev/null +++ b/app/src/main/res/drawable/ic_check.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_checklist.xml b/app/src/main/res/drawable/ic_checklist.xml new file mode 100644 index 0000000..99c104f --- /dev/null +++ b/app/src/main/res/drawable/ic_checklist.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_close.xml b/app/src/main/res/drawable/ic_close.xml new file mode 100644 index 0000000..cbffd83 --- /dev/null +++ b/app/src/main/res/drawable/ic_close.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_code_blocks.xml b/app/src/main/res/drawable/ic_code_blocks.xml new file mode 100644 index 0000000..7206c81 --- /dev/null +++ b/app/src/main/res/drawable/ic_code_blocks.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_dark_mode.xml b/app/src/main/res/drawable/ic_dark_mode.xml new file mode 100644 index 0000000..8f2b331 --- /dev/null +++ b/app/src/main/res/drawable/ic_dark_mode.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_delete.xml b/app/src/main/res/drawable/ic_delete.xml new file mode 100644 index 0000000..2565afc --- /dev/null +++ b/app/src/main/res/drawable/ic_delete.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_dns.xml b/app/src/main/res/drawable/ic_dns.xml new file mode 100644 index 0000000..e6369d5 --- /dev/null +++ b/app/src/main/res/drawable/ic_dns.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_download.xml b/app/src/main/res/drawable/ic_download.xml new file mode 100644 index 0000000..dc9f21c --- /dev/null +++ b/app/src/main/res/drawable/ic_download.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_exit_to_app.xml b/app/src/main/res/drawable/ic_exit_to_app.xml new file mode 100644 index 0000000..df0bec0 --- /dev/null +++ b/app/src/main/res/drawable/ic_exit_to_app.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_info.xml b/app/src/main/res/drawable/ic_info.xml new file mode 100644 index 0000000..f4bbc0a --- /dev/null +++ b/app/src/main/res/drawable/ic_info.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_light_mode.xml b/app/src/main/res/drawable/ic_light_mode.xml new file mode 100644 index 0000000..8710c7d --- /dev/null +++ b/app/src/main/res/drawable/ic_light_mode.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_lightbulb_2.xml b/app/src/main/res/drawable/ic_lightbulb_2.xml new file mode 100644 index 0000000..fc88628 --- /dev/null +++ b/app/src/main/res/drawable/ic_lightbulb_2.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_numbers.xml b/app/src/main/res/drawable/ic_numbers.xml new file mode 100644 index 0000000..87edfe2 --- /dev/null +++ b/app/src/main/res/drawable/ic_numbers.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_padding.xml b/app/src/main/res/drawable/ic_padding.xml new file mode 100644 index 0000000..cfb2acb --- /dev/null +++ b/app/src/main/res/drawable/ic_padding.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_palette.xml b/app/src/main/res/drawable/ic_palette.xml new file mode 100644 index 0000000..719d6a7 --- /dev/null +++ b/app/src/main/res/drawable/ic_palette.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_person_4.xml b/app/src/main/res/drawable/ic_person_4.xml new file mode 100644 index 0000000..8ac355c --- /dev/null +++ b/app/src/main/res/drawable/ic_person_4.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_restart_alt.xml b/app/src/main/res/drawable/ic_restart_alt.xml new file mode 100644 index 0000000..666ce5b --- /dev/null +++ b/app/src/main/res/drawable/ic_restart_alt.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_save.xml b/app/src/main/res/drawable/ic_save.xml new file mode 100644 index 0000000..74a6c61 --- /dev/null +++ b/app/src/main/res/drawable/ic_save.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_select_all.xml b/app/src/main/res/drawable/ic_select_all.xml new file mode 100644 index 0000000..c8fdc8c --- /dev/null +++ b/app/src/main/res/drawable/ic_select_all.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_settings.xml b/app/src/main/res/drawable/ic_settings.xml new file mode 100644 index 0000000..7c2b6bc --- /dev/null +++ b/app/src/main/res/drawable/ic_settings.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_shield.xml b/app/src/main/res/drawable/ic_shield.xml new file mode 100644 index 0000000..b1a91f7 --- /dev/null +++ b/app/src/main/res/drawable/ic_shield.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_sort.xml b/app/src/main/res/drawable/ic_sort.xml new file mode 100644 index 0000000..40a4cc5 --- /dev/null +++ b/app/src/main/res/drawable/ic_sort.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/ic_touch_long.xml b/app/src/main/res/drawable/ic_touch_long.xml new file mode 100644 index 0000000..4c96006 --- /dev/null +++ b/app/src/main/res/drawable/ic_touch_long.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_undo.xml b/app/src/main/res/drawable/ic_undo.xml new file mode 100644 index 0000000..72804c5 --- /dev/null +++ b/app/src/main/res/drawable/ic_undo.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_upload.xml b/app/src/main/res/drawable/ic_upload.xml new file mode 100644 index 0000000..456537a --- /dev/null +++ b/app/src/main/res/drawable/ic_upload.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_view_comfy.xml b/app/src/main/res/drawable/ic_view_comfy.xml new file mode 100644 index 0000000..3ef8519 --- /dev/null +++ b/app/src/main/res/drawable/ic_view_comfy.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_wand_stars.xml b/app/src/main/res/drawable/ic_wand_stars.xml new file mode 100644 index 0000000..b89f58d --- /dev/null +++ b/app/src/main/res/drawable/ic_wand_stars.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0c3f4bc..ec1df71 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -116,4 +116,5 @@ Developer Options Some debugging options, only for DEVELOPMENT use Padding + Selected \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index da7bd7f..6ea1cf7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -8,7 +8,6 @@ datastore = "1.1.7" activityCompose = "1.11.0" composeBom = "2025.11.00" liveData = "1.9.4" -icons = "1.7.8" room = "2.8.3" material3 = "1.5.0-alpha08" adaptive = "1.2.0" @@ -58,8 +57,6 @@ androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-toolin androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } androidx-material3 = { group = "androidx.compose.material3", name = "material3", version.ref = "material3" } -androidx-material-icon-core = { group = "androidx.compose.material", name = "material-icons-core", version.ref = "icons" } -androidx-material-icon-extended = { group = "androidx.compose.material", name = "material-icons-extended", version.ref = "icons" } androidx-navigation3-runtime = { module = "androidx.navigation3:navigation3-runtime", version.ref = "nav3Core" } androidx-navigation3-ui = { module = "androidx.navigation3:navigation3-ui", version.ref = "nav3Core" }