Sfoglia il codice sorgente

Revert "移除共享布局"

This reverts commit 530aeea2a4674692a21b07365aa50bd6c8a9acf3.
HapeLee 1 anno fa
parent
commit
df8c8531a3

+ 68 - 3
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<Config> = 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<Config>(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 {

+ 21 - 19
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 -> {

+ 2 - 0
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)

+ 7 - 0
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))

+ 0 - 1
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">
 
         <io.legado.app.ui.widget.text.TextInputLayout

+ 8 - 0
app/src/main/res/layout/dialog_read_book_style.xml

@@ -242,6 +242,14 @@
                     android:textSize="12sp"
                     android:textStyle="bold" />
 
+                <com.google.android.material.checkbox.MaterialCheckBox
+                    android:id="@+id/cb_share_layout"
+                    android:layout_width="wrap_content"
+                    android:layout_height="20dp"
+                    android:text="@string/share_layout"
+                    android:layout_marginStart="6dp"
+                    android:layout_marginEnd="16dp" />
+
             </LinearLayout>
 
             <androidx.recyclerview.widget.RecyclerView