fix: 底栏显隐开关
This commit is contained in:
9 files changed
+74
-66
No files matched your search
@@ -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() })
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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(),
|
||||||
|
|||||||
@@ -1400,51 +1400,53 @@ private fun MenuBottomBar(
|
|||||||
.animateContentSize(),
|
.animateContentSize(),
|
||||||
) {
|
) {
|
||||||
// Seek bar row: prev + slider + next
|
// Seek bar row: prev + slider + next
|
||||||
Row(
|
AnimatedVisibility(visible = state.menuConfig.readSliderMode != "1") {
|
||||||
modifier = Modifier
|
Row(
|
||||||
.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,
|
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.weight(1f)
|
.fillMaxWidth()
|
||||||
.padding(horizontal = 8.dp)
|
.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(
|
ReadMenuSlider(
|
||||||
onClick = { onIntent(ReadBookIntent.NextChapter) },
|
value = sliderValue.coerceIn(0f, sliderMax),
|
||||||
icon = Icons.AutoMirrored.Filled.ArrowForward,
|
onValueChange = { value ->
|
||||||
colors = colors,
|
sliderDragging = true
|
||||||
backdrop = backdrop,
|
sliderValue = value.coerceIn(0f, sliderMax)
|
||||||
menuConfig = state.menuConfig,
|
},
|
||||||
glassEnabled = buttonGlassEnabled,
|
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))
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
Reference in new issue
Block a user