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" }