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