From dbe5863aa4201e58a4b39304c1544e8df6105609 Mon Sep 17 00:00:00 2001 From: HapeLee <63206378+HapeLee@users.noreply.github.com> Date: Thu, 11 Jun 2026 15:42:31 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=AE=80=E7=B9=81=E4=BD=93=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ui/book/read/ReadBookMenuBar.kt | 2 +- .../book/read/sheet/EffectiveReplacesSheet.kt | 67 +------------------ .../app/ui/book/read/sheet/TextTitleSheet.kt | 21 ++++-- .../app/ui/config/readConfig/ReadConfig.kt | 5 ++ 4 files changed, 25 insertions(+), 70 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookMenuBar.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookMenuBar.kt index 92ac5524f..0d45c2732 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookMenuBar.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookMenuBar.kt @@ -1543,7 +1543,7 @@ private fun MenuBottomBar( pageButtons.chunked(itemsPerRow).forEach { rowButtons -> Row( horizontalArrangement = when { - rowButtons.size > 3 -> Arrangement.SpaceBetween + rowButtons.size > 1 -> Arrangement.SpaceBetween else -> Arrangement.spacedBy(32.dp, Alignment.CenterHorizontally) }, modifier = Modifier diff --git a/app/src/main/java/io/legado/app/ui/book/read/sheet/EffectiveReplacesSheet.kt b/app/src/main/java/io/legado/app/ui/book/read/sheet/EffectiveReplacesSheet.kt index e16db3f98..12b108659 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/sheet/EffectiveReplacesSheet.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/sheet/EffectiveReplacesSheet.kt @@ -1,35 +1,24 @@ package io.legado.app.ui.book.read.sheet import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material3.AlertDialog import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text -import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier -import androidx.compose.ui.res.stringArrayResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.legado.app.R -import io.legado.app.data.entities.ReplaceRule -import io.legado.app.data.repository.ReadSettingsRepository import io.legado.app.model.ReadBook -import io.legado.app.ui.theme.LegadoTheme import io.legado.app.ui.widget.components.modalBottomSheet.AppModalBottomSheet -import kotlinx.coroutines.launch -import org.koin.compose.koinInject @Composable fun EffectiveReplacesSheet( @@ -41,19 +30,8 @@ fun EffectiveReplacesSheet( val effectiveRules = remember { ReadBook.curTextChapter?.effectiveReplaceRules ?: emptyList() } - val scope = rememberCoroutineScope() - val readSettingsRepository: ReadSettingsRepository = koinInject() - val preferences by readSettingsRepository.preferences.collectAsStateWithLifecycle( - initialValue = io.legado.app.data.repository.ReadPreferences() - ) - val showChineseConvert = preferences.chineseConverterType > 0 - val chineseConvert = remember { ReplaceRule(0, "繁简转换") } - val items = remember(effectiveRules, showChineseConvert) { - if (showChineseConvert) effectiveRules + chineseConvert else effectiveRules - } var isEdited by remember { mutableStateOf(false) } - var showChineseConvertDialog by remember { mutableStateOf(false) } AppModalBottomSheet( show = show, @@ -66,18 +44,14 @@ fun EffectiveReplacesSheet( LazyColumn( modifier = Modifier.fillMaxWidth(), ) { - items(items, key = { it.id }) { rule -> + items(effectiveRules, key = { it.id }) { rule -> Text( text = rule.name, style = MaterialTheme.typography.bodyLarge, modifier = Modifier .fillMaxWidth() .clickable { - if (rule == chineseConvert) { - showChineseConvertDialog = true - } else { - onOpenReplaceEditor(rule.id, rule.pattern) - } + onOpenReplaceEditor(rule.id, rule.pattern) } .padding(vertical = 12.dp), ) @@ -85,41 +59,4 @@ fun EffectiveReplacesSheet( } } } - - if (showChineseConvertDialog) { - val modes = stringArrayResource(R.array.chinese_mode) - AlertDialog( - onDismissRequest = { showChineseConvertDialog = false }, - containerColor = LegadoTheme.colorScheme.surfaceContainer, - title = { Text(stringResource(R.string.chinese_converter)) }, - text = { - Column { - modes.forEachIndexed { index, mode -> - Text( - text = mode, - style = MaterialTheme.typography.bodyLarge, - modifier = Modifier - .fillMaxWidth() - .clickable { - if (preferences.chineseConverterType != index) { - scope.launch { - readSettingsRepository.setChineseConverterType(index) - } - isEdited = true - } - showChineseConvertDialog = false - } - .padding(vertical = 12.dp), - ) - } - } - }, - confirmButton = {}, - dismissButton = { - TextButton(onClick = { showChineseConvertDialog = false }) { - Text(stringResource(R.string.cancel)) - } - }, - ) - } } diff --git a/app/src/main/java/io/legado/app/ui/book/read/sheet/TextTitleSheet.kt b/app/src/main/java/io/legado/app/ui/book/read/sheet/TextTitleSheet.kt index 8de1a5337..c05ad6c38 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/sheet/TextTitleSheet.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/sheet/TextTitleSheet.kt @@ -30,24 +30,24 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshotFlow -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringArrayResource import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import io.legado.app.R +import io.legado.app.help.config.ReadBookConfig import io.legado.app.ui.book.read.ConfigUpdate import io.legado.app.ui.book.read.ReadBookIntent -import io.legado.app.help.config.ReadBookConfig +import io.legado.app.ui.config.readConfig.ReadConfig import io.legado.app.ui.widget.components.dialog.ColorPickerSheet +import io.legado.app.ui.widget.components.modalBottomSheet.AppModalBottomSheet import io.legado.app.ui.widget.components.settingItem.TinyClickableSettingItem import io.legado.app.ui.widget.components.settingItem.TinyColorSettingItem import io.legado.app.ui.widget.components.settingItem.TinyDropdownSettingItem import io.legado.app.ui.widget.components.settingItem.TinySliderSettingItem import io.legado.app.ui.widget.components.settingItem.TinySwitchSettingItem import io.legado.app.ui.widget.components.tabRow.CardTabRow -import io.legado.app.ui.widget.components.modalBottomSheet.AppModalBottomSheet import kotlinx.coroutines.launch // Color picker IDs @@ -304,6 +304,19 @@ internal fun TextEffectsPage( imageVector = Icons.Default.TextFields, onClick = onOpenFontSelect, ) + + val chineseConvertEntries = stringArrayResource(R.array.chinese_mode) + val chineseConvertValues = remember { arrayOf("0", "1", "2") } + TinyDropdownSettingItem( + title = stringResource(R.string.chinese_converter), + selectedValue = ReadConfig.chineseConverterType.toString(), + displayEntries = chineseConvertEntries, + entryValues = chineseConvertValues, + onValueChange = { + onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.ChineseConverterType(it.toInt()))) + }, + ) + Spacer(Modifier.height(8.dp)) // Colors diff --git a/app/src/main/java/io/legado/app/ui/config/readConfig/ReadConfig.kt b/app/src/main/java/io/legado/app/ui/config/readConfig/ReadConfig.kt index f51fd4543..c41800a3c 100644 --- a/app/src/main/java/io/legado/app/ui/config/readConfig/ReadConfig.kt +++ b/app/src/main/java/io/legado/app/ui/config/readConfig/ReadConfig.kt @@ -246,4 +246,9 @@ object ReadConfig { PreferKey.ttsEngine, null ) + + var chineseConverterType by prefDelegate( + PreferKey.chineseConverterType, + 0 + ) }