diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index d4dd776..a9de246 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 = 676
+ versionCode = 678
versionName = "2.1.2"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
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 8b57894..b958784 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
@@ -47,8 +47,11 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.semantics.LiveRegionMode
import androidx.compose.ui.semantics.contentDescription
+import androidx.compose.ui.semantics.liveRegion
import androidx.compose.ui.semantics.semantics
+import androidx.compose.ui.semantics.stateDescription
import androidx.compose.ui.unit.dp
import cn.super12138.todo.R
import cn.super12138.todo.constants.Constants
@@ -249,7 +252,12 @@ fun TodoEditorPage(
val interactionSource = remember { MutableInteractionSource() }
Slider(
modifier = Modifier.semantics {
- contentDescription = context.getString(R.string.label_priority)
+ contentDescription =
+ context.getString(R.string.label_priority) + priorityName[Priority.fromFloat(
+ priorityState
+ ).ordinal]
+ stateDescription = priorityName[Priority.fromFloat(priorityState).ordinal]
+ liveRegion = LiveRegionMode.Polite
},
value = priorityState,
onValueChange = {
diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/SettingsCategory.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/SettingsCategory.kt
index 4a51636..4ae1d70 100644
--- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/SettingsCategory.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/components/SettingsCategory.kt
@@ -8,7 +8,7 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
-import androidx.compose.ui.unit.dp
+import cn.super12138.todo.ui.TodoDefaults
@Composable
fun SettingsCategory(
@@ -18,7 +18,11 @@ fun SettingsCategory(
Box(
modifier = modifier
.fillMaxWidth()
- .padding(top = 12.dp, start = 24.dp, end = 24.dp)
+ .padding(
+ top = TodoDefaults.settingsItemVerticalPadding / 2,
+ start = TodoDefaults.settingsItemHorizontalPadding,
+ end = TodoDefaults.settingsItemHorizontalPadding
+ )
) {
Text(
text = title,
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 fc532d1..3e3112c 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
@@ -14,6 +14,8 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.semantics.clearAndSetSemantics
+import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.unit.dp
import cn.super12138.todo.R
import cn.super12138.todo.ui.TodoDefaults
@@ -23,6 +25,7 @@ fun SettingsPlainBox(
text: String,
modifier: Modifier = Modifier
) {
+ val tipText = stringResource(R.string.tip_tips)
Column(
modifier = modifier
.fillMaxWidth()
@@ -35,14 +38,16 @@ fun SettingsPlainBox(
) {
Icon(
imageVector = Icons.Outlined.Info,
- contentDescription = stringResource(R.string.tip_tips)
+ contentDescription = null
)
Spacer(Modifier.size(20.dp))
Text(
text = text,
style = MaterialTheme.typography.bodyMedium.copy(
color = MaterialTheme.colorScheme.onSurfaceVariant
- )
+ ),
+ modifier = Modifier
+ .clearAndSetSemantics { contentDescription = "$tipText $text" }
)
}
}
\ No newline at end of file
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 3430b8c..cf5885d 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
@@ -18,8 +18,12 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.semantics.LiveRegionMode
+import androidx.compose.ui.semantics.clearAndSetSemantics
import androidx.compose.ui.semantics.contentDescription
+import androidx.compose.ui.semantics.liveRegion
import androidx.compose.ui.semantics.semantics
+import androidx.compose.ui.semantics.stateDescription
import androidx.compose.ui.unit.dp
import cn.super12138.todo.R
import cn.super12138.todo.constants.Constants
@@ -44,10 +48,17 @@ fun ContrastPicker(
Constants.PREF_CONTRAST_LEVEL,
Constants.PREF_CONTRAST_LEVEL_DEFAULT
)
+ val contrastLevelName =
+ ContrastLevel.entries.map { it.getDisplayName(context) }
Slider(
modifier = Modifier.semantics {
- contentDescription = context.getString(R.string.tip_change_contrast_level)
+ contentDescription =
+ context.getString(R.string.pref_contrast_level) + contrastLevelName[ContrastLevel.fromFloat(
+ contrastState
+ ).ordinal]
+ stateDescription = contrastLevelName[ContrastLevel.fromFloat(contrastState).ordinal]
+ liveRegion = LiveRegionMode.Polite
},
value = contrastState,
onValueChange = {
@@ -63,7 +74,9 @@ fun ContrastPicker(
CompositionLocalProvider(LocalTextStyle provides MaterialTheme.typography.bodyMedium) {
Row(
- modifier = Modifier.fillMaxWidth(),
+ modifier = Modifier
+ .fillMaxWidth()
+ .clearAndSetSemantics {},
horizontalArrangement = Arrangement.SpaceBetween
) {
Text(stringResource(R.string.contrast_very_low))
diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/theme/ContrastLevel.kt b/app/src/main/kotlin/cn/super12138/todo/ui/theme/ContrastLevel.kt
index adc1e25..5446f75 100644
--- a/app/src/main/kotlin/cn/super12138/todo/ui/theme/ContrastLevel.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/ui/theme/ContrastLevel.kt
@@ -1,5 +1,8 @@
package cn.super12138.todo.ui.theme
+import android.content.Context
+import cn.super12138.todo.R
+
enum class ContrastLevel(val value: Float) {
VeryLow(-1f),
Low(-0.5f),
@@ -7,7 +10,7 @@ enum class ContrastLevel(val value: Float) {
Medium(0.5f),
High(1f);
- /*fun getDisplayName(context: Context): String {
+ fun getDisplayName(context: Context): String {
val resId = when (this) {
VeryLow -> R.string.contrast_very_low
Low -> R.string.contrast_low
@@ -16,7 +19,7 @@ enum class ContrastLevel(val value: Float) {
High -> R.string.contrast_very_high
}
return context.getString(resId)
- }*/
+ }
companion object {
fun fromFloat(float: Float) = entries.find { it.value == float } ?: Default
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 7a4a3d8..805b94e 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -73,7 +73,6 @@
默认
高
极高
- 更改颜色对比度
界面与交互
待办列表、触感反馈
显示已完成待办
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c2fefa2..8e27e40 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -74,7 +74,6 @@
Default
High
Very High
- Change the contrast level
Interface & Interaction
To-Do List, Haptic Feedback
Show Completed Tasks