fix: 简繁体转换
This commit is contained in:
4 files changed
+25
-70
No files matched your search
@@ -1543,7 +1543,7 @@ private fun MenuBottomBar(
|
|||||||
pageButtons.chunked(itemsPerRow).forEach { rowButtons ->
|
pageButtons.chunked(itemsPerRow).forEach { rowButtons ->
|
||||||
Row(
|
Row(
|
||||||
horizontalArrangement = when {
|
horizontalArrangement = when {
|
||||||
rowButtons.size > 3 -> Arrangement.SpaceBetween
|
rowButtons.size > 1 -> Arrangement.SpaceBetween
|
||||||
else -> Arrangement.spacedBy(32.dp, Alignment.CenterHorizontally)
|
else -> Arrangement.spacedBy(32.dp, Alignment.CenterHorizontally)
|
||||||
},
|
},
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
|
|||||||
@@ -1,35 +1,24 @@
|
|||||||
package io.legado.app.ui.book.read.sheet
|
package io.legado.app.ui.book.read.sheet
|
||||||
|
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.layout.Column
|
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
import androidx.compose.foundation.lazy.items
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.material3.AlertDialog
|
|
||||||
import androidx.compose.material3.HorizontalDivider
|
import androidx.compose.material3.HorizontalDivider
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.material3.TextButton
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.runtime.rememberCoroutineScope
|
|
||||||
import androidx.compose.runtime.setValue
|
import androidx.compose.runtime.setValue
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.res.stringArrayResource
|
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
|
||||||
import io.legado.app.R
|
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.model.ReadBook
|
||||||
import io.legado.app.ui.theme.LegadoTheme
|
|
||||||
import io.legado.app.ui.widget.components.modalBottomSheet.AppModalBottomSheet
|
import io.legado.app.ui.widget.components.modalBottomSheet.AppModalBottomSheet
|
||||||
import kotlinx.coroutines.launch
|
|
||||||
import org.koin.compose.koinInject
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun EffectiveReplacesSheet(
|
fun EffectiveReplacesSheet(
|
||||||
@@ -41,19 +30,8 @@ fun EffectiveReplacesSheet(
|
|||||||
val effectiveRules = remember {
|
val effectiveRules = remember {
|
||||||
ReadBook.curTextChapter?.effectiveReplaceRules ?: emptyList()
|
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 isEdited by remember { mutableStateOf(false) }
|
||||||
var showChineseConvertDialog by remember { mutableStateOf(false) }
|
|
||||||
|
|
||||||
AppModalBottomSheet(
|
AppModalBottomSheet(
|
||||||
show = show,
|
show = show,
|
||||||
@@ -66,18 +44,14 @@ fun EffectiveReplacesSheet(
|
|||||||
LazyColumn(
|
LazyColumn(
|
||||||
modifier = Modifier.fillMaxWidth(),
|
modifier = Modifier.fillMaxWidth(),
|
||||||
) {
|
) {
|
||||||
items(items, key = { it.id }) { rule ->
|
items(effectiveRules, key = { it.id }) { rule ->
|
||||||
Text(
|
Text(
|
||||||
text = rule.name,
|
text = rule.name,
|
||||||
style = MaterialTheme.typography.bodyLarge,
|
style = MaterialTheme.typography.bodyLarge,
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.clickable {
|
.clickable {
|
||||||
if (rule == chineseConvert) {
|
onOpenReplaceEditor(rule.id, rule.pattern)
|
||||||
showChineseConvertDialog = true
|
|
||||||
} else {
|
|
||||||
onOpenReplaceEditor(rule.id, rule.pattern)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.padding(vertical = 12.dp),
|
.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.rememberCoroutineScope
|
||||||
import androidx.compose.runtime.setValue
|
import androidx.compose.runtime.setValue
|
||||||
import androidx.compose.runtime.snapshotFlow
|
import androidx.compose.runtime.snapshotFlow
|
||||||
import androidx.compose.ui.Alignment
|
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.res.stringArrayResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.text.font.FontWeight
|
|
||||||
import androidx.compose.ui.text.style.TextAlign
|
import androidx.compose.ui.text.style.TextAlign
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import io.legado.app.R
|
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.ConfigUpdate
|
||||||
import io.legado.app.ui.book.read.ReadBookIntent
|
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.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.TinyClickableSettingItem
|
||||||
import io.legado.app.ui.widget.components.settingItem.TinyColorSettingItem
|
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.TinyDropdownSettingItem
|
||||||
import io.legado.app.ui.widget.components.settingItem.TinySliderSettingItem
|
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.settingItem.TinySwitchSettingItem
|
||||||
import io.legado.app.ui.widget.components.tabRow.CardTabRow
|
import io.legado.app.ui.widget.components.tabRow.CardTabRow
|
||||||
import io.legado.app.ui.widget.components.modalBottomSheet.AppModalBottomSheet
|
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
// Color picker IDs
|
// Color picker IDs
|
||||||
@@ -304,6 +304,19 @@ internal fun TextEffectsPage(
|
|||||||
imageVector = Icons.Default.TextFields,
|
imageVector = Icons.Default.TextFields,
|
||||||
onClick = onOpenFontSelect,
|
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))
|
Spacer(Modifier.height(8.dp))
|
||||||
|
|
||||||
// Colors
|
// Colors
|
||||||
|
|||||||
@@ -246,4 +246,9 @@ object ReadConfig {
|
|||||||
PreferKey.ttsEngine,
|
PreferKey.ttsEngine,
|
||||||
null
|
null
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var chineseConverterType by prefDelegate(
|
||||||
|
PreferKey.chineseConverterType,
|
||||||
|
0
|
||||||
|
)
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user