Bladeren bron

fix: 修复阅读界面标题设置滑块范围、间距数值显示及翻译图标激活状态

- 修正标题设置页6个滑块的调整范围以匹配原始XML定义值
- ValueStepper支持showDecimal参数,间距设置启用小数显示
- 翻译按钮添加isActive状态,与朗读按钮一致的激活效果
HapeLee 4 maanden geleden
bovenliggende
commit
d15c2e093c

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/read/ReadBookMenuBar.kt

@@ -2895,7 +2895,7 @@ private fun loadToolButtons(
                 onIntent(ReadBookIntent.HideMenu)
             }
         },
-        infoMap.getValue("translate").toButton {
+        infoMap.getValue("translate").toButton(isActive = state.translationMode) {
             onIntent(ReadBookIntent.ToggleTranslation)
         },
         infoMap.getValue("ai_summary").toButton {

+ 10 - 8
app/src/main/java/io/legado/app/ui/book/read/sheet/TextTitleSheet.kt

@@ -237,6 +237,7 @@ internal fun LayoutSpacingPage(
             title = stringResource(R.string.line_size),
             value = lineSpacing,
             valueRange = 0f..20f,
+            showDecimal = true,
             onValueChange = { value ->
                 lineSpacing = value
                 onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.LineSpacing(value.toInt())))
@@ -246,6 +247,7 @@ internal fun LayoutSpacingPage(
             title = stringResource(R.string.paragraph_size),
             value = paragraphSpacing,
             valueRange = 0f..20f,
+            showDecimal = true,
             onValueChange = { value ->
                 paragraphSpacing = value
                 onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.ParagraphSpacing(value.toInt())))
@@ -530,17 +532,17 @@ internal fun TitleSettingsPage(
         // Title spacing sliders
         TinySliderSettingItem(
             title = stringResource(R.string.subtitle_scale),
-            value = titleSegScaling * 10,
-            valueRange = 0f..100f,
+            value = titleSegScaling,
+            valueRange = -20f..20f,
             onValueChange = { value ->
-                titleSegScaling = value / 10f
+                titleSegScaling = value
                 onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.TitleSegScaling(titleSegScaling)))
             },
         )
         TinySliderSettingItem(
             title = stringResource(R.string.heading_spacing),
             value = titleLineSpacingExtra.toFloat(),
-            valueRange = 0f..100f,
+            valueRange = 0f..20f,
             onValueChange = { value ->
                 titleLineSpacingExtra = value.toInt()
                 onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.TitleLineSpacingExtra(titleLineSpacingExtra)))
@@ -549,7 +551,7 @@ internal fun TitleSettingsPage(
         TinySliderSettingItem(
             title = stringResource(R.string.subtitle_margin),
             value = titleLineSpacingSub.toFloat(),
-            valueRange = 0f..100f,
+            valueRange = -30f..30f,
             onValueChange = { value ->
                 titleLineSpacingSub = value.toInt()
                 onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.TitleLineSpacingSub(titleLineSpacingSub)))
@@ -558,7 +560,7 @@ internal fun TitleSettingsPage(
         TinySliderSettingItem(
             title = stringResource(R.string.title_font_size),
             value = titleSize.toFloat(),
-            valueRange = 0f..100f,
+            valueRange = 0f..20f,
             onValueChange = { value ->
                 titleSize = value.toInt()
                 onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.TitleSize(titleSize)))
@@ -567,7 +569,7 @@ internal fun TitleSettingsPage(
         TinySliderSettingItem(
             title = stringResource(R.string.title_margin_top),
             value = titleTopSpacing.toFloat(),
-            valueRange = 0f..100f,
+            valueRange = 0f..200f,
             onValueChange = { value ->
                 titleTopSpacing = value.toInt()
                 onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.TitleTopSpacing(titleTopSpacing)))
@@ -576,7 +578,7 @@ internal fun TitleSettingsPage(
         TinySliderSettingItem(
             title = stringResource(R.string.title_margin_bottom),
             value = titleBottomSpacing.toFloat(),
-            valueRange = 0f..100f,
+            valueRange = 0f..200f,
             onValueChange = { value ->
                 titleBottomSpacing = value.toInt()
                 onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.TitleBottomSpacing(titleBottomSpacing)))

+ 8 - 2
app/src/main/java/io/legado/app/ui/widget/components/ValueStepper.kt

@@ -1,4 +1,4 @@
-package io.legado.app.ui.widget.components
+package io.legado.app.ui.widget.components
 
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Row
@@ -21,6 +21,7 @@ fun ValueStepper(
     onValueChange: (Float) -> Unit,
     modifier: Modifier = Modifier,
     enabled: Boolean = true,
+    showDecimal: Boolean = false,
 ) {
     Row(
         modifier = modifier,
@@ -35,11 +36,16 @@ fun ValueStepper(
             enabled = enabled,
             icon = Icons.Default.Remove,
         )
+        val displayText = if (showDecimal) {
+            displayValue.toString()
+        } else {
+            displayValue.toInt().toString()
+        }
         TextCard(
             cornerRadius = 8.dp,
             horizontalPadding = 8.dp,
             verticalPadding = 4.dp,
-            text = displayValue.toInt().toString(),
+            text = displayText,
             backgroundColor = LegadoTheme.colorScheme.surfaceContainerHigh,
             contentColor = LegadoTheme.colorScheme.onSurface
         )

+ 2 - 0
app/src/main/java/io/legado/app/ui/widget/components/settingItem/TinySettingItems.kt

@@ -256,6 +256,7 @@ fun TinySliderSettingItem(
     modifier: Modifier = Modifier,
     color: Color? = LegadoTheme.colorScheme.surfaceContainerLow,
     enabled: Boolean = true,
+    showDecimal: Boolean = false,
     onValueChange: (Float) -> Unit,
 ) {
     var expanded by remember { mutableStateOf(false) }
@@ -278,6 +279,7 @@ fun TinySliderSettingItem(
                 valueRange = valueRange,
                 onValueChange = onValueChange,
                 enabled = enabled,
+                showDecimal = showDecimal,
             )
         },
         expandContent = {