Browse Source

fix: 解决 TitleSettingsPage 标题间距与字号加减按钮点击不刷新问题

fansan 5 months ago
parent
commit
9843bed95f
1 changed files with 24 additions and 12 deletions
  1. 24 12
      app/src/main/java/io/legado/app/ui/book/read/sheet/TextTitleSheet.kt

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

@@ -362,6 +362,12 @@ internal fun TitleSettingsPage(
 ) {
     var titleMode by remember { mutableIntStateOf(ReadBookConfig.titleMode) }
     var titleBold by remember { mutableIntStateOf(ReadBookConfig.titleBold) }
+    var titleSegScaling by remember { mutableFloatStateOf(ReadBookConfig.titleSegScaling) }
+    var titleLineSpacingExtra by remember { mutableIntStateOf(ReadBookConfig.titleLineSpacingExtra) }
+    var titleLineSpacingSub by remember { mutableIntStateOf(ReadBookConfig.titleLineSpacingSub) }
+    var titleSize by remember { mutableIntStateOf(ReadBookConfig.titleSize) }
+    var titleTopSpacing by remember { mutableIntStateOf(ReadBookConfig.titleTopSpacing) }
+    var titleBottomSpacing by remember { mutableIntStateOf(ReadBookConfig.titleBottomSpacing) }
 
     var showColorPicker by remember { mutableStateOf(false) }
     var colorPickerId by remember { mutableIntStateOf(0) }
@@ -429,50 +435,56 @@ internal fun TitleSettingsPage(
         // Title spacing sliders
         TinySliderSettingItem(
             title = stringResource(R.string.subtitle_scale),
-            value = ReadBookConfig.titleSegScaling * 10,
+            value = titleSegScaling * 10,
             valueRange = 0f..100f,
             onValueChange = { value ->
-                onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.TitleSegScaling(value / 10f)))
+                titleSegScaling = value / 10f
+                onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.TitleSegScaling(titleSegScaling)))
             },
         )
         TinySliderSettingItem(
             title = stringResource(R.string.heading_spacing),
-            value = ReadBookConfig.titleLineSpacingExtra.toFloat(),
+            value = titleLineSpacingExtra.toFloat(),
             valueRange = 0f..100f,
             onValueChange = { value ->
-                onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.TitleLineSpacingExtra(value.toInt())))
+                titleLineSpacingExtra = value.toInt()
+                onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.TitleLineSpacingExtra(titleLineSpacingExtra)))
             },
         )
         TinySliderSettingItem(
             title = stringResource(R.string.subtitle_margin),
-            value = ReadBookConfig.titleLineSpacingSub.toFloat(),
+            value = titleLineSpacingSub.toFloat(),
             valueRange = 0f..100f,
             onValueChange = { value ->
-                onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.TitleLineSpacingSub(value.toInt())))
+                titleLineSpacingSub = value.toInt()
+                onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.TitleLineSpacingSub(titleLineSpacingSub)))
             },
         )
         TinySliderSettingItem(
             title = stringResource(R.string.title_font_size),
-            value = ReadBookConfig.titleSize.toFloat(),
+            value = titleSize.toFloat(),
             valueRange = 0f..100f,
             onValueChange = { value ->
-                onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.TitleSize(value.toInt())))
+                titleSize = value.toInt()
+                onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.TitleSize(titleSize)))
             },
         )
         TinySliderSettingItem(
             title = stringResource(R.string.title_margin_top),
-            value = ReadBookConfig.titleTopSpacing.toFloat(),
+            value = titleTopSpacing.toFloat(),
             valueRange = 0f..100f,
             onValueChange = { value ->
-                onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.TitleTopSpacing(value.toInt())))
+                titleTopSpacing = value.toInt()
+                onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.TitleTopSpacing(titleTopSpacing)))
             },
         )
         TinySliderSettingItem(
             title = stringResource(R.string.title_margin_bottom),
-            value = ReadBookConfig.titleBottomSpacing.toFloat(),
+            value = titleBottomSpacing.toFloat(),
             valueRange = 0f..100f,
             onValueChange = { value ->
-                onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.TitleBottomSpacing(value.toInt())))
+                titleBottomSpacing = value.toInt()
+                onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.TitleBottomSpacing(titleBottomSpacing)))
             },
         )