feat: 增加开发者选项
This commit is contained in:
parent
4d855879c8
commit
46ae76024c
8 changed files with 156 additions and 4 deletions
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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() })
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -9,6 +9,9 @@ enum class TodoScreen {
|
|||
SettingsData,
|
||||
SettingsDataCategory,
|
||||
SettingsAbout,
|
||||
|
||||
//SettingsAboutSpecial,
|
||||
SettingsAboutLicence
|
||||
SettingsAboutLicence,
|
||||
SettingsDev,
|
||||
SettingsDevPadding
|
||||
}
|
||||
|
|
@ -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
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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") }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -112,4 +112,7 @@
|
|||
<string name="tip_no_category_page">当前暂无自定义分类</string>
|
||||
<string name="tip_default_category">默认分类,请修改</string>
|
||||
<string name="label_customization">自定义</string>
|
||||
<string name="pref_developer_options">开发者选项</string>
|
||||
<string name="pref_developer_options_desc">一些调试选项,仅供开发使用</string>
|
||||
<string name="pref_padding">边距</string>
|
||||
</resources>
|
||||
|
|
@ -113,4 +113,7 @@
|
|||
<string name="tip_no_category_page">There are no custom categories at the moment.</string>
|
||||
<string name="tip_default_category">Default Category, please modify</string>
|
||||
<string name="label_customization">Customization</string>
|
||||
<string name="pref_developer_options">Developer Options</string>
|
||||
<string name="pref_developer_options_desc">Some debugging options, only for DEVELOPMENT use</string>
|
||||
<string name="pref_padding">Padding</string>
|
||||
</resources>
|
||||
Loading…
Reference in a new issue