diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 399dedb..88cee30 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -34,7 +34,7 @@ android { applicationId = "cn.super12138.todo" minSdk = 24 targetSdk = 36 - versionCode = 647 + versionCode = 656 versionName = "2.1.2" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/kotlin/cn/super12138/todo/logic/model/Priority.kt b/app/src/main/kotlin/cn/super12138/todo/logic/model/Priority.kt index 92abf72..395cbe1 100644 --- a/app/src/main/kotlin/cn/super12138/todo/logic/model/Priority.kt +++ b/app/src/main/kotlin/cn/super12138/todo/logic/model/Priority.kt @@ -22,8 +22,6 @@ enum class Priority(val value: Float) { } companion object { - fun fromFloat(float: Float): Priority { - return Priority.entries.find { it.value == float } ?: Default - } + fun fromFloat(float: Float) = entries.find { it.value == float } ?: Default } } \ No newline at end of file diff --git a/app/src/main/kotlin/cn/super12138/todo/logic/model/SortingMethod.kt b/app/src/main/kotlin/cn/super12138/todo/logic/model/SortingMethod.kt index dff0552..c2e44c5 100644 --- a/app/src/main/kotlin/cn/super12138/todo/logic/model/SortingMethod.kt +++ b/app/src/main/kotlin/cn/super12138/todo/logic/model/SortingMethod.kt @@ -4,11 +4,22 @@ import android.content.Context import cn.super12138.todo.R enum class SortingMethod(val id: Int) { + // 按添加先后顺序 Sequential(1), + + // 按学科 Subject(2), + + // 按优先级 Priority(3), + + // 按完成情况 Completion(4), + + // 按字母升序 AlphabeticalAscending(5), + + // 按字母降序 AlphabeticalDescending(6); fun getDisplayName(context: Context): String { @@ -24,8 +35,6 @@ enum class SortingMethod(val id: Int) { } companion object { - fun fromId(id: Int): SortingMethod { - return SortingMethod.entries.find { it.id == id } ?: Sequential - } + fun fromId(id: Int) = entries.find { it.id == id } ?: Sequential } } \ No newline at end of file diff --git a/app/src/main/kotlin/cn/super12138/todo/logic/model/Subjects.kt b/app/src/main/kotlin/cn/super12138/todo/logic/model/Subjects.kt index 8a0b8cf..df097ff 100644 --- a/app/src/main/kotlin/cn/super12138/todo/logic/model/Subjects.kt +++ b/app/src/main/kotlin/cn/super12138/todo/logic/model/Subjects.kt @@ -35,8 +35,6 @@ enum class Subjects(val id: Int) { companion object { // 根据 ID 获取 Subjects - fun fromId(id: Int): Subjects { - return entries.find { it.id == id } ?: Others - } + fun fromId(id: Int) = entries.find { it.id == id } ?: Others } } \ No newline at end of file diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/TodoDefaults.kt b/app/src/main/kotlin/cn/super12138/todo/ui/TodoDefaults.kt index 8a72b54..2a66eb9 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/TodoDefaults.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/TodoDefaults.kt @@ -12,4 +12,14 @@ object TodoDefaults { * 待办卡片默认高度 */ val toDoCardHeight = 80.dp + + /** + * 设置项水平边距 + */ + val settingsItemHorizontalPadding = 24.dp + + /** + * 设置项垂直边距 + */ + val settingsItemVerticalPadding = 20.dp } \ No newline at end of file diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/activities/CrashActivity.kt b/app/src/main/kotlin/cn/super12138/todo/ui/activities/CrashActivity.kt index 5450dfa..942efd6 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/activities/CrashActivity.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/activities/CrashActivity.kt @@ -13,11 +13,11 @@ import androidx.compose.ui.res.stringResource import androidx.core.view.WindowCompat import cn.super12138.todo.R import cn.super12138.todo.constants.GlobalValues -import cn.super12138.todo.logic.model.DarkMode -import cn.super12138.todo.logic.model.DarkMode.Dark -import cn.super12138.todo.logic.model.DarkMode.FollowSystem -import cn.super12138.todo.logic.model.DarkMode.Light import cn.super12138.todo.ui.pages.crash.CrashPage +import cn.super12138.todo.ui.theme.DarkMode +import cn.super12138.todo.ui.theme.DarkMode.Dark +import cn.super12138.todo.ui.theme.DarkMode.FollowSystem +import cn.super12138.todo.ui.theme.DarkMode.Light import cn.super12138.todo.ui.theme.PaletteStyle import cn.super12138.todo.ui.theme.ToDoTheme diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/activities/MainActivity.kt b/app/src/main/kotlin/cn/super12138/todo/ui/activities/MainActivity.kt index e3a94ab..db98f7a 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/activities/MainActivity.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/activities/MainActivity.kt @@ -15,11 +15,11 @@ import androidx.compose.ui.Modifier import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import androidx.core.view.WindowCompat import androidx.lifecycle.viewmodel.compose.viewModel -import cn.super12138.todo.logic.model.DarkMode.Dark -import cn.super12138.todo.logic.model.DarkMode.FollowSystem -import cn.super12138.todo.logic.model.DarkMode.Light import cn.super12138.todo.ui.components.Konfetti import cn.super12138.todo.ui.navigation.TodoNavigation +import cn.super12138.todo.ui.theme.DarkMode.Dark +import cn.super12138.todo.ui.theme.DarkMode.FollowSystem +import cn.super12138.todo.ui.theme.DarkMode.Light import cn.super12138.todo.ui.theme.ToDoTheme import cn.super12138.todo.ui.viewmodels.MainViewModel 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 75cd940..8b57894 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 @@ -87,7 +87,7 @@ fun TodoEditorPage( var subjectContent by rememberSaveable { mutableStateOf(toDo?.customSubject ?: "") } var isErrorSubject by rememberSaveable { mutableStateOf(false) } var priorityState by rememberSaveable { mutableFloatStateOf(toDo?.priority ?: 0f) } - var completedSwitchState by rememberSaveable { mutableStateOf(toDo?.isCompleted ?: false) } + var completedSwitchState by rememberSaveable { mutableStateOf(toDo?.isCompleted == true) } val isCustomSubject by remember { derivedStateOf { selectedSubjectId == Subjects.Custom.id } diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/ManagerFragment.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/ManagerFragment.kt index e93fbbf..19c58a8 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/ManagerFragment.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/ManagerFragment.kt @@ -49,7 +49,8 @@ fun ManagerFragment( start = TodoDefaults.screenPadding, bottom = TodoDefaults.toDoCardHeight / 2, end = TodoDefaults.screenPadding - ) + ), + //verticalArrangement = Arrangement.spacedBy(5.dp) ) { if (list.isEmpty()) { item { @@ -59,7 +60,6 @@ fun ManagerFragment( textAlign = TextAlign.Center, modifier = Modifier.fillMaxWidth() ) - } } else { items( diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/RowSettingsItem.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/RowSettingsItem.kt index 3dccbd5..04f84f8 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/RowSettingsItem.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/RowSettingsItem.kt @@ -1,18 +1,15 @@ package cn.super12138.todo.ui.pages.settings.components -import androidx.compose.foundation.gestures.FlingBehavior -import androidx.compose.foundation.gestures.ScrollableDefaults +import androidx.compose.foundation.ScrollState +import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.wrapContentHeight -import androidx.compose.foundation.lazy.LazyListScope -import androidx.compose.foundation.lazy.LazyListState -import androidx.compose.foundation.lazy.LazyRow -import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.rememberScrollState import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -21,43 +18,38 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Shape import androidx.compose.ui.text.style.TextOverflow -import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import cn.super12138.todo.ui.TodoDefaults @Composable fun RowSettingsItem( + modifier: Modifier = Modifier, leadingIcon: (@Composable () -> Unit)? = null, title: String, description: String? = null, trailingContent: (@Composable () -> Unit)? = null, shape: Shape = MaterialTheme.shapes.large, - modifier: Modifier = Modifier, - state: LazyListState = rememberLazyListState(), - contentPadding: PaddingValues = PaddingValues(0.dp), - reverseLayout: Boolean = false, - horizontalArrangement: Arrangement.Horizontal = - if (!reverseLayout) Arrangement.Start else Arrangement.End, + horizontalArrangement: Arrangement.Horizontal = Arrangement.Start, verticalAlignment: Alignment.Vertical = Alignment.Top, - flingBehavior: FlingBehavior = ScrollableDefaults.flingBehavior(), - userScrollEnabled: Boolean = true, - content: LazyListScope.() -> Unit + scrollState: ScrollState = rememberScrollState(), + rowModifier: Modifier = Modifier, + content: @Composable RowScope.() -> Unit ) { MoreContentSettingsItem( leadingIcon = leadingIcon, title = title, description = description, trailingContent = trailingContent, - shape = shape + shape = shape, + modifier = modifier ) { - LazyRow( - modifier = Modifier.fillMaxWidth(), - state = state, - contentPadding = contentPadding, - reverseLayout = reverseLayout, + Row( + modifier = Modifier + .fillMaxWidth() + .horizontalScroll(scrollState) + .then(rowModifier), horizontalArrangement = horizontalArrangement, verticalAlignment = verticalAlignment, - flingBehavior = flingBehavior, - userScrollEnabled = userScrollEnabled, content = content ) } @@ -65,12 +57,12 @@ fun RowSettingsItem( @Composable fun MoreContentSettingsItem( + modifier: Modifier = Modifier, leadingIcon: (@Composable () -> Unit)? = null, title: String, description: String? = null, trailingContent: (@Composable () -> Unit)? = null, shape: Shape = MaterialTheme.shapes.large, - modifier: Modifier = Modifier, content: @Composable () -> Unit ) { Column( @@ -78,7 +70,10 @@ fun MoreContentSettingsItem( .fillMaxWidth() .wrapContentHeight() .clip(shape) - .padding(horizontal = 24.dp, vertical = 20.dp) + .padding( + horizontal = TodoDefaults.settingsItemHorizontalPadding, + vertical = TodoDefaults.settingsItemVerticalPadding + ) ) { Row { leadingIcon?.let { @@ -111,6 +106,7 @@ fun MoreContentSettingsItem( it() } } + content() } } \ No newline at end of file diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/SettingsDialogs.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/SettingsDialogs.kt index 09fc01b..24d8f04 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/SettingsDialogs.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/SettingsDialogs.kt @@ -69,7 +69,7 @@ fun RadioItem( ) { val view = LocalView.current Row( - Modifier + modifier .fillMaxWidth() .height(56.dp) .clip(MaterialTheme.shapes.large) @@ -103,11 +103,11 @@ data class SettingsRadioOptions( @Composable fun SettingsDialog( + modifier: Modifier = Modifier, visible: Boolean, title: String, text: @Composable (() -> Unit)? = null, - onDismissRequest: () -> Unit = {}, - modifier: Modifier = Modifier + onDismissRequest: () -> Unit = {} ) { BasicDialog( visible = visible, 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 e36af7e..08e43e5 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 @@ -19,16 +19,17 @@ import androidx.compose.ui.platform.LocalView import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import cn.super12138.todo.ui.TodoDefaults import cn.super12138.todo.utils.VibrationUtils @Composable fun SettingsItem( + modifier: Modifier = Modifier, leadingIcon: ImageVector? = null, title: String, description: String? = null, enableClick: Boolean = true, - onClick: () -> Unit = {}, - modifier: Modifier = Modifier + onClick: () -> Unit = {} ) { SettingsItem( leadingIcon = leadingIcon, @@ -43,13 +44,13 @@ fun SettingsItem( @Composable fun SettingsItem( + modifier: Modifier = Modifier, leadingIcon: ImageVector? = null, title: String, description: String? = null, trailingContent: (@Composable () -> Unit)? = null, enableClick: Boolean = true, - onClick: () -> Unit = {}, - modifier: Modifier = Modifier + onClick: () -> Unit = {} ) { SettingsItem( leadingIcon = { @@ -73,14 +74,14 @@ fun SettingsItem( @Composable fun SettingsItem( + modifier: Modifier = Modifier, leadingIcon: (@Composable () -> Unit)? = null, title: String, description: String? = null, trailingContent: (@Composable () -> Unit)? = null, shape: Shape = MaterialTheme.shapes.large, enableClick: Boolean = true, - onClick: () -> Unit = {}, - modifier: Modifier = Modifier + onClick: () -> Unit = {} ) { val view = LocalView.current Row( @@ -95,7 +96,10 @@ fun SettingsItem( onClick() } ) - .padding(horizontal = 24.dp, vertical = 20.dp), + .padding( + horizontal = TodoDefaults.settingsItemHorizontalPadding, + vertical = TodoDefaults.settingsItemVerticalPadding + ), verticalAlignment = Alignment.CenterVertically ) { leadingIcon?.let { 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 50b9cf6..fc532d1 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 @@ -16,6 +16,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import cn.super12138.todo.R +import cn.super12138.todo.ui.TodoDefaults @Composable fun SettingsPlainBox( @@ -26,7 +27,11 @@ fun SettingsPlainBox( modifier = modifier .fillMaxWidth() .wrapContentHeight() - .padding(start = 24.dp, end = 24.dp, bottom = 20.dp), + .padding( + start = TodoDefaults.settingsItemHorizontalPadding, + end = TodoDefaults.settingsItemHorizontalPadding, + bottom = TodoDefaults.settingsItemVerticalPadding + ), ) { Icon( imageVector = Icons.Outlined.Info, 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 3a31e33..30b6e2e 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 @@ -14,13 +14,13 @@ import cn.super12138.todo.utils.VibrationUtils @Composable fun SwitchSettingsItem( + modifier: Modifier = Modifier, key: String, default: Boolean, leadingIcon: ImageVector? = null, title: String, description: String? = null, - onCheckedChange: (Boolean) -> Unit, - modifier: Modifier = Modifier + onCheckedChange: (Boolean) -> Unit ) { val view = LocalView.current var switchState by rememberPrefBooleanState(key, default) diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/contrast/ContrastPicker.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/contrast/ContrastPicker.kt index 52c9c95..3430b8c 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/contrast/ContrastPicker.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/contrast/ContrastPicker.kt @@ -23,9 +23,9 @@ import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp import cn.super12138.todo.R import cn.super12138.todo.constants.Constants -import cn.super12138.todo.logic.model.ContrastLevel import cn.super12138.todo.ui.pages.settings.components.MoreContentSettingsItem import cn.super12138.todo.ui.pages.settings.state.rememberPrefFloatState +import cn.super12138.todo.ui.theme.ContrastLevel import cn.super12138.todo.utils.VibrationUtils @Composable 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 9025742..3544cff 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 @@ -12,9 +12,9 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import cn.super12138.todo.R import cn.super12138.todo.constants.Constants -import cn.super12138.todo.logic.model.DarkMode import cn.super12138.todo.ui.pages.settings.components.RowSettingsItem import cn.super12138.todo.ui.pages.settings.state.rememberPrefIntState +import cn.super12138.todo.ui.theme.DarkMode @Composable fun DarkModePicker( @@ -33,48 +33,43 @@ fun DarkModePicker( RowSettingsItem( title = stringResource(R.string.pref_dark_mode), description = stringResource(R.string.pref_dark_mode_desc), - horizontalArrangement = Arrangement.spacedBy(5.dp) + horizontalArrangement = Arrangement.spacedBy(5.dp), + modifier = modifier ) { - item { - DarkModeItem( - icon = DarkMode.FollowSystem.icon, - contentDescription = DarkMode.FollowSystem.getDisplayName(context), - contentColor = if (isInDarkTheme) Color.White else Color.Black, - containerColor = if (isInDarkTheme) Color.Black else Color.White, - selected = DarkMode.fromId(darkModeState) == DarkMode.FollowSystem, - onSelect = { - darkModeState = DarkMode.FollowSystem.id - onDarkModeChange(DarkMode.FollowSystem) - } - ) - } + DarkModeItem( + icon = DarkMode.FollowSystem.icon, + contentDescription = DarkMode.FollowSystem.getDisplayName(context), + contentColor = if (isInDarkTheme) Color.White else Color.Black, + containerColor = if (isInDarkTheme) Color.Black else Color.White, + selected = DarkMode.fromId(darkModeState) == DarkMode.FollowSystem, + onSelect = { + darkModeState = DarkMode.FollowSystem.id + onDarkModeChange(DarkMode.FollowSystem) + } + ) - item { - DarkModeItem( - icon = DarkMode.Light.icon, - contentDescription = DarkMode.Light.getDisplayName(context), - contentColor = Color.Black, - containerColor = Color.White, - selected = DarkMode.fromId(darkModeState) == DarkMode.Light, - onSelect = { - darkModeState = DarkMode.Light.id - onDarkModeChange(DarkMode.Light) - } - ) - } + DarkModeItem( + icon = DarkMode.Light.icon, + contentDescription = DarkMode.Light.getDisplayName(context), + contentColor = Color.Black, + containerColor = Color.White, + selected = DarkMode.fromId(darkModeState) == DarkMode.Light, + onSelect = { + darkModeState = DarkMode.Light.id + onDarkModeChange(DarkMode.Light) + } + ) - item { - DarkModeItem( - icon = DarkMode.Dark.icon, - contentDescription = DarkMode.Dark.getDisplayName(context), - contentColor = Color.White, - containerColor = Color.Black, - selected = DarkMode.fromId(darkModeState) == DarkMode.Dark, - onSelect = { - darkModeState = DarkMode.Dark.id - onDarkModeChange(DarkMode.Dark) - } - ) - } + DarkModeItem( + icon = DarkMode.Dark.icon, + contentDescription = DarkMode.Dark.getDisplayName(context), + contentColor = Color.White, + containerColor = Color.Black, + selected = DarkMode.fromId(darkModeState) == DarkMode.Dark, + onSelect = { + darkModeState = DarkMode.Dark.id + onDarkModeChange(DarkMode.Dark) + } + ) } } \ No newline at end of file diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/palette/PaletteItem.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/palette/PaletteItem.kt index 859d7fb..3068a3e 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/palette/PaletteItem.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/palette/PaletteItem.kt @@ -29,7 +29,7 @@ import androidx.compose.ui.semantics.Role import androidx.compose.ui.unit.dp import androidx.compose.ui.util.fastForEach import cn.super12138.todo.constants.GlobalValues -import cn.super12138.todo.logic.model.ContrastLevel +import cn.super12138.todo.ui.theme.ContrastLevel import cn.super12138.todo.ui.theme.PaletteStyle import cn.super12138.todo.ui.theme.dynamicColorScheme import cn.super12138.todo.utils.VibrationUtils @@ -45,8 +45,9 @@ fun PaletteItem( ) { val view = LocalView.current val context = LocalContext.current + Column( - modifier = Modifier + modifier = modifier .width(90.dp) .clip(MaterialTheme.shapes.large) .clickable( diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/palette/PalettePicker.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/palette/PalettePicker.kt index d2a14dd..83e2993 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/palette/PalettePicker.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/appearance/palette/PalettePicker.kt @@ -2,7 +2,6 @@ package cn.super12138.todo.ui.pages.settings.components.appearance.palette import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.lazy.items import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.remember @@ -12,10 +11,10 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import cn.super12138.todo.R import cn.super12138.todo.constants.Constants -import cn.super12138.todo.logic.model.ContrastLevel -import cn.super12138.todo.logic.model.DarkMode import cn.super12138.todo.ui.pages.settings.components.RowSettingsItem import cn.super12138.todo.ui.pages.settings.state.rememberPrefIntState +import cn.super12138.todo.ui.theme.ContrastLevel +import cn.super12138.todo.ui.theme.DarkMode import cn.super12138.todo.ui.theme.PaletteStyle @Composable @@ -40,7 +39,7 @@ fun PalettePicker( horizontalArrangement = Arrangement.spacedBy(5.dp), modifier = modifier ) { - items(items = paletteOptions, key = { it.id }) { paletteStyle -> + paletteOptions.forEach { paletteStyle -> PaletteItem( isDark = when (isDarkMode) { DarkMode.FollowSystem -> isSystemInDarkTheme() diff --git a/app/src/main/kotlin/cn/super12138/todo/logic/model/ContrastLevel.kt b/app/src/main/kotlin/cn/super12138/todo/ui/theme/ContrastLevel.kt similarity index 74% rename from app/src/main/kotlin/cn/super12138/todo/logic/model/ContrastLevel.kt rename to app/src/main/kotlin/cn/super12138/todo/ui/theme/ContrastLevel.kt index 3943096..adc1e25 100644 --- a/app/src/main/kotlin/cn/super12138/todo/logic/model/ContrastLevel.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/theme/ContrastLevel.kt @@ -1,4 +1,4 @@ -package cn.super12138.todo.logic.model +package cn.super12138.todo.ui.theme enum class ContrastLevel(val value: Float) { VeryLow(-1f), @@ -19,8 +19,6 @@ enum class ContrastLevel(val value: Float) { }*/ companion object { - fun fromFloat(float: Float): ContrastLevel { - return ContrastLevel.entries.find { it.value == float } ?: Default - } + fun fromFloat(float: Float) = entries.find { it.value == float } ?: Default } } \ No newline at end of file diff --git a/app/src/main/kotlin/cn/super12138/todo/logic/model/DarkMode.kt b/app/src/main/kotlin/cn/super12138/todo/ui/theme/DarkMode.kt similarity index 84% rename from app/src/main/kotlin/cn/super12138/todo/logic/model/DarkMode.kt rename to app/src/main/kotlin/cn/super12138/todo/ui/theme/DarkMode.kt index 7bd0cc7..6eabe08 100644 --- a/app/src/main/kotlin/cn/super12138/todo/logic/model/DarkMode.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/theme/DarkMode.kt @@ -1,4 +1,4 @@ -package cn.super12138.todo.logic.model +package cn.super12138.todo.ui.theme import android.content.Context import androidx.compose.material.icons.Icons @@ -26,8 +26,6 @@ enum class DarkMode( } companion object { - fun fromId(id: Int): DarkMode { - return DarkMode.entries.find { it.id == id } ?: FollowSystem - } + fun fromId(id: Int) = entries.find { it.id == id } ?: FollowSystem } } \ No newline at end of file diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/theme/PaletteStyle.kt b/app/src/main/kotlin/cn/super12138/todo/ui/theme/PaletteStyle.kt index 1205ff2..c112917 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/theme/PaletteStyle.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/theme/PaletteStyle.kt @@ -30,8 +30,6 @@ enum class PaletteStyle(val id: Int) { } companion object { - fun fromId(id: Int): PaletteStyle { - return PaletteStyle.entries.find { it.id == id } ?: TonalSpot - } + fun fromId(id: Int) = entries.firstOrNull { it.id == id } ?: TonalSpot } } \ No newline at end of file diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/viewmodels/MainViewModel.kt b/app/src/main/kotlin/cn/super12138/todo/ui/viewmodels/MainViewModel.kt index 2e96286..159d680 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/viewmodels/MainViewModel.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/viewmodels/MainViewModel.kt @@ -12,9 +12,9 @@ import cn.super12138.todo.constants.Constants import cn.super12138.todo.constants.GlobalValues import cn.super12138.todo.logic.Repository import cn.super12138.todo.logic.database.TodoEntity -import cn.super12138.todo.logic.model.ContrastLevel -import cn.super12138.todo.logic.model.DarkMode import cn.super12138.todo.logic.model.SortingMethod +import cn.super12138.todo.ui.theme.ContrastLevel +import cn.super12138.todo.ui.theme.DarkMode import cn.super12138.todo.ui.theme.PaletteStyle import cn.super12138.todo.utils.FileUtils import kotlinx.coroutines.Dispatchers