فهرست منبع

fix: 底栏显隐开关

HapeLee 5 ماه پیش
والد
کامیت
f9fb720ae3

+ 8 - 0
app/src/main/java/io/legado/app/help/config/ReadBookConfig.kt

@@ -288,6 +288,7 @@ object ReadBookConfig {
         parseReadMenuCustomIcons(appCtx.getPrefString(PreferKey.titleBarCustomIcons))
         parseReadMenuCustomIcons(appCtx.getPrefString(PreferKey.titleBarCustomIcons))
     private var titleBarIconPositionValue = appCtx.getPrefInt(PreferKey.titleBarIconPosition)
     private var titleBarIconPositionValue = appCtx.getPrefInt(PreferKey.titleBarIconPosition)
     private var showTitleBarIconsValue = appCtx.getPrefBoolean(PreferKey.showTitleBarIcons, true)
     private var showTitleBarIconsValue = appCtx.getPrefBoolean(PreferKey.showTitleBarIcons, true)
+    private var readSliderModeValue = appCtx.getPrefString(PreferKey.readSliderMode) ?: "0"
 
 
     fun syncPreferences(preferences: ReadPreferences) {
     fun syncPreferences(preferences: ReadPreferences) {
         readBodyToLhValue = preferences.readBodyToLh
         readBodyToLhValue = preferences.readBodyToLh
@@ -329,6 +330,7 @@ object ReadBookConfig {
         titleBarCustomIconsValue = parseReadMenuCustomIcons(preferences.titleBarCustomIcons)
         titleBarCustomIconsValue = parseReadMenuCustomIcons(preferences.titleBarCustomIcons)
         titleBarIconPositionValue = preferences.titleBarIconPosition
         titleBarIconPositionValue = preferences.titleBarIconPosition
         showTitleBarIconsValue = preferences.showTitleBarIcons
         showTitleBarIconsValue = preferences.showTitleBarIcons
+        readSliderModeValue = preferences.readSliderMode
     }
     }
 
 
     var readMenuBgColor: Int
     var readMenuBgColor: Int
@@ -540,6 +542,12 @@ object ReadBookConfig {
             showTitleBarIconsValue = value
             showTitleBarIconsValue = value
         }
         }
 
 
+    var readSliderMode: String
+        get() = readSliderModeValue
+        set(value) {
+            readSliderModeValue = value
+        }
+
     fun encodeReadMenuCustomIcons(value: Map<String, String>): String {
     fun encodeReadMenuCustomIcons(value: Map<String, String>): String {
         return GSON.toJson(value.filterValues { it.isNotBlank() })
         return GSON.toJson(value.filterValues { it.isNotBlank() })
     }
     }

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

@@ -178,6 +178,7 @@ data class ReadMenuConfig(
     val readMenuBottomBarBlurStyle: Int = ReadMenuBlurStyle.Solid,
     val readMenuBottomBarBlurStyle: Int = ReadMenuBlurStyle.Solid,
     val readMenuIconStyle: Int = 0,
     val readMenuIconStyle: Int = 0,
     val readMenuIconShowText: Boolean = true,
     val readMenuIconShowText: Boolean = true,
+    val readSliderMode: String = "0",
     val titleBarCustomIcons: ImmutableMap<String, String> = persistentMapOf(),
     val titleBarCustomIcons: ImmutableMap<String, String> = persistentMapOf(),
     val readMenuCustomIcons: ImmutableMap<String, String> = persistentMapOf(),
     val readMenuCustomIcons: ImmutableMap<String, String> = persistentMapOf(),
     val titleBarButtons: ImmutableList<ReadBookButtonConfigItem> = persistentListOf(),
     val titleBarButtons: ImmutableList<ReadBookButtonConfigItem> = persistentListOf(),

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

@@ -1400,51 +1400,53 @@ private fun MenuBottomBar(
             .animateContentSize(),
             .animateContentSize(),
     ) {
     ) {
         // Seek bar row: prev + slider + next
         // Seek bar row: prev + slider + next
-        Row(
-            modifier = Modifier
-                .fillMaxWidth()
-                .padding(vertical = 4.dp)
-                .padding(horizontal = 16.dp),
-            verticalAlignment = Alignment.CenterVertically,
-            horizontalArrangement = Arrangement.spacedBy(8.dp)
-        ) {
-            BottomBarGlassIconButton(
-                onClick = { onIntent(ReadBookIntent.PrevChapter) },
-                icon = Icons.AutoMirrored.Filled.ArrowBack,
-                colors = colors,
-                backdrop = backdrop,
-                menuConfig = state.menuConfig,
-                glassEnabled = buttonGlassEnabled,
-            )
-
-            ReadMenuSlider(
-                value = sliderValue.coerceIn(0f, sliderMax),
-                onValueChange = { value ->
-                    sliderDragging = true
-                    sliderValue = value.coerceIn(0f, sliderMax)
-                },
-                onValueChangeFinished = {
-                    commitSliderValue(sliderValue)
-                },
-                onValueCommit = ::commitSliderValue,
-                valueRange = 0f..sliderMax,
-                steps = (seekMax - 1).coerceAtLeast(0),
-                enabled = seekMax > 0,
-                backdrop = backdrop,
-                glassThumbEnabled = buttonGlassEnabled,
+        AnimatedVisibility(visible = state.menuConfig.readSliderMode != "1") {
+            Row(
                 modifier = Modifier
                 modifier = Modifier
-                    .weight(1f)
-                    .padding(horizontal = 8.dp)
-            )
+                    .fillMaxWidth()
+                    .padding(vertical = 4.dp)
+                    .padding(horizontal = 16.dp),
+                verticalAlignment = Alignment.CenterVertically,
+                horizontalArrangement = Arrangement.spacedBy(8.dp)
+            ) {
+                BottomBarGlassIconButton(
+                    onClick = { onIntent(ReadBookIntent.PrevChapter) },
+                    icon = Icons.AutoMirrored.Filled.ArrowBack,
+                    colors = colors,
+                    backdrop = backdrop,
+                    menuConfig = state.menuConfig,
+                    glassEnabled = buttonGlassEnabled,
+                )
 
 
-            BottomBarGlassIconButton(
-                onClick = { onIntent(ReadBookIntent.NextChapter) },
-                icon = Icons.AutoMirrored.Filled.ArrowForward,
-                colors = colors,
-                backdrop = backdrop,
-                menuConfig = state.menuConfig,
-                glassEnabled = buttonGlassEnabled,
-            )
+                ReadMenuSlider(
+                    value = sliderValue.coerceIn(0f, sliderMax),
+                    onValueChange = { value ->
+                        sliderDragging = true
+                        sliderValue = value.coerceIn(0f, sliderMax)
+                    },
+                    onValueChangeFinished = {
+                        commitSliderValue(sliderValue)
+                    },
+                    onValueCommit = ::commitSliderValue,
+                    valueRange = 0f..sliderMax,
+                    steps = (seekMax - 1).coerceAtLeast(0),
+                    enabled = seekMax > 0,
+                    backdrop = backdrop,
+                    glassThumbEnabled = buttonGlassEnabled,
+                    modifier = Modifier
+                        .weight(1f)
+                        .padding(horizontal = 8.dp)
+                )
+
+                BottomBarGlassIconButton(
+                    onClick = { onIntent(ReadBookIntent.NextChapter) },
+                    icon = Icons.AutoMirrored.Filled.ArrowForward,
+                    colors = colors,
+                    backdrop = backdrop,
+                    menuConfig = state.menuConfig,
+                    glassEnabled = buttonGlassEnabled,
+                )
+            }
         }
         }
 
 
         Spacer(Modifier.height(8.dp))
         Spacer(Modifier.height(8.dp))

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

@@ -1348,6 +1348,7 @@ class ReadBookViewModel(
                 readMenuBottomBarBlurStyle = ReadBookConfig.readMenuBottomBarBlurStyle,
                 readMenuBottomBarBlurStyle = ReadBookConfig.readMenuBottomBarBlurStyle,
                 readMenuIconStyle = ReadBookConfig.readMenuIconStyle,
                 readMenuIconStyle = ReadBookConfig.readMenuIconStyle,
                 readMenuIconShowText = ReadBookConfig.readMenuIconShowText,
                 readMenuIconShowText = ReadBookConfig.readMenuIconShowText,
+                readSliderMode = ReadBookConfig.readSliderMode,
                 titleBarCustomIcons = ReadBookConfig.titleBarCustomIcons.toImmutableMap(),
                 titleBarCustomIcons = ReadBookConfig.titleBarCustomIcons.toImmutableMap(),
                 readMenuCustomIcons = ReadBookConfig.readMenuCustomIcons.toImmutableMap(),
                 readMenuCustomIcons = ReadBookConfig.readMenuCustomIcons.toImmutableMap(),
                 titleBarButtons = current.menuConfig.titleBarButtons,
                 titleBarButtons = current.menuConfig.titleBarButtons,
@@ -2518,10 +2519,13 @@ class ReadBookViewModel(
                 }
                 }
             }
             }
             is ConfigUpdate.ReadSliderMode -> {
             is ConfigUpdate.ReadSliderMode -> {
+                ReadBookConfig.readSliderMode = update.value
                 viewModelScope.launch {
                 viewModelScope.launch {
                     readSettingsRepository.setReadSliderMode(update.value)
                     readSettingsRepository.setReadSliderMode(update.value)
                 }
                 }
-                postEvent(EventBus.UPDATE_READ_ACTION_BAR, true)
+                _uiState.update {
+                    it.copy(menuConfig = it.menuConfig.copy(readSliderMode = update.value))
+                }
             }
             }
             is ConfigUpdate.DoubleHorizontalPage -> {
             is ConfigUpdate.DoubleHorizontalPage -> {
                 viewModelScope.launch {
                 viewModelScope.launch {

+ 0 - 13
app/src/main/java/io/legado/app/ui/book/read/sheet/MoreConfigSheet.kt

@@ -97,9 +97,6 @@ fun MoreConfigSheet(
             SectionTitle(stringResource(R.string.page_control))
             SectionTitle(stringResource(R.string.page_control))
             PageControlSettings(
             PageControlSettings(
                 preferences = preferences,
                 preferences = preferences,
-                onReadSliderModeChange = {
-                    onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.ReadSliderMode(it)))
-                },
                 onDoubleHorizontalPageChange = {
                 onDoubleHorizontalPageChange = {
                     onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.DoubleHorizontalPage(it)))
                     onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.DoubleHorizontalPage(it)))
                 },
                 },
@@ -248,7 +245,6 @@ private fun ScreenSettings(
 @Composable
 @Composable
 private fun PageControlSettings(
 private fun PageControlSettings(
     preferences: ReadPreferences,
     preferences: ReadPreferences,
-    onReadSliderModeChange: (String) -> Unit,
     onDoubleHorizontalPageChange: (String) -> Unit,
     onDoubleHorizontalPageChange: (String) -> Unit,
     onProgressBarBehaviorChange: (String) -> Unit,
     onProgressBarBehaviorChange: (String) -> Unit,
     onMouseWheelPageChange: (Boolean) -> Unit,
     onMouseWheelPageChange: (Boolean) -> Unit,
@@ -256,20 +252,11 @@ private fun PageControlSettings(
     onVolumeKeyPageOnPlayChange: (Boolean) -> Unit,
     onVolumeKeyPageOnPlayChange: (Boolean) -> Unit,
     onKeyPageOnLongPressChange: (Boolean) -> Unit,
     onKeyPageOnLongPressChange: (Boolean) -> Unit,
 ) {
 ) {
-    val readSliderModeEntries = stringArrayResource(R.array.read_slider_mode)
-    val readSliderModeValues = stringArrayResource(R.array.read_slider_mode_value)
     val doublePageEntries = stringArrayResource(R.array.double_page_title)
     val doublePageEntries = stringArrayResource(R.array.double_page_title)
     val doublePageValues = stringArrayResource(R.array.double_page_value)
     val doublePageValues = stringArrayResource(R.array.double_page_value)
     val progressBarEntries = stringArrayResource(R.array.progress_bar_behavior_title)
     val progressBarEntries = stringArrayResource(R.array.progress_bar_behavior_title)
     val progressBarValues = stringArrayResource(R.array.progress_bar_behavior_value)
     val progressBarValues = stringArrayResource(R.array.progress_bar_behavior_value)
 
 
-    TinyDropdownSettingItem(
-        title = stringResource(R.string.read_slider_mode),
-        selectedValue = preferences.readSliderMode,
-        displayEntries = readSliderModeEntries,
-        entryValues = readSliderModeValues,
-        onValueChange = onReadSliderModeChange,
-    )
     TinyDropdownSettingItem(
     TinyDropdownSettingItem(
         title = stringResource(R.string.double_page_horizontal),
         title = stringResource(R.string.double_page_horizontal),
         selectedValue = preferences.doubleHorizontalPage,
         selectedValue = preferences.doubleHorizontalPage,

+ 15 - 0
app/src/main/java/io/legado/app/ui/book/read/sheet/SystemMenuPage.kt

@@ -419,6 +419,7 @@ private fun BottomBarTab(
     onShowIconSheet: () -> Unit,
     onShowIconSheet: () -> Unit,
     onShowColorPicker: (Int, Int) -> Unit,
     onShowColorPicker: (Int, Int) -> Unit,
 ) {
 ) {
+    var readSliderMode by remember { mutableStateOf(preferences.readSliderMode) }
     var showIconText by remember { mutableStateOf(preferences.readMenuIconShowText) }
     var showIconText by remember { mutableStateOf(preferences.readMenuIconShowText) }
     var iconStyle by remember { mutableIntStateOf(preferences.readMenuIconStyle) }
     var iconStyle by remember { mutableIntStateOf(preferences.readMenuIconStyle) }
     var iconsPerRow by remember { mutableIntStateOf(preferences.readMenuIconItemsPerRow) }
     var iconsPerRow by remember { mutableIntStateOf(preferences.readMenuIconItemsPerRow) }
@@ -440,6 +441,20 @@ private fun BottomBarTab(
             .padding(horizontal = 16.dp)
             .padding(horizontal = 16.dp)
             .verticalScroll(rememberScrollState()),
             .verticalScroll(rememberScrollState()),
     ) {
     ) {
+        val readSliderModeEntries = stringArrayResource(R.array.read_slider_mode)
+        val readSliderModeValues = stringArrayResource(R.array.read_slider_mode_value)
+
+        TinyDropdownSettingItem(
+            title = stringResource(R.string.read_slider_mode),
+            selectedValue = readSliderMode,
+            displayEntries = readSliderModeEntries,
+            entryValues = readSliderModeValues,
+            onValueChange = {
+                readSliderMode = it
+                onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.ReadSliderMode(it)))
+            },
+        )
+
         SectionTitle(stringResource(R.string.read_menu_icon_style))
         SectionTitle(stringResource(R.string.read_menu_icon_style))
 
 
         TinySwitchSettingItem(
         TinySwitchSettingItem(

+ 0 - 3
app/src/main/res/values-zh-rCN/arrays.xml

@@ -210,9 +210,6 @@
     <string-array name="read_slider_mode">
     <string-array name="read_slider_mode">
         <item>常驻</item>
         <item>常驻</item>
         <item>不显示</item>
         <item>不显示</item>
-        <item>按钮置左</item>
-        <item>按钮置右</item>
-        <item>仅显示滑动条</item>
     </string-array>
     </string-array>
 
 
     <string-array name="title_bar_mode">
     <string-array name="title_bar_mode">

+ 0 - 3
app/src/main/res/values/array_values.xml

@@ -123,9 +123,6 @@
     <string-array name="read_slider_mode_value">
     <string-array name="read_slider_mode_value">
         <item>0</item>
         <item>0</item>
         <item>1</item>
         <item>1</item>
-        <item>2</item>
-        <item>3</item>
-        <item>4</item>
     </string-array>
     </string-array>
 
 
     <string-array name="title_bar_mode_value">
     <string-array name="title_bar_mode_value">

+ 0 - 3
app/src/main/res/values/arrays.xml

@@ -103,9 +103,6 @@
 	<string-array name="read_slider_mode">
 	<string-array name="read_slider_mode">
 		<item>Always</item>
 		<item>Always</item>
 		<item>Disable</item>
 		<item>Disable</item>
-		<item>Left button</item>
-		<item>Right button</item>
-		<item>Only slider</item>
 	</string-array>
 	</string-array>
 
 
 	<string-array name="title_bar_mode">
 	<string-array name="title_bar_mode">