refactor: 优化重构部分代码

This commit is contained in:
Super12138 2025-05-02 12:49:46 +08:00
parent fdc01f2750
commit 9eee5ead8a
22 changed files with 130 additions and 121 deletions

View file

@ -34,7 +34,7 @@ android {
applicationId = "cn.super12138.todo" applicationId = "cn.super12138.todo"
minSdk = 24 minSdk = 24
targetSdk = 36 targetSdk = 36
versionCode = 647 versionCode = 656
versionName = "2.1.2" versionName = "2.1.2"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

View file

@ -22,8 +22,6 @@ enum class Priority(val value: Float) {
} }
companion object { companion object {
fun fromFloat(float: Float): Priority { fun fromFloat(float: Float) = entries.find { it.value == float } ?: Default
return Priority.entries.find { it.value == float } ?: Default
}
} }
} }

View file

@ -4,11 +4,22 @@ import android.content.Context
import cn.super12138.todo.R import cn.super12138.todo.R
enum class SortingMethod(val id: Int) { enum class SortingMethod(val id: Int) {
// 按添加先后顺序
Sequential(1), Sequential(1),
// 按学科
Subject(2), Subject(2),
// 按优先级
Priority(3), Priority(3),
// 按完成情况
Completion(4), Completion(4),
// 按字母升序
AlphabeticalAscending(5), AlphabeticalAscending(5),
// 按字母降序
AlphabeticalDescending(6); AlphabeticalDescending(6);
fun getDisplayName(context: Context): String { fun getDisplayName(context: Context): String {
@ -24,8 +35,6 @@ enum class SortingMethod(val id: Int) {
} }
companion object { companion object {
fun fromId(id: Int): SortingMethod { fun fromId(id: Int) = entries.find { it.id == id } ?: Sequential
return SortingMethod.entries.find { it.id == id } ?: Sequential
}
} }
} }

View file

@ -35,8 +35,6 @@ enum class Subjects(val id: Int) {
companion object { companion object {
// 根据 ID 获取 Subjects // 根据 ID 获取 Subjects
fun fromId(id: Int): Subjects { fun fromId(id: Int) = entries.find { it.id == id } ?: Others
return entries.find { it.id == id } ?: Others
}
} }
} }

View file

@ -12,4 +12,14 @@ object TodoDefaults {
* 待办卡片默认高度 * 待办卡片默认高度
*/ */
val toDoCardHeight = 80.dp val toDoCardHeight = 80.dp
/**
* 设置项水平边距
*/
val settingsItemHorizontalPadding = 24.dp
/**
* 设置项垂直边距
*/
val settingsItemVerticalPadding = 20.dp
} }

View file

@ -13,11 +13,11 @@ import androidx.compose.ui.res.stringResource
import androidx.core.view.WindowCompat import androidx.core.view.WindowCompat
import cn.super12138.todo.R import cn.super12138.todo.R
import cn.super12138.todo.constants.GlobalValues 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.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.PaletteStyle
import cn.super12138.todo.ui.theme.ToDoTheme import cn.super12138.todo.ui.theme.ToDoTheme

View file

@ -15,11 +15,11 @@ import androidx.compose.ui.Modifier
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import androidx.core.view.WindowCompat import androidx.core.view.WindowCompat
import androidx.lifecycle.viewmodel.compose.viewModel 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.components.Konfetti
import cn.super12138.todo.ui.navigation.TodoNavigation 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.theme.ToDoTheme
import cn.super12138.todo.ui.viewmodels.MainViewModel import cn.super12138.todo.ui.viewmodels.MainViewModel

View file

