diff --git a/app/src/main/java/io/legado/app/ui/book/info/BookInfoScreen.kt b/app/src/main/java/io/legado/app/ui/book/info/BookInfoScreen.kt index 937b6dd07..d199708f5 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/BookInfoScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/BookInfoScreen.kt @@ -398,12 +398,18 @@ private fun BookInfoTransparentTopAppBar( TopBarNavigationButton(onClick = onBackPressed) }, actions = { - BookInfoTopBarActions( - state = state, - showMenu = showMenu, - onShowMenuChange = onShowMenuChange, - onMenuAction = onMenuAction, - ) + Box(modifier = Modifier.padding(end = 12.dp)) { + Row( + horizontalArrangement = Arrangement.spacedBy(8.dp) + ) { + BookInfoTopBarActions( + state = state, + showMenu = showMenu, + onShowMenuChange = onShowMenuChange, + onMenuAction = onMenuAction, + ) + } + } }, scrollBehavior = (scrollBehavior as? M3GlassScrollBehavior)?.m3Behavior, colors = topBarColors, diff --git a/app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageScreen.kt b/app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageScreen.kt index 70e92034c..1f7ffa9d5 100644 --- a/app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageScreen.kt @@ -8,6 +8,7 @@ import androidx.compose.animation.core.FastOutSlowInEasing import androidx.compose.animation.core.tween import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.Row @@ -187,6 +188,7 @@ private fun BookshelfManageScreen( var deleteOriginalBookFile by remember { mutableStateOf(state.deleteBookOriginal) } val exportBookPathKey = remember { "exportBookPath" } val exportTypes = remember { arrayListOf("txt", "epub") } + val commonCharsets = remember { listOf("UTF-8", "GBK", "GB2312", "GB18030", "Big5", "UTF-16") } val focusRequester = remember { FocusRequester() } val exportFolderText = stringResource(R.string.export_folder) val exportAllText = stringResource(R.string.export_all) @@ -496,6 +498,7 @@ private fun BookshelfManageScreen( } }, dropDownMenuContent = { dismiss -> + var showCharsetMenu by remember { mutableStateOf(false) } RoundDropdownMenuItem( text = stringResource(R.string.download_all), onClick = { @@ -531,14 +534,37 @@ private fun BookshelfManageScreen( showExportTypeDialog = true } ) - RoundDropdownMenuItem( - text = "${stringResource(R.string.export_charset)} (${state.exportConfig.exportCharset})", - onClick = { - dismiss() - exportCharsetInput = state.exportConfig.exportCharset - showCharsetDialog = true + Box { + RoundDropdownMenuItem( + text = "${stringResource(R.string.export_charset)} (${state.exportConfig.exportCharset})", + onClick = { showCharsetMenu = true } + ) + RoundDropdownMenu( + expanded = showCharsetMenu, + onDismissRequest = { showCharsetMenu = false } + ) { subDismiss -> + commonCharsets.forEach { charset -> + RoundDropdownMenuItem( + text = charset, + isSelected = state.exportConfig.exportCharset == charset, + onClick = { + viewModel.dispatch(BookshelfManageScreenIntent.SetExportCharset(charset)) + subDismiss() + dismiss() + } + ) + } + PillDivider() + RoundDropdownMenuItem( + text = "自定义...", + onClick = { + subDismiss() + exportCharsetInput = state.exportConfig.exportCharset + showCharsetDialog = true + } + ) } - ) + } PillDivider() RoundDropdownMenuItem( text = "替换净化", diff --git a/app/src/main/java/io/legado/app/ui/config/themeConfig/ThemeConfigScreen.kt b/app/src/main/java/io/legado/app/ui/config/themeConfig/ThemeConfigScreen.kt index 8b7409cc8..40f30317f 100644 --- a/app/src/main/java/io/legado/app/ui/config/themeConfig/ThemeConfigScreen.kt +++ b/app/src/main/java/io/legado/app/ui/config/themeConfig/ThemeConfigScreen.kt @@ -70,6 +70,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.Role import androidx.compose.ui.semantics.role import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.viewinterop.AndroidView import androidx.constraintlayout.compose.ConstraintLayout @@ -832,7 +833,9 @@ fun ThemeConfigScreen( } } }, - modifier = Modifier.fillMaxSize() + modifier = Modifier + .fillMaxSize() + .padding(12.dp) ) } } @@ -889,7 +892,11 @@ fun ThemeModeSelector( Spacer(Modifier.size(ToggleButtonDefaults.IconSpacing)) - Text(text = label) + Text( + text = label, + overflow = TextOverflow.Ellipsis, + maxLines = 1 + ) } } } diff --git a/app/src/main/java/io/legado/app/ui/main/homepage/HomepageScreen.kt b/app/src/main/java/io/legado/app/ui/main/homepage/HomepageScreen.kt index bb7809da6..a2392c6d8 100644 --- a/app/src/main/java/io/legado/app/ui/main/homepage/HomepageScreen.kt +++ b/app/src/main/java/io/legado/app/ui/main/homepage/HomepageScreen.kt @@ -74,6 +74,7 @@ import io.legado.app.ui.main.homepage.modules.RankingModule import io.legado.app.ui.main.homepage.modules.WaterfallItem import io.legado.app.ui.config.themeConfig.ThemeConfig import io.legado.app.ui.theme.LegadoTheme +import io.legado.app.ui.theme.adaptiveContentPadding import io.legado.app.ui.theme.adaptiveContentPaddingBookshelf import io.legado.app.ui.widget.components.AppPullToRefresh import io.legado.app.ui.widget.components.AppScaffold @@ -386,10 +387,9 @@ private fun ModuleList( modifier = modifier, verticalItemSpacing = 16.dp, horizontalArrangement = Arrangement.spacedBy(12.dp), - contentPadding = adaptiveContentPaddingBookshelf( + contentPadding = adaptiveContentPadding( top = paddingValues.calculateTopPadding(), - bottom = if (ThemeConfig.useFloatingBottomBar || ThemeConfig.enableBlur) 120.dp else 8.dp, - horizontal = 4.dp + bottom = if (ThemeConfig.useFloatingBottomBar || ThemeConfig.enableBlur) 120.dp else 8.dp ), ) { processedModules.forEach { moduleUi -> diff --git a/app/src/main/java/io/legado/app/ui/main/rss/RssScreen.kt b/app/src/main/java/io/legado/app/ui/main/rss/RssScreen.kt index a46da6b17..9d6209c85 100644 --- a/app/src/main/java/io/legado/app/ui/main/rss/RssScreen.kt +++ b/app/src/main/java/io/legado/app/ui/main/rss/RssScreen.kt @@ -333,11 +333,11 @@ fun RssSourceGridItem( leadingIcon = { MenuItemIcon( Icons.Default.Delete, - tint = MaterialTheme.colorScheme.error + tint = LegadoTheme.colorScheme.error ) }, text = stringResource(R.string.delete), - color = MaterialTheme.colorScheme.error, + color = LegadoTheme.colorScheme.error, onClick = { onDelete() showMenu = false diff --git a/app/src/main/java/io/legado/app/ui/widget/components/menuItem/RoundDropdownMenuItem.kt b/app/src/main/java/io/legado/app/ui/widget/components/menuItem/RoundDropdownMenuItem.kt index a54186413..56741183e 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/menuItem/RoundDropdownMenuItem.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/menuItem/RoundDropdownMenuItem.kt @@ -122,7 +122,7 @@ fun RoundDropdownMenuItem( } } else { val colorScheme = rememberOpaqueColorScheme() - val selectedContentColor = colorScheme.onPrimaryContainer + val selectedContentColor = colorScheme.primary val defaultContentColor = colorScheme.onSurface val contentColor = if (enabled) { when {