fix: 简繁体转换
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -246,4 +246,9 @@ object ReadConfig {
|
||||
PreferKey.ttsEngine,
|
||||
null
|
||||
)
|
||||
|
||||
var chineseConverterType by prefDelegate(
|
||||
PreferKey.chineseConverterType,
|
||||
0
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user