refactor: 使用最新写法书写

This commit is contained in:
Super12138 2025-04-20 16:31:40 +08:00
parent 03022a1d3d
commit 62e804973e
10 changed files with 43 additions and 43 deletions

View file

@ -34,7 +34,7 @@ android {
applicationId = "cn.super12138.todo"
minSdk = 24
targetSdk = 36
versionCode = 618
versionCode = 633
versionName = "2.1.2"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
@ -63,7 +63,9 @@ android {
jvmTarget = "21"
}
aboutLibraries {
configPath = "$projectDir/licences"
collect {
configPath = file("$projectDir/licences")
}
}
buildFeatures {
compose = true

View file

@ -23,7 +23,7 @@ abstract class TodoDatabase : RoomDatabase() {
Constants.DB_NAME
)
.addMigrations(MIGRATION_2_3)
.fallbackToDestructiveMigration()
.fallbackToDestructiveMigration(false)
.build()
INSTANCE = instance

View file

@ -44,7 +44,7 @@ class MainActivity : ComponentActivity() {
isAppearanceLightNavigationBars = !darkTheme
}
}
// 阻止截屏相关配置
LaunchedEffect(mainViewModel.appSecureMode) {
if (mainViewModel.appSecureMode) {
window.setFlags(

View file

@ -26,10 +26,10 @@ private const val INITIAL_OFFSET_FACTOR = 0.10f
@OptIn(ExperimentalSharedTransitionApi::class)
@Composable
fun TodoNavigation(
modifier: Modifier = Modifier,
navController: NavHostController = rememberNavController(),
startDestination: String = TodoScreen.Main.name,
viewModel: MainViewModel,
modifier: Modifier = Modifier
viewModel: MainViewModel
) {
SharedTransitionLayout {
NavHost(
@ -131,10 +131,7 @@ fun TodoNavigation(
}
composable(TodoScreen.SettingsAboutSpecial.name) {
SettingsAboutSpecial(
viewModel = viewModel,
onNavigateUp = { navController.navigateUp() }
)
SettingsAboutSpecial(viewModel = viewModel)
}
composable(TodoScreen.SettingsAboutLicence.name) {

View file

@ -1,6 +1,5 @@
package cn.super12138.todo.ui.pages.settings
import android.content.Intent
import android.widget.Toast
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
@ -23,8 +22,8 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.res.stringResource
import androidx.core.net.toUri
import cn.super12138.todo.R
import cn.super12138.todo.constants.Constants
import cn.super12138.todo.ui.components.LargeTopAppBarScaffold
@ -49,6 +48,8 @@ fun SettingsAbout(
modifier = modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
) { innerPadding ->
val context = LocalContext.current
val uriHandler = LocalUriHandler.current
Column(
modifier = Modifier
.fillMaxSize()
@ -90,19 +91,13 @@ fun SettingsAbout(
leadingIcon = Icons.Outlined.Person4,
title = stringResource(R.string.pref_developer),
description = stringResource(R.string.developer_name),
onClick = {
val intent = Intent(Intent.ACTION_VIEW, Constants.DEVELOPER_GITHUB.toUri())
context.startActivity(intent)
}
onClick = { uriHandler.openUri(Constants.DEVELOPER_GITHUB) }
)
SettingsItem(
leadingIcon = GitHubIcon,
title = stringResource(R.string.pref_view_on_github),
description = stringResource(R.string.pref_view_on_github_desc),
onClick = {
val intent = Intent(Intent.ACTION_VIEW, Constants.GITHUB_REPO.toUri())
context.startActivity(intent)
}
onClick = { uriHandler.openUri(Constants.GITHUB_REPO) }
)
SettingsItem(
leadingIcon = Icons.Outlined.Balance,

View file

@ -39,10 +39,11 @@ fun SettingsAboutLicence(
Libs.Builder().withContext(context).build()
}
}
Column(
modifier = Modifier
.fillMaxSize()
.padding(innerPadding)
.fillMaxSize()
) {
val listState = rememberLazyListState()
LicenceList(

View file

@ -48,14 +48,14 @@ import cn.super12138.todo.utils.VibrationUtils
@Composable
fun SettingsAboutSpecial(
viewModel: MainViewModel,
onNavigateUp: () -> Unit,
// onNavigateUp: () -> Unit,
modifier: Modifier = Modifier
) {
val configuration = LocalConfiguration.current
val screenHeight = configuration.screenHeightDp.dp
var showBanner by rememberSaveable { mutableStateOf(false) }
Surface(color = SpecialDefaults.WallColor) {
Box(Modifier.fillMaxSize()) {
Box(modifier.fillMaxSize()) {
AnimatedVisibility(
visible = showBanner,
enter = expandVertically(),

View file

@ -37,7 +37,8 @@ fun ContrastPicker(
val context = LocalContext.current
MoreContentSettingsItem(
title = stringResource(R.string.pref_contrast_level),
description = stringResource(R.string.pref_contrast_level_desc)
description = stringResource(R.string.pref_contrast_level_desc),
modifier = modifier
) {
var contrastState by rememberPrefFloatState(
Constants.PREF_CONTRAST_LEVEL,

View file

@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ExperimentalLayoutApi
import androidx.compose.foundation.layout.FlowRow
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
@ -22,25 +21,26 @@ import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import com.mikepenz.aboutlibraries.entity.Library
import com.mikepenz.aboutlibraries.ui.compose.m3.LibraryColors
import com.mikepenz.aboutlibraries.ui.compose.m3.LibraryDefaults
import com.mikepenz.aboutlibraries.ui.compose.m3.LibraryPadding
import com.mikepenz.aboutlibraries.ui.compose.m3.util.author
import com.mikepenz.aboutlibraries.ui.compose.LibraryColors
import com.mikepenz.aboutlibraries.ui.compose.LibraryDefaults
import com.mikepenz.aboutlibraries.ui.compose.LibraryPadding
import com.mikepenz.aboutlibraries.ui.compose.m3.libraryColors
import com.mikepenz.aboutlibraries.ui.compose.util.author
@OptIn(ExperimentalLayoutApi::class)
@Composable
fun LicenceItem(
modifier: Modifier = Modifier,
library: Library,
showAuthor: Boolean = true,
showVersion: Boolean = true,
showLicenseBadges: Boolean = true,
colors: LibraryColors = LibraryDefaults.libraryColors(),
padding: LibraryPadding = LibraryDefaults.libraryPadding(),
contentPadding: PaddingValues = LibraryDefaults.ContentPadding,
libraryPadding: LibraryPadding = LibraryDefaults.libraryPadding(),
typography: Typography = MaterialTheme.typography,
shape: Shape = MaterialTheme.shapes.large,
onClick: () -> Unit,
modifier: Modifier = Modifier
onClick: () -> Unit
) {
Column(
modifier = modifier
@ -48,7 +48,7 @@ fun LicenceItem(
.background(colors.backgroundColor)
.clip(shape)
.clickable { onClick.invoke() }
.padding(contentPadding)
.padding(libraryPadding.contentPadding)
) {
Row(
verticalAlignment = Alignment.CenterVertically,

View file

@ -1,6 +1,5 @@
package cn.super12138.todo.ui.pages.settings.components.licence
import android.util.Log
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.LazyListState
@ -25,7 +24,7 @@ import cn.super12138.todo.ui.components.BasicDialog
import cn.super12138.todo.ui.components.LazyColumnCustomScrollBar
import cn.super12138.todo.utils.VibrationUtils
import com.mikepenz.aboutlibraries.Libs
import com.mikepenz.aboutlibraries.ui.compose.m3.util.htmlReadyLicenseContent
import com.mikepenz.aboutlibraries.ui.compose.util.htmlReadyLicenseContent
@Composable
fun LicenceList(
@ -33,10 +32,17 @@ fun LicenceList(
libraries: Libs?,
state: LazyListState = rememberLazyListState()
) {
val uriHandler = LocalUriHandler.current
val view = LocalView.current
LazyColumnCustomScrollBar(state = state) {
LazyColumn(state = state) {
val uriHandler = LocalUriHandler.current
LazyColumnCustomScrollBar(
state = state,
modifier = modifier
) {
LazyColumn(
state = state,
modifier = modifier
) {
items(libraries?.libraries ?: listOf()) { library ->
var openDialog by rememberSaveable { mutableStateOf(false) }
@ -47,11 +53,11 @@ fun LicenceList(
if (!license?.htmlReadyLicenseContent.isNullOrBlank()) {
openDialog = true
} else if (!license?.url.isNullOrBlank()) {
license?.url?.also {
license.url?.also {
try {
uriHandler.openUri(it)
} catch (t: Throwable) {
Log.e("Licence", "Failed to open the URL: $it")
throw Exception("Failed to open licence URL: $it", t)
}
}
}
@ -65,9 +71,7 @@ fun LicenceList(
text = {
library.licenses.firstOrNull()?.licenseContent?.let {
Column(Modifier.verticalScroll(rememberScrollState())) {
SelectionContainer {
Text(text = it)
}
SelectionContainer { Text(text = it) }
}
}
},