diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 0709ca3..3ba5533 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -37,7 +37,7 @@ android {
applicationId = "cn.super12138.todo"
minSdk = 24
targetSdk = 36
- versionCode = 782
+ versionCode = 783
versionName = "2.3.2"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/navigation/TodoNavigation.kt b/app/src/main/kotlin/cn/super12138/todo/ui/navigation/TodoNavigation.kt
index 69c7025..7a8d72a 100644
--- a/app/src/main/kotlin/cn/super12138/todo/ui/navigation/TodoNavigation.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/ui/navigation/TodoNavigation.kt
@@ -15,6 +15,8 @@ import cn.super12138.todo.ui.pages.settings.SettingsAboutLicence
import cn.super12138.todo.ui.pages.settings.SettingsAppearance
import cn.super12138.todo.ui.pages.settings.SettingsData
import cn.super12138.todo.ui.pages.settings.SettingsDataCategory
+import cn.super12138.todo.ui.pages.settings.SettingsDeveloperOptions
+import cn.super12138.todo.ui.pages.settings.SettingsDeveloperOptionsPadding
import cn.super12138.todo.ui.pages.settings.SettingsInterface
import cn.super12138.todo.ui.pages.settings.SettingsMain
import cn.super12138.todo.ui.theme.materialSharedAxisXIn
@@ -112,19 +114,20 @@ fun TodoNavigation(
composable(TodoScreen.SettingsData.name) {
SettingsData(
viewModel = viewModel,
- toCategoryManager = {navController.navigate(TodoScreen.SettingsDataCategory.name)},
+ toCategoryManager = { navController.navigate(TodoScreen.SettingsDataCategory.name) },
onNavigateUp = { navController.navigateUp() }
)
}
composable(TodoScreen.SettingsDataCategory.name) {
- SettingsDataCategory(onNavigateUp = {navController.navigateUp()})
+ SettingsDataCategory(onNavigateUp = { navController.navigateUp() })
}
composable(TodoScreen.SettingsAbout.name) {
SettingsAbout(
//toSpecialPage = { navController.navigate(TodoScreen.SettingsAboutSpecial.name) },
toLicencePage = { navController.navigate(TodoScreen.SettingsAboutLicence.name) },
+ toDevPage = { navController.navigate(TodoScreen.SettingsDev.name) },
onNavigateUp = { navController.navigateUp() },
)
}
@@ -136,6 +139,16 @@ fun TodoNavigation(
composable(TodoScreen.SettingsAboutLicence.name) {
SettingsAboutLicence(onNavigateUp = { navController.navigateUp() })
}
+
+ composable(TodoScreen.SettingsDev.name) {
+ SettingsDeveloperOptions(
+ toPaddingPage = { navController.navigate(TodoScreen.SettingsDevPadding.name) },
+ onNavigateUp = { navController.navigateUp() }
+ )
+ }
+ composable(TodoScreen.SettingsDevPadding.name) {
+ SettingsDeveloperOptionsPadding(onNavigateUp = { navController.navigateUp() })
+ }
}
}
}
\ No newline at end of file
diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/navigation/TodoScreen.kt b/app/src/main/kotlin/cn/super12138/todo/ui/navigation/TodoScreen.kt
index 16f7d7e..0ebb9cf 100644
--- a/app/src/main/kotlin/cn/super12138/todo/ui/navigation/TodoScreen.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/ui/navigation/TodoScreen.kt
@@ -9,6 +9,9 @@ enum class TodoScreen {
SettingsData,
SettingsDataCategory,
SettingsAbout,
+
//SettingsAboutSpecial,
- SettingsAboutLicence
+ SettingsAboutLicence,
+ SettingsDev,
+ SettingsDevPadding
}
\ No newline at end of file
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 443321b..5b36327 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
@@ -6,6 +6,7 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
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
@@ -35,6 +36,7 @@ import kotlinx.coroutines.delay
fun SettingsAbout(
//toSpecialPage: () -> Unit,
toLicencePage: () -> Unit,
+ toDevPage: () -> Unit,
onNavigateUp: () -> Unit,
modifier: Modifier = Modifier
) {
@@ -110,6 +112,14 @@ fun SettingsAbout(
onClick = toLicencePage
)
}
+ item {
+ SettingsItem(
+ leadingIcon = Icons.Outlined.DeveloperMode,
+ title = stringResource(R.string.pref_developer_options),
+ description = stringResource(R.string.pref_developer_options_desc),
+ onClick = toDevPage
+ )
+ }
}
}
}
\ No newline at end of file
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
new file mode 100644
index 0000000..490fd75
--- /dev/null
+++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsDeveloperOptions.kt
@@ -0,0 +1,46 @@
+package cn.super12138.todo.ui.pages.settings
+
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.lazy.LazyColumn
+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
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.input.nestedscroll.nestedScroll
+import androidx.compose.ui.res.stringResource
+import cn.super12138.todo.R
+import cn.super12138.todo.ui.components.LargeTopAppBarScaffold
+import cn.super12138.todo.ui.pages.settings.components.SettingsItem
+
+@OptIn(ExperimentalMaterial3Api::class)
+@Composable
+fun SettingsDeveloperOptions(
+ toPaddingPage: () -> Unit,
+ onNavigateUp: () -> Unit,
+ modifier: Modifier = Modifier
+) {
+ val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior()
+ LargeTopAppBarScaffold(
+ title = stringResource(R.string.pref_developer_options),
+ onBack = onNavigateUp,
+ scrollBehavior = scrollBehavior,
+ modifier = modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
+ ) { innerPadding ->
+ LazyColumn(
+ modifier = Modifier
+ .fillMaxSize()
+ .padding(innerPadding)
+ ) {
+ item {
+ SettingsItem(
+ leadingIcon = Icons.Outlined.Padding,
+ title = stringResource(R.string.pref_padding),
+ onClick = toPaddingPage
+ )
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsDeveloperOptionsPadding.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsDeveloperOptionsPadding.kt
new file mode 100644
index 0000000..72ec748
--- /dev/null
+++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsDeveloperOptionsPadding.kt
@@ -0,0 +1,74 @@
+package cn.super12138.todo.ui.pages.settings
+
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.ExperimentalLayoutApi
+import androidx.compose.foundation.layout.WindowInsets
+import androidx.compose.foundation.layout.captionBar
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.isCaptionBarVisible
+import androidx.compose.foundation.layout.navigationBars
+import androidx.compose.foundation.layout.safeDrawing
+import androidx.compose.foundation.layout.safeDrawingPadding
+import androidx.compose.foundation.layout.safeGestures
+import androidx.compose.foundation.layout.safeGesturesPadding
+import androidx.compose.foundation.text.selection.DisableSelection
+import androidx.compose.foundation.text.selection.SelectionContainer
+import androidx.compose.material3.Button
+import androidx.compose.material3.ExperimentalMaterial3Api
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.platform.LocalView
+import cn.super12138.todo.utils.VibrationUtils
+
+@OptIn(ExperimentalMaterial3Api::class, ExperimentalLayoutApi::class)
+@Composable
+fun SettingsDeveloperOptionsPadding(
+ onNavigateUp: () -> Unit,
+ modifier: Modifier = Modifier
+) {
+ val view = LocalView.current
+ Box(
+ modifier
+ .fillMaxSize()
+ .background(MaterialTheme.colorScheme.tertiaryContainer)
+ ) {
+ Box(
+ Modifier
+ .safeGesturesPadding()
+ .fillMaxSize()
+ .background(MaterialTheme.colorScheme.secondaryContainer)
+ ) {
+ Box(
+ Modifier
+ .safeDrawingPadding()
+ .fillMaxSize()
+ .background(MaterialTheme.colorScheme.errorContainer)
+ ) {
+ SelectionContainer {
+ Column {
+ DisableSelection {
+ Text("Direction: Left Top Right Bottom\n")
+ }
+ Text("Gestures Padding: \n${WindowInsets.safeGestures}\n")
+ Text("Drawing Padding: \n${WindowInsets.safeDrawing}\n")
+ Text("Caption Bar: ${WindowInsets.isCaptionBarVisible}, ${WindowInsets.captionBar}")
+ Text("Navigation Bar: ${WindowInsets.navigationBars}")
+ DisableSelection {
+ Button(
+ onClick = {
+ VibrationUtils.performHapticFeedback(view)
+ onNavigateUp()
+ }
+ ) { Text("Back") }
+ }
+ }
+ }
+ }
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 3fa491f..862ecdf 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -112,4 +112,7 @@
当前暂无自定义分类
默认分类,请修改
自定义
+ 开发者选项
+ 一些调试选项,仅供开发使用
+ 边距
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 1806a66..0c3f4bc 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -113,4 +113,7 @@
There are no custom categories at the moment.
Default Category, please modify
Customization
+ Developer Options
+ Some debugging options, only for DEVELOPMENT use
+ Padding
\ No newline at end of file