HapeLee 5 месяцев назад
Родитель
Сommit
dbe5863aa4

+ 1 - 1
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

+ 2 - 65
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))
-                }
-            },
-        )
-    }
 }

+ 17 - 4
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

+ 5 - 0
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
+    )
 }