From aa16376daef92080776606360b1db07b139e7b92 Mon Sep 17 00:00:00 2001
From: HapeLee <63206378+HapeLee@users.noreply.github.com>
Date: Thu, 11 Jun 2026 01:34:30 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20=E5=B1=8F=E5=B9=95=E6=96=B9=E5=90=91?=
=?UTF-8?q?=E5=92=8C=E5=B1=8F=E5=B9=95=E8=B6=85=E6=97=B6=E8=AE=BE=E7=BD=AE?=
=?UTF-8?q?=E5=88=87=E6=8D=A2=E5=90=8E=E4=B8=8D=E7=AB=8B=E5=8D=B3=E7=94=9F?=
=?UTF-8?q?=E6=95=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
MoreConfigSheet 中屏幕方向和屏幕超时的变更只写入 DataStore,需经过
6 步异步传播(DataStore → Flow → ViewModel → Effect → Controller)
才能生效,导致:
- 切换横屏后文字显示不全,仍保持竖屏布局
- 目录不跟随横屏显示
- 屏幕超时设置延迟生效
修复:
- 新增 ReadBookIntent.SetOrientation 意图,直接写入 ReadConfig 并发射 Effect
- 将 ReadBookIntent.KeepLightChanged 改为带值的 data class,同理直接生效
- MoreConfigSheet 在写 DataStore 的同时同步调用 onIntent,立即应用变更
- 新增反向横屏(REVERSE_LANDSCAPE)选项
---
.../io/legado/app/ui/book/read/ReadBookContract.kt | 3 ++-
.../io/legado/app/ui/book/read/ReadBookViewModel.kt | 11 ++++++++++-
.../legado/app/ui/book/read/sheet/MoreConfigSheet.kt | 2 ++
app/src/main/res/values-zh-rCN/strings.xml | 1 +
app/src/main/res/values-zh-rTW/strings.xml | 1 +
app/src/main/res/values/array_values.xml | 1 +
app/src/main/res/values/arrays.xml | 1 +
app/src/main/res/values/strings.xml | 1 +
8 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookContract.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookContract.kt
index 01a863cfc..2ab75bf76 100644
--- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookContract.kt
+++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookContract.kt
@@ -425,7 +425,8 @@ sealed interface ReadBookIntent {
data class TextActionDict(val text: String) : ReadBookIntent
// Screen / selection config
- data object KeepLightChanged : ReadBookIntent
+ data class KeepLightChanged(val value: String) : ReadBookIntent
+ data class SetOrientation(val value: String) : ReadBookIntent
data class TextSelectAbleChanged(val enabled: Boolean) : ReadBookIntent
// Media / TTS
diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt
index 2f14f8b09..6312747f6 100644
--- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt
+++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt
@@ -35,6 +35,7 @@ import io.legado.app.domain.usecase.GetReadingProgressUseCase
import io.legado.app.domain.usecase.UploadReadingProgressUseCase
import io.legado.app.exception.NoStackTraceException
import io.legado.app.help.DefaultData
+import io.legado.app.ui.config.readConfig.ReadConfig
import io.legado.app.help.book.BookHelp
import io.legado.app.help.book.ContentProcessor
import io.legado.app.help.book.isEpub
@@ -581,7 +582,15 @@ class ReadBookViewModel(
is ReadBookIntent.SaveMenuButtonConfig -> saveMenuButtonConfig(intent.items)
is ReadBookIntent.SaveTitleBarButtonConfig -> saveTitleBarButtonConfig(intent.items)
- is ReadBookIntent.KeepLightChanged -> _effects.tryEmit(ReadBookEffect.UpScreenTimeOut)
+ is ReadBookIntent.KeepLightChanged -> {
+ ReadConfig.keepLight = intent.value
+ _readPreferences.update { it.copy(keepLight = intent.value) }
+ _effects.tryEmit(ReadBookEffect.UpScreenTimeOut)
+ }
+ is ReadBookIntent.SetOrientation -> {
+ ReadConfig.screenOrientation = intent.value
+ _effects.tryEmit(ReadBookEffect.SetOrientation)
+ }
is ReadBookIntent.TextSelectAbleChanged -> _effects.tryEmit(
ReadBookEffect.UpTextSelectAble(
intent.enabled
diff --git a/app/src/main/java/io/legado/app/ui/book/read/sheet/MoreConfigSheet.kt b/app/src/main/java/io/legado/app/ui/book/read/sheet/MoreConfigSheet.kt
index 952db073b..243b8204f 100644
--- a/app/src/main/java/io/legado/app/ui/book/read/sheet/MoreConfigSheet.kt
+++ b/app/src/main/java/io/legado/app/ui/book/read/sheet/MoreConfigSheet.kt
@@ -56,9 +56,11 @@ fun MoreConfigSheet(
ScreenSettings(
preferences = preferences,
onScreenOrientationChange = {
+ onIntent(ReadBookIntent.SetOrientation(it))
scope.launch { readSettingsRepository.setScreenOrientation(it) }
},
onKeepLightChange = {
+ onIntent(ReadBookIntent.KeepLightChanged(it))
scope.launch { readSettingsRepository.setKeepLight(it) }
},
onHideStatusBarChange = {
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 751f47252..6593850a7 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -1324,6 +1324,7 @@
保留启用状态
点击预览图片
反向竖屏
+ 反向横屏
删除ruby标签
删除h标签
调整本章页数
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 424d7811c..0423bab46 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -1193,6 +1193,7 @@
保留启用状态
点击预览图片
反向竖屏
+ 反向橫屏
删除ruby标签
删除h标签
调整本章页数
diff --git a/app/src/main/res/values/array_values.xml b/app/src/main/res/values/array_values.xml
index dff580148..ebb0acf40 100644
--- a/app/src/main/res/values/array_values.xml
+++ b/app/src/main/res/values/array_values.xml
@@ -50,6 +50,7 @@
- 2
- 3
- 4
+ - 5
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index f279eac99..67ab13d29 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -124,6 +124,7 @@
- @string/screen_landscape
- @string/screen_sensor
- @string/screen_portrait_reversed
+ - @string/screen_landscape_reversed
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7ce227d21..c6dd9e280 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1356,6 +1356,7 @@
Click to preview image
Default Homepage
Portrait Reversed
+ Landscape Reversed
Delete ruby tag
Delete h tag
Adjust of chapter page