From df8c8531a3ef9c891acf9c455aca42a356cddab2 Mon Sep 17 00:00:00 2001 From: HapeLee <1321903405@qq.com> Date: Sat, 1 Nov 2025 15:13:58 +0800 Subject: [PATCH] =?UTF-8?q?Revert=20"=E7=A7=BB=E9=99=A4=E5=85=B1=E4=BA=AB?= =?UTF-8?q?=E5=B8=83=E5=B1=80"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 530aeea2a4674692a21b07365aa50bd6c8a9acf3. --- .../legado/app/help/config/ReadBookConfig.kt | 71 ++++++++++++++++++- .../java/io/legado/app/help/storage/Backup.kt | 40 ++++++----- .../io/legado/app/help/storage/Restore.kt | 2 + .../ui/book/read/config/ReadStyleDialog.kt | 7 ++ .../main/res/layout/dialog_content_edit.xml | 1 - .../res/layout/dialog_read_book_style.xml | 8 +++ 6 files changed, 106 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/io/legado/app/help/config/ReadBookConfig.kt b/app/src/main/java/io/legado/app/help/config/ReadBookConfig.kt index 074a40363..85b27cafa 100644 --- a/app/src/main/java/io/legado/app/help/config/ReadBookConfig.kt +++ b/app/src/main/java/io/legado/app/help/config/ReadBookConfig.kt @@ -45,13 +45,16 @@ object ReadBookConfig { val configFilePath = FileUtils.getPath(appCtx.filesDir, configFileName) val shareConfigFilePath = FileUtils.getPath(appCtx.filesDir, shareConfigFileName) val configList: ArrayList = arrayListOf() + lateinit var shareConfig: Config var durConfig get() = getConfig(styleSelect) set(value) { configList[styleSelect] = value + if (shareLayout) { + shareConfig = value + } } - var isComic: Boolean = false var bg: Drawable? = null var bgMeanColor: Int = 0 @@ -60,6 +63,7 @@ object ReadBookConfig { init { initConfigs() + initShareConfig() } @Synchronized @@ -87,6 +91,20 @@ object ReadBookConfig { } } + fun initShareConfig() { + val configFile = File(shareConfigFilePath) + var c: Config? = null + if (configFile.exists()) { + try { + val json = configFile.readText() + c = GSON.fromJsonObject(json).getOrThrow() + } catch (e: Exception) { + e.printOnDebug() + } + } + shareConfig = c ?: configList.getOrNull(5) ?: Config() + } + fun upBg(width: Int, height: Int) { val drawable = durConfig.curBgDrawable(width, height) if (drawable is BitmapDrawable && drawable.bitmap != null) { @@ -106,6 +124,10 @@ object ReadBookConfig { FileUtils.delete(configFilePath) FileUtils.createFileIfNotExist(configFilePath).writeText(it) } + GSON.toJson(shareConfig).let { + FileUtils.delete(shareConfigFilePath) + FileUtils.createFileIfNotExist(shareConfigFilePath).writeText(it) + } } } } @@ -179,6 +201,13 @@ object ReadBookConfig { appCtx.putPrefInt(PreferKey.comicStyleSelect, value) } } + var shareLayout = appCtx.getPrefBoolean(PreferKey.shareLayout) + set(value) { + field = value + if (appCtx.getPrefBoolean(PreferKey.shareLayout) != value) { + appCtx.putPrefBoolean(PreferKey.shareLayout, value) + } + } /** * 两端对齐 @@ -193,7 +222,7 @@ object ReadBookConfig { var hideNavigationBar = appCtx.getPrefBoolean(PreferKey.hideNavigationBar) var useZhLayout = appCtx.getPrefBoolean(PreferKey.useZhLayout) - val config get() = durConfig + val config get() = if (shareLayout) shareConfig else durConfig var bgAlpha: Int get() = config.bgAlpha @@ -437,7 +466,43 @@ object ReadBookConfig { } fun getExportConfig(): Config { - return durConfig.copy() + val exportConfig = durConfig.copy() + if (shareLayout) { + exportConfig.textFont = shareConfig.textFont + exportConfig.textBold = shareConfig.textBold + exportConfig.textSize = shareConfig.textSize + exportConfig.letterSpacing = shareConfig.letterSpacing + exportConfig.lineSpacingExtra = shareConfig.lineSpacingExtra + exportConfig.paragraphSpacing = shareConfig.paragraphSpacing + exportConfig.titleMode = shareConfig.titleMode + exportConfig.titleSize = shareConfig.titleSize + exportConfig.titleTopSpacing = shareConfig.titleTopSpacing + exportConfig.titleBottomSpacing = shareConfig.titleBottomSpacing + exportConfig.paddingBottom = shareConfig.paddingBottom + exportConfig.paddingLeft = shareConfig.paddingLeft + exportConfig.paddingRight = shareConfig.paddingRight + exportConfig.paddingTop = shareConfig.paddingTop + exportConfig.headerPaddingBottom = shareConfig.headerPaddingBottom + exportConfig.headerPaddingLeft = shareConfig.headerPaddingLeft + exportConfig.headerPaddingRight = shareConfig.headerPaddingRight + exportConfig.headerPaddingTop = shareConfig.headerPaddingTop + exportConfig.footerPaddingBottom = shareConfig.footerPaddingBottom + exportConfig.footerPaddingLeft = shareConfig.footerPaddingLeft + exportConfig.footerPaddingRight = shareConfig.footerPaddingRight + exportConfig.footerPaddingTop = shareConfig.footerPaddingTop + exportConfig.showHeaderLine = shareConfig.showHeaderLine + exportConfig.showFooterLine = shareConfig.showFooterLine + exportConfig.tipHeaderLeft = shareConfig.tipHeaderLeft + exportConfig.tipHeaderMiddle = shareConfig.tipHeaderMiddle + exportConfig.tipHeaderRight = shareConfig.tipHeaderRight + exportConfig.tipFooterLeft = shareConfig.tipFooterLeft + exportConfig.tipFooterMiddle = shareConfig.tipFooterMiddle + exportConfig.tipFooterRight = shareConfig.tipFooterRight + exportConfig.tipColor = shareConfig.tipColor + exportConfig.headerMode = shareConfig.headerMode + exportConfig.footerMode = shareConfig.footerMode + } + return exportConfig } fun import(byteArray: ByteArray): Config { diff --git a/app/src/main/java/io/legado/app/help/storage/Backup.kt b/app/src/main/java/io/legado/app/help/storage/Backup.kt index 8ee3f4fbe..a60c6a231 100644 --- a/app/src/main/java/io/legado/app/help/storage/Backup.kt +++ b/app/src/main/java/io/legado/app/help/storage/Backup.kt @@ -29,8 +29,6 @@ import java.text.SimpleDateFormat import java.util.* import java.util.concurrent.TimeUnit import kotlin.coroutines.coroutineContext -import androidx.core.content.edit -import androidx.core.net.toUri /** * 备份 @@ -146,6 +144,10 @@ object Backup { FileUtils.createFileIfNotExist(backupPath + File.separator + ReadBookConfig.configFileName) .writeText(it) } + GSON.toJson(ReadBookConfig.shareConfig).let { + FileUtils.createFileIfNotExist(backupPath + File.separator + ReadBookConfig.shareConfigFileName) + .writeText(it) + } GSON.toJson(ThemeConfig.configList).let { FileUtils.createFileIfNotExist(backupPath + File.separator + ThemeConfig.configFileName) .writeText(it) @@ -156,27 +158,27 @@ object Backup { } coroutineContext.ensureActive() appCtx.getSharedPreferences(backupPath, "config")?.let { sp -> - sp.edit(commit = true) { - appCtx.defaultSharedPreferences.all.forEach { (key, value) -> - if (BackupConfig.keyIsNotIgnore(key)) { - when (key) { - PreferKey.webDavPassword -> { - putString(key, aes.runCatching { - encryptBase64(value.toString()) - }.getOrDefault(value.toString())) - } + val edit = sp.edit() + appCtx.defaultSharedPreferences.all.forEach { (key, value) -> + if (BackupConfig.keyIsNotIgnore(key)) { + when (key) { + PreferKey.webDavPassword -> { + edit.putString(key, aes.runCatching { + encryptBase64(value.toString()) + }.getOrDefault(value.toString())) + } - else -> when (value) { - is Int -> putInt(key, value) - is Boolean -> putBoolean(key, value) - is Long -> putLong(key, value) - is Float -> putFloat(key, value) - is String -> putString(key, value) - } + else -> when (value) { + is Int -> edit.putInt(key, value) + is Boolean -> edit.putBoolean(key, value) + is Long -> edit.putLong(key, value) + is Float -> edit.putFloat(key, value) + is String -> edit.putString(key, value) } } } } + edit.commit() } coroutineContext.ensureActive() val zipFileName = getNowZipFileName() @@ -198,7 +200,7 @@ object Backup { } path.isContentScheme() -> { - copyBackup(context, path.toUri(), backupFileName) + copyBackup(context, Uri.parse(path), backupFileName) } else -> { diff --git a/app/src/main/java/io/legado/app/help/storage/Restore.kt b/app/src/main/java/io/legado/app/help/storage/Restore.kt index 9f464392f..a3bcafbc0 100644 --- a/app/src/main/java/io/legado/app/help/storage/Restore.kt +++ b/app/src/main/java/io/legado/app/help/storage/Restore.kt @@ -228,6 +228,7 @@ object Restore { }?.runCatching { FileUtils.delete(ReadBookConfig.shareConfigFilePath) copyTo(File(ReadBookConfig.shareConfigFilePath)) + ReadBookConfig.initShareConfig() }?.onFailure { AppLog.put("恢复阅读界面出错\n${it.localizedMessage}", it) } @@ -268,6 +269,7 @@ object Restore { ReadBookConfig.apply { comicStyleSelect = appCtx.getPrefInt(PreferKey.comicStyleSelect) readStyleSelect = appCtx.getPrefInt(PreferKey.readStyleSelect) + shareLayout = appCtx.getPrefBoolean(PreferKey.shareLayout) hideStatusBar = appCtx.getPrefBoolean(PreferKey.hideStatusBar) hideNavigationBar = appCtx.getPrefBoolean(PreferKey.hideNavigationBar) autoReadSpeed = appCtx.getPrefInt(PreferKey.autoReadSpeed, 46) diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/ReadStyleDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/ReadStyleDialog.kt index d158eb21d..ed0e17abe 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/config/ReadStyleDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/config/ReadStyleDialog.kt @@ -76,6 +76,7 @@ class ReadStyleDialog : BaseBottomSheetDialogFragment(R.layout.dialog_read_book_ } private fun initData() { + binding.cbShareLayout.isChecked = ReadBookConfig.shareLayout upView() styleAdapter.setItems(ReadBookConfig.configList) } @@ -131,6 +132,12 @@ class ReadStyleDialog : BaseBottomSheetDialogFragment(R.layout.dialog_read_book_ ReadBook.loadContent(false) } + cbShareLayout.setOnCheckedChangeListener { _, isChecked -> + ReadBookConfig.shareLayout = isChecked + upView() + postEvent(EventBus.UP_CONFIG, arrayListOf(1, 2, 5)) + } + dsbTextSize.onChanged = { ReadBookConfig.textSize = it + 5 postEvent(EventBus.UP_CONFIG, arrayListOf(8, 5)) diff --git a/app/src/main/res/layout/dialog_content_edit.xml b/app/src/main/res/layout/dialog_content_edit.xml index 5f9975a8b..e3117705b 100644 --- a/app/src/main/res/layout/dialog_content_edit.xml +++ b/app/src/main/res/layout/dialog_content_edit.xml @@ -17,7 +17,6 @@ android:id="@+id/scrollView" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingBottom="24dp" app:layout_constraintTop_toBottomOf="@id/tool_bar"> + +