@ -87,7 +87,7 @@ fun TodoEditorPage(
var subjectContent by rememberSaveable { mutableStateOf(toDo?.customSubject ?: "") } var subjectContent by rememberSaveable { mutableStateOf(toDo?.customSubject ?: "") }
var isErrorSubject by rememberSaveable { mutableStateOf(false) } var isErrorSubject by rememberSaveable { mutableStateOf(false) }
var priorityState by rememberSaveable { mutableFloatStateOf(toDo?.priority ?: 0f) } 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 { val isCustomSubject by remember {
derivedStateOf { selectedSubjectId == Subjects.Custom.id } derivedStateOf { selectedSubjectId == Subjects.Custom.id }

View file

@ -49,7 +49,8 @@ fun ManagerFragment(
start = TodoDefaults.screenPadding, start = TodoDefaults.screenPadding,
bottom = TodoDefaults.toDoCardHeight / 2, bottom = TodoDefaults.toDoCardHeight / 2,
end = TodoDefaults.screenPadding end = TodoDefaults.screenPadding
) ),
//verticalArrangement = Arrangement.spacedBy(5.dp)
) { ) {
if (list.isEmpty()) { if (list.isEmpty()) {
item { item {
@ -59,7 +60,6 @@ fun ManagerFragment(
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
modifier = Modifier.fillMaxWidth() modifier = Modifier.fillMaxWidth()
) )
} }
} else { } else {
items( items(

View file

@ -1,18 +1,15 @@
package cn.super12138.todo.ui.pages.settings.components package cn.super12138.todo.ui.pages.settings.components
import androidx.compose.foundation.gestures.FlingBehavior import androidx.compose.foundation.ScrollState
import androidx.compose.foundation.gestures.ScrollableDefaults import androidx.compose.foundation.horizontalScroll
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@ -21,43 +18,38 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import cn.super12138.todo.ui.TodoDefaults
@Composable @Composable
fun RowSettingsItem( fun RowSettingsItem(
modifier: Modifier = Modifier,
leadingIcon: (@Composable () -> Unit)? = null, leadingIcon: (@Composable () -> Unit)? = null,
title: String, title: String,
description: String? = null, description: String? = null,
trailingContent: (@Composable () -> Unit)? = null, trailingContent: (@Composable () -> Unit)? = null,
shape: Shape = MaterialTheme.shapes.large, shape: Shape = MaterialTheme.shapes.large,
modifier: Modifier = Modifier, horizontalArrangement: Arrangement.Horizontal = Arrangement.Start,
state: LazyListState = rememberLazyListState(),
contentPadding: PaddingValues = PaddingValues(0.dp),
reverseLayout: Boolean = false,
horizontalArrangement: Arrangement.Horizontal =
if (!reverseLayout) Arrangement.Start else Arrangement.End,
verticalAlignment: Alignment.Vertical = Alignment.Top, verticalAlignment: Alignment.Vertical = Alignment.Top,
flingBehavior: FlingBehavior = ScrollableDefaults.flingBehavior(), scrollState: ScrollState = rememberScrollState(),
userScrollEnabled: Boolean = true, rowModifier: Modifier = Modifier,
content: LazyListScope.() -> Unit content: @Composable RowScope.() -> Unit
) { ) {
MoreContentSettingsItem( MoreContentSettingsItem(
leadingIcon = leadingIcon, leadingIcon = leadingIcon,
title = title, title = title,
description = description, description = description,
trailingContent = trailingContent, trailingContent = trailingContent,
shape = shape shape = shape,
modifier = modifier
) { ) {
LazyRow( Row(
modifier = Modifier.fillMaxWidth(), modifier = Modifier
state = state, .fillMaxWidth()
contentPadding = contentPadding, .horizontalScroll(scrollState)
reverseLayout = reverseLayout, .then(rowModifier),
horizontalArrangement = horizontalArrangement, horizontalArrangement = horizontalArrangement,
verticalAlignment = verticalAlignment, verticalAlignment = verticalAlignment,
flingBehavior = flingBehavior,
userScrollEnabled = userScrollEnabled,
content = content content = content
) )
} }
@ -65,12 +57,12 @@ fun RowSettingsItem(
@Composable @Composable
fun MoreContentSettingsItem( fun MoreContentSettingsItem(
modifier: Modifier = Modifier,
leadingIcon: (@Composable () -> Unit)? = null, leadingIcon: (@Composable () -> Unit)? = null,
title: String, title: String,
description: String? = null, description: String? = null,
trailingContent: (@Composable () -> Unit)? = null, trailingContent: (@Composable () -> Unit)? = null,
shape: Shape = MaterialTheme.shapes.large, shape: Shape = MaterialTheme.shapes.large,
modifier: Modifier = Modifier,
content: @Composable () -> Unit content: @Composable () -> Unit
) { ) {
Column( Column(
@ -78,7 +70,10 @@ fun MoreContentSettingsItem(
.fillMaxWidth() .fillMaxWidth()
.wrapContentHeight() .wrapContentHeight()
.clip(shape) .clip(shape)
.padding(horizontal = 24.dp, vertical = 20.dp) .padding(
horizontal = TodoDefaults.settingsItemHorizontalPadding,
vertical = TodoDefaults.settingsItemVerticalPadding
)
) { ) {
Row { Row {
leadingIcon?.let { leadingIcon?.let {
@ -111,6 +106,7 @@ fun MoreContentSettingsItem(
it() it()
} }
} }
content() content()
} }
} }

View file

@ -69,7 +69,7 @@ fun RadioItem(
) { ) {
val view = LocalView.current val view = LocalView.current
Row( Row(
Modifier modifier
.fillMaxWidth() .fillMaxWidth()
.height(56.dp) .height(56.dp)
.clip(MaterialTheme.shapes.large) .clip(MaterialTheme.shapes.large)
@ -103,11 +103,11 @@ data class SettingsRadioOptions(
@Composable @Composable
fun SettingsDialog( fun SettingsDialog(
modifier: Modifier = Modifier,
visible: Boolean, visible: Boolean,
title: String, title: String,
text: @Composable (() -> Unit)? = null, text: @Composable (() -> Unit)? = null,
onDismissRequest: () -> Unit = {}, onDismissRequest: () -> Unit = {}
modifier: Modifier = Modifier
) { ) {
BasicDialog( BasicDialog(
visible = visible, visible = visible,

View file

@ -19,16 +19,17 @@ import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import cn.super12138.todo.ui.TodoDefaults
import cn.super12138.todo.utils.VibrationUtils import cn.super12138.todo.utils.VibrationUtils
@Composable @Composable
fun SettingsItem( fun SettingsItem(
modifier: Modifier = Modifier,
leadingIcon: ImageVector? = null, leadingIcon: ImageVector? = null,
title: String, title: String,
description: String? = null, description: String? = null,
enableClick: Boolean = true, enableClick: Boolean = true,
onClick: () -> Unit = {}, onClick: () -> Unit = {}
modifier: Modifier = Modifier
) { ) {
SettingsItem( SettingsItem(
leadingIcon = leadingIcon, leadingIcon = leadingIcon,
@ -43,13 +44,13 @@ fun SettingsItem(
@Composable @Composable
fun SettingsItem( fun SettingsItem(
modifier: Modifier = Modifier,
leadingIcon: ImageVector? = null, leadingIcon: ImageVector? = null,
title: String, title: String,
description: String? = null, description: String? = null,
trailingContent: (@Composable () -> Unit)? = null, trailingContent: (@Composable () -> Unit)? = null,
enableClick: Boolean = true, enableClick: Boolean = true,
onClick: () -> Unit = {}, onClick: () -> Unit = {}
modifier: Modifier = Modifier
) { ) {
SettingsItem( SettingsItem(
leadingIcon = { leadingIcon = {
@ -73,14 +74,14 @@ fun SettingsItem(
@Composable @Composable
fun SettingsItem( fun SettingsItem(
modifier: Modifier = Modifier,
leadingIcon: (@Composable () -> Unit)? = null, leadingIcon: (@Composable () -> Unit)? = null,
title: String, title: String,
description: String? = null, description: String? = null,
trailingContent: (@Composable () -> Unit)? = null, trailingContent: (@Composable () -> Unit)? = null,
shape: Shape = MaterialTheme.shapes.large, shape: Shape = MaterialTheme.shapes.large,
enableClick: Boolean = true, enableClick: Boolean = true,
onClick: () -> Unit = {}, onClick: () -> Unit = {}
modifier: Modifier = Modifier
) { ) {
val view = LocalView.current val view = LocalView.current
Row( Row(
@ -95,7 +96,10 @@ fun SettingsItem(
onClick() onClick()
} }
) )
.padding(horizontal = 24.dp, vertical = 20.dp), .padding(
horizontal = TodoDefaults.settingsItemHorizontalPadding,
vertical = TodoDefaults.settingsItemVerticalPadding
),
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
leadingIcon?.let { leadingIcon?.let {

View file

@ -16,6 +16,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import cn.super12138.todo.R import cn.super12138.todo.R
import cn.super12138.todo.ui.TodoDefaults
@Composable @Composable
fun SettingsPlainBox( fun SettingsPlainBox(
@ -26,7 +27,11 @@ fun SettingsPlainBox(
modifier = modifier modifier = modifier
.fillMaxWidth() .fillMaxWidth()
.wrapContentHeight() .wrapContentHeight()
.padding(start = 24.dp, end = 24.dp, bottom = 20.dp), .padding(
start = TodoDefaults.settingsItemHorizontalPadding,
end = TodoDefaults.settingsItemHorizontalPadding,
bottom = TodoDefaults.settingsItemVerticalPadding
),
) { ) {
Icon( Icon(
imageVector = Icons.Outlined.Info, imageVector = Icons.Outlined.Info,

View file

@ -14,13 +14,13 @@ import cn.super12138.todo.utils.VibrationUtils
@Composable @Composable
fun SwitchSettingsItem( fun SwitchSettingsItem(
modifier: Modifier = Modifier,
key: String, key: String,
default: Boolean, default: Boolean,
leadingIcon: ImageVector? = null, leadingIcon: ImageVector? = null,
title: String, title: String,
description: String? = null, description: String? = null,
onCheckedChange: (Boolean) -> Unit, onCheckedChange: (Boolean) -> Unit
modifier: Modifier = Modifier
) { ) {
val view = LocalView.current val view = LocalView.current
var switchState by rememberPrefBooleanState(key, default) var switchState by rememberPrefBooleanState(key, default)

View file

@ -23,9 +23,9 @@ import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import cn.super12138.todo.R import cn.super12138.todo.R
import cn.super12138.todo.constants.Constants 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.components.MoreContentSettingsItem
import cn.super12138.todo.ui.pages.settings.state.rememberPrefFloatState import cn.super12138.todo.ui.pages.settings.state.rememberPrefFloatState
import cn.super12138.todo.ui.theme.ContrastLevel
import cn.super12138.todo.utils.VibrationUtils import cn.super12138.todo.utils.VibrationUtils
@Composable @Composable

View file

@ -12,9 +12,9 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import cn.super12138.todo.R import cn.super12138.todo.R
import cn.super12138.todo.constants.Constants 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.components.RowSettingsItem
import cn.super12138.todo.ui.pages.settings.state.rememberPrefIntState import cn.super12138.todo.ui.pages.settings.state.rememberPrefIntState
import cn.super12138.todo.ui.theme.DarkMode
@Composable @Composable
fun DarkModePicker( fun DarkModePicker(
@ -33,48 +33,43 @@ fun DarkModePicker(
RowSettingsItem( RowSettingsItem(
title = stringResource(R.string.pref_dark_mode), title = stringResource(R.string.pref_dark_mode),
description = stringResource(R.string.pref_dark_mode_desc), description = stringResource(R.string.pref_dark_mode_desc),
horizontalArrangement = Arrangement.spacedBy(5.dp) horizontalArrangement = Arrangement.spacedBy(5.dp),
modifier = modifier
) { ) {
item { DarkModeItem(
DarkModeItem( icon = DarkMode.FollowSystem.icon,
icon = DarkMode.FollowSystem.icon, contentDescription = DarkMode.FollowSystem.getDisplayName(context),
contentDescription = DarkMode.FollowSystem.getDisplayName(context), contentColor = if (isInDarkTheme) Color.White else Color.Black,
contentColor = if (isInDarkTheme) Color.White else Color.Black, containerColor = if (isInDarkTheme) Color.Black else Color.White,
containerColor = if (isInDarkTheme) Color.Black else Color.White, selected = DarkMode.fromId(darkModeState) == DarkMode.FollowSystem,
selected = DarkMode.fromId(darkModeState) == DarkMode.FollowSystem, onSelect = {
onSelect = { darkModeState = DarkMode.FollowSystem.id
darkModeState = DarkMode.FollowSystem.id onDarkModeChange(DarkMode.FollowSystem)
onDarkModeChange(DarkMode.FollowSystem) }
} )
)
}
item { DarkModeItem(
DarkModeItem( icon = DarkMode.Light.icon,
icon = DarkMode.Light.icon, contentDescription = DarkMode.Light.getDisplayName(context),
contentDescription = DarkMode.Light.getDisplayName(context), contentColor = Color.Black,
contentColor = Color.Black, containerColor = Color.White,
containerColor = Color.White, selected = DarkMode.fromId(darkModeState) == DarkMode.Light,
selected = DarkMode.fromId(darkModeState) == DarkMode.Light, onSelect = {
onSelect = { darkModeState = DarkMode.Light.id
darkModeState = DarkMode.Light.id onDarkModeChange(DarkMode.Light)
onDarkModeChange(DarkMode.Light) }
} )
)
}
item { DarkModeItem(
DarkModeItem( icon = DarkMode.Dark.icon,
icon = DarkMode.Dark.icon, contentDescription = DarkMode.Dark.getDisplayName(context),
contentDescription = DarkMode.Dark.getDisplayName(context), contentColor = Color.White,
contentColor = Color.White, containerColor = Color.Black,
containerColor = Color.Black, selected = DarkMode.fromId(darkModeState) == DarkMode.Dark,
selected = DarkMode.fromId(darkModeState) == DarkMode.Dark, onSelect = {
onSelect = { darkModeState = DarkMode.Dark.id
darkModeState = DarkMode.Dark.id onDarkModeChange(DarkMode.Dark)
onDarkModeChange(DarkMode.Dark) }
} )
)
}
} }
} }

View file

@ -29,7 +29,7 @@ import androidx.compose.ui.semantics.Role
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEach
import cn.super12138.todo.constants.GlobalValues 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.PaletteStyle
import cn.super12138.todo.ui.theme.dynamicColorScheme import cn.super12138.todo.ui.theme.dynamicColorScheme
import cn.super12138.todo.utils.VibrationUtils import cn.super12138.todo.utils.VibrationUtils
@ -45,8 +45,9 @@ fun PaletteItem(
) { ) {
val view = LocalView.current val view = LocalView.current
val context = LocalContext.current val context = LocalContext.current
Column( Column(
modifier = Modifier modifier = modifier
.width(90.dp) .width(90.dp)
.clip(MaterialTheme.shapes.large) .clip(MaterialTheme.shapes.large)
.clickable( .clickable(

View file

@ -2,7 +2,6 @@ package cn.super12138.todo.ui.pages.settings.components.appearance.palette
import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.lazy.items
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
@ -12,10 +11,10 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import cn.super12138.todo.R import cn.super12138.todo.R
import cn.super12138.todo.constants.Constants 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.components.RowSettingsItem
import cn.super12138.todo.ui.pages.settings.state.rememberPrefIntState 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 import cn.super12138.todo.ui.theme.PaletteStyle
@Composable @Composable
@ -40,7 +39,7 @@ fun PalettePicker(
horizontalArrangement = Arrangement.spacedBy(5.dp), horizontalArrangement = Arrangement.spacedBy(5.dp),
modifier = modifier modifier = modifier
) { ) {
items(items = paletteOptions, key = { it.id }) { paletteStyle -> paletteOptions.forEach { paletteStyle ->
PaletteItem( PaletteItem(
isDark = when (isDarkMode) { isDark = when (isDarkMode) {
DarkMode.FollowSystem -> isSystemInDarkTheme() DarkMode.FollowSystem -> isSystemInDarkTheme()

View file

@ -1,4 +1,4 @@
package cn.super12138.todo.logic.model package cn.super12138.todo.ui.theme
enum class ContrastLevel(val value: Float) { enum class ContrastLevel(val value: Float) {
VeryLow(-1f), VeryLow(-1f),
@ -19,8 +19,6 @@ enum class ContrastLevel(val value: Float) {
}*/ }*/
companion object { companion object {
fun fromFloat(float: Float): ContrastLevel { fun fromFloat(float: Float) = entries.find { it.value == float } ?: Default
return ContrastLevel.entries.find { it.value == float } ?: Default
}
} }
} }

View file

@ -1,4 +1,4 @@
package cn.super12138.todo.logic.model package cn.super12138.todo.ui.theme
import android.content.Context import android.content.Context
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
@ -26,8 +26,6 @@ enum class DarkMode(
} }
companion object { companion object {
fun fromId(id: Int): DarkMode { fun fromId(id: Int) = entries.find { it.id == id } ?: FollowSystem
return DarkMode.entries.find { it.id == id } ?: FollowSystem
}
} }
} }

View file

@ -30,8 +30,6 @@ enum class PaletteStyle(val id: Int) {
} }
companion object { companion object {
fun fromId(id: Int): PaletteStyle { fun fromId(id: Int) = entries.firstOrNull { it.id == id } ?: TonalSpot
return PaletteStyle.entries.find { it.id == id } ?: TonalSpot
}
} }
} }

View file

@ -12,9 +12,9 @@ import cn.super12138.todo.constants.Constants
import cn.super12138.todo.constants.GlobalValues import cn.super12138.todo.constants.GlobalValues
import cn.super12138.todo.logic.Repository import cn.super12138.todo.logic.Repository
import cn.super12138.todo.logic.database.TodoEntity 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.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.ui.theme.PaletteStyle
import cn.super12138.todo.utils.FileUtils import cn.super12138.todo.utils.FileUtils
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers