refactor: 优化学科的存储方式

This commit is contained in:
Super12138 2025-01-12 12:11:43 +08:00
parent 88dfabfa9c
commit d19311b6bf
8 changed files with 73 additions and 34 deletions

View file

@ -7,7 +7,7 @@ import androidx.room.PrimaryKey
@Entity(tableName = "todo")
data class TodoEntity(
@ColumnInfo(name = "content") val content: String,
@ColumnInfo(name = "subject") val subject: String,
@ColumnInfo(name = "subject") val subject: Int,
@ColumnInfo(name = "completed") val isCompleted: Boolean = false,
@PrimaryKey(autoGenerate = true) @ColumnInfo(name = "id") val id: Int = 0,
)

View file

@ -0,0 +1,40 @@
package cn.super12138.todo.logic.model
import android.content.Context
import cn.super12138.todo.R
enum class Subjects(val id: Int) {
Chinese(0),
Math(1),
English(2),
Biology(3),
Geography(4),
Physics(5),
Moral(6),
Chemistry(7),
History(8),
Others(99);
fun getDisplayName(context: Context): String {
val resId = when (this) {
Chinese -> R.string.subject_chinese
Math -> R.string.subject_math
English -> R.string.subject_english
Biology -> R.string.subject_biology
Geography -> R.string.subject_geography
Physics -> R.string.subject_physics
Moral -> R.string.subject_moral
Chemistry -> R.string.subject_chemistry
History -> R.string.subject_history
Others -> R.string.subject_others
}
return context.getString(resId) // 返回资源中的文本
}
companion object {
// 根据 ID 获取 Subjects
fun fromId(id: Int): Subjects {
return entries.find { it.id == id } ?: Others
}
}
}

View file

@ -13,10 +13,12 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import cn.super12138.todo.R
import cn.super12138.todo.logic.database.TodoEntity
import cn.super12138.todo.logic.model.Subjects
import cn.super12138.todo.ui.pages.main.components.TodoCard
@Composable
@ -27,6 +29,7 @@ fun ManagerFragment(
onItemChecked: (TodoEntity) -> Unit = {},
modifier: Modifier = Modifier
) {
val context = LocalContext.current
LazyColumn(
modifier = modifier,
state = state,
@ -55,7 +58,7 @@ fun ManagerFragment(
) { item ->
TodoCard(
content = item.content,
subject = item.subject,
subject = Subjects.fromId(item.subject).getDisplayName(context),
onCardClick = { onItemClick(item) },
onChecked = { onItemChecked(item) },
modifier = Modifier

View file

@ -30,6 +30,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import cn.super12138.todo.R
import cn.super12138.todo.logic.database.TodoEntity
import cn.super12138.todo.logic.model.Subjects
import cn.super12138.todo.ui.pages.main.components.FilterChipGroup
@OptIn(ExperimentalMaterial3Api::class)
@ -76,7 +77,11 @@ fun TodoBottomSheet(
Spacer(Modifier.size(5.dp))
val subjects = remember { context.resources.getStringArray(R.array.subjects).toList() }
val subjects = remember {
Subjects.entries.map {
it.getDisplayName(context)
}
}
var selectedItemIndex by rememberSaveable { mutableIntStateOf(0) }
FilterChipGroup(
items = subjects,
@ -85,6 +90,7 @@ fun TodoBottomSheet(
},
modifier = Modifier.fillMaxWidth()
)
Spacer(Modifier.size(20.dp))
Row(horizontalArrangement = Arrangement.spacedBy(10.dp)) {
@ -103,7 +109,7 @@ fun TodoBottomSheet(
onSave(
TodoEntity(
content = text,
subject = subjects[selectedItemIndex]
subject = selectedItemIndex
)
)
}

View file

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="subjects">
<item>语文</item>
<item>数学</item>
<item>英语</item>
<item>生物</item>
<item>地理</item>
<item>物理</item>
<item>化学</item>
<item>道法</item>
<item>历史</item>
<item>其它</item>
</string-array>
</resources>

View file

@ -10,4 +10,14 @@
<string name="error_no_task_content">没有输入待办内容</string>
<string name="tip_select_this">选择该项</string>
<string name="tip_mark_completed">标记为已完成</string>
<string name="subject_chinese">语文</string>
<string name="subject_math">数学</string>
<string name="subject_english">英语</string>
<string name="subject_biology">生物</string>
<string name="subject_geography">地理</string>
<string name="subject_physics">物理</string>
<string name="subject_moral">道法</string>
<string name="subject_chemistry">化学</string>
<string name="subject_history">历史</string>
<string name="subject_others">其它</string>
</resources>

View file

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="subjects">
<item>Chinese</item>
<item>Math</item>
<item>English</item>
<item>Biology</item>
<item>Geography</item>
<item>Physics</item>
<item>Chemistry</item>
<item>Moral Education</item>
<item>History</item>
<item>Others</item>
</string-array>
</resources>

View file

@ -9,4 +9,14 @@
<string name="error_no_task_content">No task content entered</string>
<string name="tip_select_this">Select this</string>
<string name="tip_mark_completed">Mark as completed</string>
<string name="subject_chinese">Chinese</string>
<string name="subject_math">Math</string>
<string name="subject_english">English</string>
<string name="subject_biology">Biology</string>
<string name="subject_geography">Geography</string>
<string name="subject_physics">Physics</string>
<string name="subject_moral">Morality and Rule of Law</string>
<string name="subject_chemistry">Chemistry</string>
<string name="subject_history">History</string>
<string name="subject_others">Others</string>
</resources>