fix: prefDelegate 直接读DataStore值
This commit is contained in:
@@ -1,13 +1,19 @@
|
|||||||
package io.legado.app.help.config
|
package io.legado.app.help.config
|
||||||
|
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
import android.os.Build
|
|
||||||
import io.legado.app.BuildConfig
|
import io.legado.app.BuildConfig
|
||||||
import io.legado.app.constant.PreferKey
|
import io.legado.app.constant.PreferKey
|
||||||
import io.legado.app.ui.config.themeConfig.ThemeConfig
|
|
||||||
import io.legado.app.data.appDb
|
import io.legado.app.data.appDb
|
||||||
import io.legado.app.data.repository.ReadPreferences
|
import io.legado.app.data.repository.ReadPreferences
|
||||||
import io.legado.app.ui.book.manga.config.MangaScrollMode
|
import io.legado.app.ui.book.manga.config.MangaScrollMode
|
||||||
|
import io.legado.app.ui.config.backupConfig.BackupConfig
|
||||||
|
import io.legado.app.ui.config.bookshelfConfig.BookshelfConfig
|
||||||
|
import io.legado.app.ui.config.coverConfig.CoverConfig
|
||||||
|
import io.legado.app.ui.config.downloadCacheConfig.DownloadCacheConfig
|
||||||
|
import io.legado.app.ui.config.importBookConfig.ImportBookConfig
|
||||||
|
import io.legado.app.ui.config.otherConfig.OtherConfig
|
||||||
|
import io.legado.app.ui.config.readConfig.ReadConfig
|
||||||
|
import io.legado.app.ui.config.themeConfig.ThemeConfig
|
||||||
import io.legado.app.utils.canvasrecorder.CanvasRecorderFactory
|
import io.legado.app.utils.canvasrecorder.CanvasRecorderFactory
|
||||||
import io.legado.app.utils.getPrefBoolean
|
import io.legado.app.utils.getPrefBoolean
|
||||||
import io.legado.app.utils.getPrefInt
|
import io.legado.app.utils.getPrefInt
|
||||||
@@ -16,20 +22,19 @@ import io.legado.app.utils.isNightMode
|
|||||||
import io.legado.app.utils.putPrefBoolean
|
import io.legado.app.utils.putPrefBoolean
|
||||||
import io.legado.app.utils.putPrefInt
|
import io.legado.app.utils.putPrefInt
|
||||||
import io.legado.app.utils.putPrefString
|
import io.legado.app.utils.putPrefString
|
||||||
import io.legado.app.utils.removePref
|
|
||||||
import io.legado.app.utils.sysConfiguration
|
import io.legado.app.utils.sysConfiguration
|
||||||
import io.legado.app.utils.toastOnUi
|
import io.legado.app.utils.toastOnUi
|
||||||
import splitties.init.appCtx
|
import splitties.init.appCtx
|
||||||
|
|
||||||
@Suppress("MemberVisibilityCanBePrivate", "ConstPropertyName")
|
@Suppress("MemberVisibilityCanBePrivate", "ConstPropertyName")
|
||||||
object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
||||||
val isCronet = appCtx.getPrefBoolean(PreferKey.cronet)
|
val isCronet get() = DownloadCacheConfig.cronetEnable
|
||||||
var useAntiAlias = appCtx.getPrefBoolean(PreferKey.antiAlias)
|
val useAntiAlias get() = OtherConfig.antiAlias
|
||||||
var userAgent: String = getPrefUserAgent()
|
val userAgent: String get() = DownloadCacheConfig.userAgent
|
||||||
|
|
||||||
var isEInkMode = appCtx.getPrefString("app_theme", "0") == "4"
|
var isEInkMode = appCtx.getPrefString("app_theme", "0") == "4"
|
||||||
var isTransparent = appCtx.getPrefString("app_theme", "0") == "13"
|
var isTransparent = appCtx.getPrefString("app_theme", "0") == "13"
|
||||||
var customMode = appCtx.getPrefString(PreferKey.customMode)
|
val customMode get() = ThemeConfig.customMode
|
||||||
var clickActionTL = appCtx.getPrefInt(PreferKey.clickActionTL, 2)
|
var clickActionTL = appCtx.getPrefInt(PreferKey.clickActionTL, 2)
|
||||||
var clickActionTC = appCtx.getPrefInt(PreferKey.clickActionTC, 2)
|
var clickActionTC = appCtx.getPrefInt(PreferKey.clickActionTC, 2)
|
||||||
var clickActionTR = appCtx.getPrefInt(PreferKey.clickActionTR, 1)
|
var clickActionTR = appCtx.getPrefInt(PreferKey.clickActionTR, 1)
|
||||||
@@ -51,51 +56,31 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
var mangaClickActionBC = appCtx.getPrefInt(PreferKey.mangaClickActionBC, 1)
|
var mangaClickActionBC = appCtx.getPrefInt(PreferKey.mangaClickActionBC, 1)
|
||||||
var mangaClickActionBR = appCtx.getPrefInt(PreferKey.mangaClickActionBR, 1)
|
var mangaClickActionBR = appCtx.getPrefInt(PreferKey.mangaClickActionBR, 1)
|
||||||
|
|
||||||
var AppTheme = appCtx.getPrefString(PreferKey.appTheme, "0")
|
val AppTheme get() = ThemeConfig.appTheme
|
||||||
|
|
||||||
var swipeAnimation = appCtx.getPrefBoolean(PreferKey.swipeAnimation, true)
|
val swipeAnimation get() = ThemeConfig.swipeAnimation
|
||||||
|
|
||||||
var useDefaultCover = appCtx.getPrefBoolean(PreferKey.useDefaultCover, false)
|
val useDefaultCover get() = CoverConfig.useDefaultCover
|
||||||
var optimizeRender = CanvasRecorderFactory.isSupport
|
var optimizeRender
|
||||||
&& appCtx.getPrefBoolean(PreferKey.optimizeRender, false)
|
get() = CanvasRecorderFactory.isSupport && ReadConfig.optimizeRender
|
||||||
var recordLog = appCtx.getPrefBoolean(PreferKey.recordLog)
|
set(value) {
|
||||||
|
ReadConfig.optimizeRender = value
|
||||||
|
}
|
||||||
|
val recordLog get() = OtherConfig.recordLog
|
||||||
var webServiceAutoStart = appCtx.getPrefBoolean(PreferKey.webServiceAutoStart, false)
|
var webServiceAutoStart = appCtx.getPrefBoolean(PreferKey.webServiceAutoStart, false)
|
||||||
|
|
||||||
// -- lyc 版本特性 --
|
// -- lyc 版本特性 --
|
||||||
var adaptSpecialStyle = appCtx.getPrefBoolean(PreferKey.adaptSpecialStyle, true)
|
val adaptSpecialStyle get() = ReadConfig.adaptSpecialStyle
|
||||||
var useUnderline = appCtx.getPrefBoolean(PreferKey.useUnderline, false)
|
val useUnderline get() = ReadConfig.useUnderline
|
||||||
|
|
||||||
private var screenOrientationValue = appCtx.getPrefString(PreferKey.screenOrientation) ?: "0"
|
|
||||||
private var noAnimScrollPageValue = appCtx.getPrefBoolean(PreferKey.noAnimScrollPage, false)
|
|
||||||
private var tocUiUseReplaceValue = appCtx.getPrefBoolean(PreferKey.tocUiUseReplace)
|
|
||||||
private var tocCountWordsValue = appCtx.getPrefBoolean(PreferKey.tocCountWords, true)
|
|
||||||
private var autoChangeSourceValue = appCtx.getPrefBoolean(PreferKey.autoChangeSource, true)
|
|
||||||
private var clickImgWayValue = appCtx.getPrefString(PreferKey.clickImgWay, "2") ?: "2"
|
|
||||||
private var doublePageHorizontalValue = appCtx.getPrefString(PreferKey.doublePageHorizontal, "0") ?: "0"
|
|
||||||
private var progressBarBehaviorValue = appCtx.getPrefString(PreferKey.progressBarBehavior, "page") ?: "page"
|
|
||||||
private var keyPageOnLongPressValue = appCtx.getPrefBoolean(PreferKey.keyPageOnLongPress, false)
|
|
||||||
private var volumeKeyPageValue = appCtx.getPrefBoolean(PreferKey.volumeKeyPage, true)
|
|
||||||
private var volumeKeyPageOnPlayValue = appCtx.getPrefBoolean(PreferKey.volumeKeyPageOnPlay, true)
|
|
||||||
private var mouseWheelPageValue = appCtx.getPrefBoolean(PreferKey.mouseWheelPage, true)
|
|
||||||
private var paddingDisplayCutoutsValue = appCtx.getPrefBoolean(PreferKey.paddingDisplayCutouts, false)
|
|
||||||
private var pageTouchSlopValue = appCtx.getPrefInt(PreferKey.pageTouchSlop, 0)
|
|
||||||
private var showReadTitleBarAdditionValue =
|
|
||||||
appCtx.getPrefBoolean(PreferKey.showReadTitleAddition, true)
|
|
||||||
private var titleBarModeValue = appCtx.getPrefString(PreferKey.titleBarMode, "1") ?: "1"
|
|
||||||
private var menuAlphaValue = appCtx.getPrefInt(PreferKey.menuAlpha, 100)
|
|
||||||
private var readSliderModeValue = appCtx.getPrefString(PreferKey.readSliderMode, "0") ?: "0"
|
|
||||||
private var readBarStyleFollowPageValue =
|
private var readBarStyleFollowPageValue =
|
||||||
appCtx.getPrefBoolean(PreferKey.readBarStyleFollowPage, false)
|
appCtx.getPrefBoolean(PreferKey.readBarStyleFollowPage, false)
|
||||||
private var readBarStyleValue = appCtx.getPrefInt(PreferKey.readBarStyle, 0)
|
private var readBarStyleValue = appCtx.getPrefInt(PreferKey.readBarStyle, 0)
|
||||||
private var defaultSourceChangeAllValue =
|
|
||||||
appCtx.getPrefBoolean(PreferKey.defaultSourceChangeAll, true)
|
|
||||||
private var sliderVibratorValue = appCtx.getPrefBoolean(PreferKey.sliderVibrator, false)
|
|
||||||
private var selectVibratorValue = appCtx.getPrefBoolean(PreferKey.selectVibrator, false)
|
|
||||||
|
|
||||||
fun syncReadPreferences(preferences: ReadPreferences) {
|
fun syncReadPreferences(preferences: ReadPreferences) {
|
||||||
optimizeRender = CanvasRecorderFactory.isSupport && preferences.optimizeRender
|
ReadConfig.optimizeRender = preferences.optimizeRender
|
||||||
adaptSpecialStyle = preferences.adaptSpecialStyle
|
ReadConfig.adaptSpecialStyle = preferences.adaptSpecialStyle
|
||||||
useUnderline = preferences.useUnderline
|
ReadConfig.useUnderline = preferences.useUnderline
|
||||||
clickActionTL = preferences.clickActionTL
|
clickActionTL = preferences.clickActionTL
|
||||||
clickActionTC = preferences.clickActionTC
|
clickActionTC = preferences.clickActionTC
|
||||||
clickActionTR = preferences.clickActionTR
|
clickActionTR = preferences.clickActionTR
|
||||||
@@ -105,29 +90,29 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
clickActionBL = preferences.clickActionBL
|
clickActionBL = preferences.clickActionBL
|
||||||
clickActionBC = preferences.clickActionBC
|
clickActionBC = preferences.clickActionBC
|
||||||
clickActionBR = preferences.clickActionBR
|
clickActionBR = preferences.clickActionBR
|
||||||
screenOrientationValue = preferences.screenOrientation
|
ReadConfig.screenOrientation = preferences.screenOrientation
|
||||||
noAnimScrollPageValue = preferences.noAnimScrollPage
|
ReadConfig.noAnimScrollPage = preferences.noAnimScrollPage
|
||||||
tocUiUseReplaceValue = preferences.tocUiUseReplace
|
ReadConfig.tocUiUseReplace = preferences.tocUiUseReplace
|
||||||
tocCountWordsValue = preferences.tocCountWords
|
ReadConfig.tocCountWords = preferences.tocCountWords
|
||||||
autoChangeSourceValue = preferences.autoChangeSource
|
ReadConfig.autoChangeSource = preferences.autoChangeSource
|
||||||
clickImgWayValue = preferences.clickImgWay
|
ReadConfig.clickImgWay = preferences.clickImgWay
|
||||||
doublePageHorizontalValue = preferences.doubleHorizontalPage
|
ReadConfig.doubleHorizontalPage = preferences.doubleHorizontalPage
|
||||||
progressBarBehaviorValue = preferences.progressBarBehavior
|
ReadConfig.progressBarBehavior = preferences.progressBarBehavior
|
||||||
keyPageOnLongPressValue = preferences.keyPageOnLongPress
|
ReadConfig.keyPageOnLongPress = preferences.keyPageOnLongPress
|
||||||
volumeKeyPageValue = preferences.volumeKeyPage
|
ReadConfig.volumeKeyPage = preferences.volumeKeyPage
|
||||||
volumeKeyPageOnPlayValue = preferences.volumeKeyPageOnPlay
|
ReadConfig.volumeKeyPageOnPlay = preferences.volumeKeyPageOnPlay
|
||||||
mouseWheelPageValue = preferences.mouseWheelPage
|
ReadConfig.mouseWheelPage = preferences.mouseWheelPage
|
||||||
paddingDisplayCutoutsValue = preferences.paddingDisplayCutouts
|
ReadConfig.paddingDisplayCutouts = preferences.paddingDisplayCutouts
|
||||||
pageTouchSlopValue = preferences.pageTouchSlop
|
ReadConfig.pageTouchSlop = preferences.pageTouchSlop
|
||||||
showReadTitleBarAdditionValue = preferences.showReadTitleAddition
|
ReadConfig.showReadTitleAddition = preferences.showReadTitleAddition
|
||||||
titleBarModeValue = preferences.titleBarMode
|
ReadConfig.titleBarMode = preferences.titleBarMode
|
||||||
menuAlphaValue = preferences.menuAlpha
|
ReadConfig.menuAlpha = preferences.menuAlpha
|
||||||
readSliderModeValue = preferences.readSliderMode
|
ReadConfig.readSliderMode = preferences.readSliderMode
|
||||||
readBarStyleFollowPageValue = preferences.readBarStyleFollowPage
|
readBarStyleFollowPageValue = preferences.readBarStyleFollowPage
|
||||||
readBarStyleValue = preferences.readBarStyle
|
readBarStyleValue = preferences.readBarStyle
|
||||||
defaultSourceChangeAllValue = preferences.defaultSourceChangeAll
|
ReadConfig.defaultSourceChangeAll = preferences.defaultSourceChangeAll
|
||||||
sliderVibratorValue = preferences.sliderVibrator
|
ReadConfig.sliderVibrator = preferences.sliderVibrator
|
||||||
selectVibratorValue = preferences.selectVibrator
|
ReadConfig.selectVibrator = preferences.selectVibrator
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateReadBarStyleCache(value: Int) {
|
fun updateReadBarStyleCache(value: Int) {
|
||||||
@@ -136,57 +121,10 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
|
|
||||||
private fun syncReadPreferenceFromSharedPreferences(key: String?) {
|
private fun syncReadPreferenceFromSharedPreferences(key: String?) {
|
||||||
when (key) {
|
when (key) {
|
||||||
PreferKey.optimizeRender -> optimizeRender = CanvasRecorderFactory.isSupport &&
|
|
||||||
appCtx.getPrefBoolean(PreferKey.optimizeRender, false)
|
|
||||||
PreferKey.adaptSpecialStyle -> adaptSpecialStyle =
|
|
||||||
appCtx.getPrefBoolean(PreferKey.adaptSpecialStyle, true)
|
|
||||||
PreferKey.useUnderline -> useUnderline =
|
|
||||||
appCtx.getPrefBoolean(PreferKey.useUnderline, false)
|
|
||||||
PreferKey.screenOrientation -> screenOrientationValue =
|
|
||||||
appCtx.getPrefString(PreferKey.screenOrientation) ?: "0"
|
|
||||||
PreferKey.noAnimScrollPage -> noAnimScrollPageValue =
|
|
||||||
appCtx.getPrefBoolean(PreferKey.noAnimScrollPage, false)
|
|
||||||
PreferKey.tocUiUseReplace -> tocUiUseReplaceValue =
|
|
||||||
appCtx.getPrefBoolean(PreferKey.tocUiUseReplace)
|
|
||||||
PreferKey.tocCountWords -> tocCountWordsValue =
|
|
||||||
appCtx.getPrefBoolean(PreferKey.tocCountWords, true)
|
|
||||||
PreferKey.autoChangeSource -> autoChangeSourceValue =
|
|
||||||
appCtx.getPrefBoolean(PreferKey.autoChangeSource, true)
|
|
||||||
PreferKey.clickImgWay -> clickImgWayValue =
|
|
||||||
appCtx.getPrefString(PreferKey.clickImgWay, "2") ?: "2"
|
|
||||||
PreferKey.doublePageHorizontal -> doublePageHorizontalValue =
|
|
||||||
appCtx.getPrefString(PreferKey.doublePageHorizontal, "0") ?: "0"
|
|
||||||
PreferKey.progressBarBehavior -> progressBarBehaviorValue =
|
|
||||||
appCtx.getPrefString(PreferKey.progressBarBehavior, "page") ?: "page"
|
|
||||||
PreferKey.keyPageOnLongPress -> keyPageOnLongPressValue =
|
|
||||||
appCtx.getPrefBoolean(PreferKey.keyPageOnLongPress, false)
|
|
||||||
PreferKey.volumeKeyPage -> volumeKeyPageValue =
|
|
||||||
appCtx.getPrefBoolean(PreferKey.volumeKeyPage, true)
|
|
||||||
PreferKey.volumeKeyPageOnPlay -> volumeKeyPageOnPlayValue =
|
|
||||||
appCtx.getPrefBoolean(PreferKey.volumeKeyPageOnPlay, true)
|
|
||||||
PreferKey.mouseWheelPage -> mouseWheelPageValue =
|
|
||||||
appCtx.getPrefBoolean(PreferKey.mouseWheelPage, true)
|
|
||||||
PreferKey.paddingDisplayCutouts -> paddingDisplayCutoutsValue =
|
|
||||||
appCtx.getPrefBoolean(PreferKey.paddingDisplayCutouts, false)
|
|
||||||
PreferKey.pageTouchSlop -> pageTouchSlopValue =
|
|
||||||
appCtx.getPrefInt(PreferKey.pageTouchSlop, 0)
|
|
||||||
PreferKey.showReadTitleAddition -> showReadTitleBarAdditionValue =
|
|
||||||
appCtx.getPrefBoolean(PreferKey.showReadTitleAddition, true)
|
|
||||||
PreferKey.titleBarMode -> titleBarModeValue =
|
|
||||||
appCtx.getPrefString(PreferKey.titleBarMode, "1") ?: "1"
|
|
||||||
PreferKey.menuAlpha -> menuAlphaValue = appCtx.getPrefInt(PreferKey.menuAlpha, 100)
|
|
||||||
PreferKey.readSliderMode -> readSliderModeValue =
|
|
||||||
appCtx.getPrefString(PreferKey.readSliderMode, "0") ?: "0"
|
|
||||||
PreferKey.readBarStyleFollowPage -> readBarStyleFollowPageValue =
|
PreferKey.readBarStyleFollowPage -> readBarStyleFollowPageValue =
|
||||||
appCtx.getPrefBoolean(PreferKey.readBarStyleFollowPage, false)
|
appCtx.getPrefBoolean(PreferKey.readBarStyleFollowPage, false)
|
||||||
PreferKey.readBarStyle -> readBarStyleValue =
|
PreferKey.readBarStyle -> readBarStyleValue =
|
||||||
appCtx.getPrefInt(PreferKey.readBarStyle, 0)
|
appCtx.getPrefInt(PreferKey.readBarStyle, 0)
|
||||||
PreferKey.defaultSourceChangeAll -> defaultSourceChangeAllValue =
|
|
||||||
appCtx.getPrefBoolean(PreferKey.defaultSourceChangeAll, true)
|
|
||||||
PreferKey.sliderVibrator -> sliderVibratorValue =
|
|
||||||
appCtx.getPrefBoolean(PreferKey.sliderVibrator, false)
|
|
||||||
PreferKey.selectVibrator -> selectVibratorValue =
|
|
||||||
appCtx.getPrefBoolean(PreferKey.selectVibrator, false)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -195,16 +133,6 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
syncReadPreferenceFromSharedPreferences(key)
|
syncReadPreferenceFromSharedPreferences(key)
|
||||||
when (key) {
|
when (key) {
|
||||||
|
|
||||||
PreferKey.adaptSpecialStyle -> adaptSpecialStyle =
|
|
||||||
appCtx.getPrefBoolean(PreferKey.adaptSpecialStyle, true)
|
|
||||||
|
|
||||||
PreferKey.useUnderline -> useUnderline =
|
|
||||||
appCtx.getPrefBoolean(PreferKey.useUnderline, false)
|
|
||||||
|
|
||||||
PreferKey.appTheme -> {
|
|
||||||
AppTheme = appCtx.getPrefString(PreferKey.appTheme, "0")
|
|
||||||
}
|
|
||||||
|
|
||||||
PreferKey.clickActionTL -> clickActionTL =
|
PreferKey.clickActionTL -> clickActionTL =
|
||||||
appCtx.getPrefInt(PreferKey.clickActionTL, 2)
|
appCtx.getPrefInt(PreferKey.clickActionTL, 2)
|
||||||
|
|
||||||
@@ -265,18 +193,6 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
PreferKey.useZhLayout -> ReadBookConfig.useZhLayout =
|
PreferKey.useZhLayout -> ReadBookConfig.useZhLayout =
|
||||||
appCtx.getPrefBoolean(PreferKey.useZhLayout)
|
appCtx.getPrefBoolean(PreferKey.useZhLayout)
|
||||||
|
|
||||||
PreferKey.userAgent -> userAgent = getPrefUserAgent()
|
|
||||||
|
|
||||||
PreferKey.antiAlias -> useAntiAlias = appCtx.getPrefBoolean(PreferKey.antiAlias)
|
|
||||||
|
|
||||||
PreferKey.useDefaultCover -> useDefaultCover =
|
|
||||||
appCtx.getPrefBoolean(PreferKey.useDefaultCover, false)
|
|
||||||
|
|
||||||
PreferKey.optimizeRender -> optimizeRender = CanvasRecorderFactory.isSupport
|
|
||||||
&& appCtx.getPrefBoolean(PreferKey.optimizeRender, false)
|
|
||||||
|
|
||||||
PreferKey.recordLog -> recordLog = appCtx.getPrefBoolean(PreferKey.recordLog)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -294,33 +210,33 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var showUnread: Boolean
|
var showUnread: Boolean
|
||||||
get() = appCtx.getPrefBoolean(PreferKey.showUnread, true)
|
get() = BookshelfConfig.showUnread
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefBoolean(PreferKey.showUnread, value)
|
BookshelfConfig.showUnread = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var showTip: Boolean
|
var showTip: Boolean
|
||||||
get() = appCtx.getPrefBoolean(PreferKey.showTip, false)
|
get() = BookshelfConfig.showTip
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefBoolean(PreferKey.showTip, value)
|
BookshelfConfig.showTip = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var showUnreadNew: Boolean
|
var showUnreadNew: Boolean
|
||||||
get() = appCtx.getPrefBoolean(PreferKey.showUnreadNew, true)
|
get() = BookshelfConfig.showUnreadNew
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefBoolean(PreferKey.showUnreadNew, value)
|
BookshelfConfig.showUnreadNew = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var showLastUpdateTime: Boolean
|
var showLastUpdateTime: Boolean
|
||||||
get() = appCtx.getPrefBoolean(PreferKey.showLastUpdateTime, false)
|
get() = BookshelfConfig.showLastUpdateTime
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefBoolean(PreferKey.showLastUpdateTime, value)
|
BookshelfConfig.showLastUpdateTime = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var showWaitUpCount: Boolean
|
var showWaitUpCount: Boolean
|
||||||
get() = appCtx.getPrefBoolean(PreferKey.showWaitUpCount, false)
|
get() = BookshelfConfig.showWaitUpCount
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefBoolean(PreferKey.showWaitUpCount, value)
|
BookshelfConfig.showWaitUpCount = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var readBrightness: Int
|
var readBrightness: Int
|
||||||
@@ -353,30 +269,30 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
// get() = appCtx.getPrefBoolean(PreferKey.immNavigationBar, true)
|
// get() = appCtx.getPrefBoolean(PreferKey.immNavigationBar, true)
|
||||||
|
|
||||||
val screenOrientation: String?
|
val screenOrientation: String?
|
||||||
get() = screenOrientationValue
|
get() = ReadConfig.screenOrientation
|
||||||
|
|
||||||
var bookGroupStyle: Int
|
var bookGroupStyle: Int
|
||||||
get() = appCtx.getPrefInt(PreferKey.bookGroupStyle, 0)
|
get() = BookshelfConfig.bookGroupStyle
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefInt(PreferKey.bookGroupStyle, value)
|
BookshelfConfig.bookGroupStyle = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var bookshelfLayoutModePortrait: Int
|
var bookshelfLayoutModePortrait: Int
|
||||||
get() = appCtx.getPrefInt(PreferKey.bookshelfLayoutModePortrait, 1)
|
get() = BookshelfConfig.bookshelfLayoutModePortrait
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefInt(PreferKey.bookshelfLayoutModePortrait, value)
|
BookshelfConfig.bookshelfLayoutModePortrait = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var bookshelfLayoutModeLandscape: Int
|
var bookshelfLayoutModeLandscape: Int
|
||||||
get() = appCtx.getPrefInt(PreferKey.bookshelfLayoutModeLandscape, 1)
|
get() = BookshelfConfig.bookshelfLayoutModeLandscape
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefInt(PreferKey.bookshelfLayoutModeLandscape, value)
|
BookshelfConfig.bookshelfLayoutModeLandscape = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var bookshelfLayoutGridPortrait: Int
|
var bookshelfLayoutGridPortrait: Int
|
||||||
get() = appCtx.getPrefInt(PreferKey.bookshelfLayoutGridPortrait, 3)
|
get() = BookshelfConfig.bookshelfLayoutGridPortrait
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefInt(PreferKey.bookshelfLayoutGridPortrait, value)
|
BookshelfConfig.bookshelfLayoutGridPortrait = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var exploreLayoutGridLandscape: Int
|
var exploreLayoutGridLandscape: Int
|
||||||
@@ -392,9 +308,9 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var bookshelfLayoutGridLandscape: Int
|
var bookshelfLayoutGridLandscape: Int
|
||||||
get() = appCtx.getPrefInt(PreferKey.bookshelfLayoutGridLandscape, 7)
|
get() = BookshelfConfig.bookshelfLayoutGridLandscape
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefInt(PreferKey.bookshelfLayoutGridLandscape, value)
|
BookshelfConfig.bookshelfLayoutGridLandscape = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var bookExportFileName: String?
|
var bookExportFileName: String?
|
||||||
@@ -411,38 +327,34 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var bookImportFileName: String?
|
var bookImportFileName: String?
|
||||||
get() = appCtx.getPrefString(PreferKey.bookImportFileName)
|
get() = ImportBookConfig.bookImportFileName
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefString(PreferKey.bookImportFileName, value)
|
ImportBookConfig.bookImportFileName = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var backupPath: String?
|
var backupPath: String?
|
||||||
get() = appCtx.getPrefString(PreferKey.backupPath)
|
get() = BackupConfig.backupPath
|
||||||
set(value) {
|
set(value) {
|
||||||
if (value.isNullOrEmpty()) {
|
BackupConfig.backupPath = value
|
||||||
appCtx.removePref(PreferKey.backupPath)
|
|
||||||
} else {
|
|
||||||
appCtx.putPrefString(PreferKey.backupPath, value)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val showDiscovery: Boolean
|
val showDiscovery: Boolean
|
||||||
get() = appCtx.getPrefBoolean(PreferKey.showDiscovery, true)
|
get() = ThemeConfig.showDiscovery
|
||||||
|
|
||||||
val showHome: Boolean
|
val showHome: Boolean
|
||||||
get() = appCtx.getPrefBoolean(PreferKey.showHome, true)
|
get() = ThemeConfig.showHome
|
||||||
|
|
||||||
val showRSS: Boolean
|
val showRSS: Boolean
|
||||||
get() = appCtx.getPrefBoolean(PreferKey.showRss, true)
|
get() = ThemeConfig.showRss
|
||||||
|
|
||||||
val showStatusBar: Boolean
|
val showStatusBar: Boolean
|
||||||
get() = appCtx.getPrefBoolean(PreferKey.showStatusBar, true)
|
get() = ThemeConfig.showStatusBar
|
||||||
|
|
||||||
val showBottomView: Boolean
|
val showBottomView: Boolean
|
||||||
get() = appCtx.getPrefBoolean(PreferKey.showBottomView, true)
|
get() = ThemeConfig.showBottomView
|
||||||
|
|
||||||
val autoRefreshBook: Boolean
|
val autoRefreshBook: Boolean
|
||||||
get() = appCtx.getPrefBoolean(PreferKey.autoRefresh)
|
get() = ThemeConfig.autoRefreshBook
|
||||||
|
|
||||||
var enableReview: Boolean
|
var enableReview: Boolean
|
||||||
get() = BuildConfig.DEBUG && appCtx.getPrefBoolean(PreferKey.enableReview, false)
|
get() = BuildConfig.DEBUG && appCtx.getPrefBoolean(PreferKey.enableReview, false)
|
||||||
@@ -451,20 +363,16 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var threadCount: Int
|
var threadCount: Int
|
||||||
get() = appCtx.getPrefInt(PreferKey.threadCount, 16)
|
get() = DownloadCacheConfig.threadCount
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefInt(PreferKey.threadCount, value)
|
DownloadCacheConfig.threadCount = value
|
||||||
}
|
}
|
||||||
|
|
||||||
// 添加本地选择的目录
|
// 添加本地选择的目录
|
||||||
var importBookPath: String?
|
var importBookPath: String?
|
||||||
get() = appCtx.getPrefString("importBookPath")
|
get() = ImportBookConfig.importBookPath
|
||||||
set(value) {
|
set(value) {
|
||||||
if (value == null) {
|
ImportBookConfig.importBookPath = value
|
||||||
appCtx.removePref("importBookPath")
|
|
||||||
} else {
|
|
||||||
appCtx.putPrefString("importBookPath", value)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var ttsFlowSys: Boolean
|
var ttsFlowSys: Boolean
|
||||||
@@ -474,7 +382,7 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val noAnimScrollPage: Boolean
|
val noAnimScrollPage: Boolean
|
||||||
get() = noAnimScrollPageValue
|
get() = ReadConfig.noAnimScrollPage
|
||||||
|
|
||||||
const val defaultSpeechRate = 5
|
const val defaultSpeechRate = 5
|
||||||
|
|
||||||
@@ -585,23 +493,21 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var webPort: Int
|
var webPort: Int
|
||||||
get() = appCtx.getPrefInt(PreferKey.webPort, 1122)
|
get() = OtherConfig.webPort
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefInt(PreferKey.webPort, value)
|
OtherConfig.webPort = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var tocUiUseReplace: Boolean
|
var tocUiUseReplace: Boolean
|
||||||
get() = tocUiUseReplaceValue
|
get() = ReadConfig.tocUiUseReplace
|
||||||
set(value) {
|
set(value) {
|
||||||
tocUiUseReplaceValue = value
|
ReadConfig.tocUiUseReplace = value
|
||||||
appCtx.putPrefBoolean(PreferKey.tocUiUseReplace, value)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var tocCountWords: Boolean
|
var tocCountWords: Boolean
|
||||||
get() = tocCountWordsValue
|
get() = ReadConfig.tocCountWords
|
||||||
set(value) {
|
set(value) {
|
||||||
tocCountWordsValue = value
|
ReadConfig.tocCountWords = value
|
||||||
appCtx.putPrefBoolean(PreferKey.tocCountWords, value)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var enableReadRecord: Boolean
|
var enableReadRecord: Boolean
|
||||||
@@ -611,7 +517,7 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val autoChangeSource: Boolean
|
val autoChangeSource: Boolean
|
||||||
get() = autoChangeSourceValue
|
get() = ReadConfig.autoChangeSource
|
||||||
|
|
||||||
var changeSourceLoadInfo: Boolean
|
var changeSourceLoadInfo: Boolean
|
||||||
get() = appCtx.getPrefBoolean(PreferKey.changeSourceLoadInfo)
|
get() = appCtx.getPrefBoolean(PreferKey.changeSourceLoadInfo)
|
||||||
@@ -638,9 +544,9 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var showBookshelfFastScroller: Boolean
|
var showBookshelfFastScroller: Boolean
|
||||||
get() = appCtx.getPrefBoolean(PreferKey.showBookshelfFastScroller, false)
|
get() = BookshelfConfig.showBookshelfFastScroller
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefBoolean(PreferKey.showBookshelfFastScroller, value)
|
BookshelfConfig.showBookshelfFastScroller = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var contentSelectSpeakMod: Int
|
var contentSelectSpeakMod: Int
|
||||||
@@ -670,33 +576,33 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val clickImgWay: String?
|
val clickImgWay: String?
|
||||||
get() = clickImgWayValue
|
get() = ReadConfig.clickImgWay
|
||||||
var preDownloadNum
|
var preDownloadNum
|
||||||
get() = appCtx.getPrefInt(PreferKey.preDownloadNum, 10)
|
get() = DownloadCacheConfig.preDownloadNum
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefInt(PreferKey.preDownloadNum, value)
|
DownloadCacheConfig.preDownloadNum = value
|
||||||
}
|
}
|
||||||
|
|
||||||
val syncBookProgress get() = appCtx.getPrefBoolean(PreferKey.syncBookProgress, true)
|
val syncBookProgress get() = BackupConfig.syncBookProgress
|
||||||
|
|
||||||
val syncBookProgressPlus get() = appCtx.getPrefBoolean(PreferKey.syncBookProgressPlus, false)
|
val syncBookProgressPlus get() = BackupConfig.syncBookProgressPlus
|
||||||
|
|
||||||
val mediaButtonOnExit get() = appCtx.getPrefBoolean(PreferKey.mediaButtonOnExit, true)
|
val mediaButtonOnExit get() = appCtx.getPrefBoolean(PreferKey.mediaButtonOnExit, true)
|
||||||
|
|
||||||
val readAloudByMediaButton
|
val readAloudByMediaButton
|
||||||
get() = appCtx.getPrefBoolean(PreferKey.readAloudByMediaButton, false)
|
get() = appCtx.getPrefBoolean(PreferKey.readAloudByMediaButton, false)
|
||||||
|
|
||||||
val replaceEnableDefault get() = appCtx.getPrefBoolean(PreferKey.replaceEnableDefault, true)
|
val replaceEnableDefault get() = OtherConfig.replaceEnableDefault
|
||||||
|
|
||||||
val webDavDir get() = appCtx.getPrefString(PreferKey.webDavDir, "legado")
|
val webDavDir get() = BackupConfig.webDavDir
|
||||||
|
|
||||||
val webDavDeviceName get() = appCtx.getPrefString(PreferKey.webDavDeviceName, Build.MODEL)
|
val webDavDeviceName get() = BackupConfig.webDavDeviceName
|
||||||
|
|
||||||
val recordHeapDump get() = appCtx.getPrefBoolean(PreferKey.recordHeapDump, false)
|
val recordHeapDump get() = OtherConfig.recordHeapDump
|
||||||
|
|
||||||
val loadCoverOnlyWifi get() = appCtx.getPrefBoolean(PreferKey.loadCoverOnlyWifi, false)
|
val loadCoverOnlyWifi get() = appCtx.getPrefBoolean(PreferKey.loadCoverOnlyWifi, false)
|
||||||
|
|
||||||
val showAddToShelfAlert get() = appCtx.getPrefBoolean(PreferKey.showAddToShelfAlert, true)
|
val showAddToShelfAlert get() = OtherConfig.showAddToShelfAlert
|
||||||
|
|
||||||
val ignoreAudioFocus get() = appCtx.getPrefBoolean(PreferKey.ignoreAudioFocus, false)
|
val ignoreAudioFocus get() = appCtx.getPrefBoolean(PreferKey.ignoreAudioFocus, false)
|
||||||
|
|
||||||
@@ -704,36 +610,36 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
get() = appCtx.getPrefBoolean(PreferKey.pauseReadAloudWhilePhoneCalls, false)
|
get() = appCtx.getPrefBoolean(PreferKey.pauseReadAloudWhilePhoneCalls, false)
|
||||||
set(value) = appCtx.putPrefBoolean(PreferKey.pauseReadAloudWhilePhoneCalls, value)
|
set(value) = appCtx.putPrefBoolean(PreferKey.pauseReadAloudWhilePhoneCalls, value)
|
||||||
|
|
||||||
val onlyLatestBackup get() = appCtx.getPrefBoolean(PreferKey.onlyLatestBackup, true)
|
val onlyLatestBackup get() = BackupConfig.onlyLatestBackup
|
||||||
|
|
||||||
val autoCheckNewBackup get() = appCtx.getPrefBoolean(PreferKey.autoCheckNewBackup, true)
|
val autoCheckNewBackup get() = ThemeConfig.autoCheckNewBackup
|
||||||
|
|
||||||
val defaultHomePage get() = appCtx.getPrefString(PreferKey.defaultHomePage, "bookshelf")
|
val defaultHomePage get() = ThemeConfig.defaultHomePage
|
||||||
|
|
||||||
val updateToVariant get() = appCtx.getPrefString(PreferKey.updateToVariant, "official_version")
|
val updateToVariant get() = OtherConfig.updateToVariant
|
||||||
|
|
||||||
val streamReadAloudAudio get() = appCtx.getPrefBoolean(PreferKey.streamReadAloudAudio, false)
|
val streamReadAloudAudio get() = appCtx.getPrefBoolean(PreferKey.streamReadAloudAudio, false)
|
||||||
|
|
||||||
val doublePageHorizontal: String?
|
val doublePageHorizontal: String?
|
||||||
get() = doublePageHorizontalValue
|
get() = ReadConfig.doubleHorizontalPage
|
||||||
|
|
||||||
val progressBarBehavior: String?
|
val progressBarBehavior: String?
|
||||||
get() = progressBarBehaviorValue
|
get() = ReadConfig.progressBarBehavior
|
||||||
|
|
||||||
val keyPageOnLongPress
|
val keyPageOnLongPress
|
||||||
get() = keyPageOnLongPressValue
|
get() = ReadConfig.keyPageOnLongPress
|
||||||
|
|
||||||
val volumeKeyPage
|
val volumeKeyPage
|
||||||
get() = volumeKeyPageValue
|
get() = ReadConfig.volumeKeyPage
|
||||||
|
|
||||||
val volumeKeyPageOnPlay
|
val volumeKeyPageOnPlay
|
||||||
get() = volumeKeyPageOnPlayValue
|
get() = ReadConfig.volumeKeyPageOnPlay
|
||||||
|
|
||||||
val mouseWheelPage
|
val mouseWheelPage
|
||||||
get() = mouseWheelPageValue
|
get() = ReadConfig.mouseWheelPage
|
||||||
|
|
||||||
val paddingDisplayCutouts
|
val paddingDisplayCutouts
|
||||||
get() = paddingDisplayCutoutsValue
|
get() = ReadConfig.paddingDisplayCutouts
|
||||||
|
|
||||||
var searchScope: String
|
var searchScope: String
|
||||||
get() = appCtx.getPrefString("searchScope") ?: ""
|
get() = appCtx.getPrefString("searchScope") ?: ""
|
||||||
@@ -748,22 +654,21 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var pageTouchSlop: Int
|
var pageTouchSlop: Int
|
||||||
get() = pageTouchSlopValue
|
get() = ReadConfig.pageTouchSlop
|
||||||
set(value) {
|
set(value) {
|
||||||
pageTouchSlopValue = value
|
ReadConfig.pageTouchSlop = value
|
||||||
appCtx.putPrefInt(PreferKey.pageTouchSlop, value)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var bookshelfSort: Int
|
var bookshelfSort: Int
|
||||||
get() = appCtx.getPrefInt(PreferKey.bookshelfSort, 0)
|
get() = BookshelfConfig.bookshelfSort
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefInt(PreferKey.bookshelfSort, value)
|
BookshelfConfig.bookshelfSort = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var bookshelfSortOrder: Int
|
var bookshelfSortOrder: Int
|
||||||
get() = appCtx.getPrefInt(PreferKey.bookshelfSortOrder, 1)
|
get() = BookshelfConfig.bookshelfSortOrder
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefInt(PreferKey.bookshelfSortOrder, value)
|
BookshelfConfig.bookshelfSortOrder = value
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getBookSortByGroupId(groupId: Long): Int {
|
fun getBookSortByGroupId(groupId: Long): Int {
|
||||||
@@ -771,31 +676,22 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
?: bookshelfSort
|
?: bookshelfSort
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getPrefUserAgent(): String {
|
|
||||||
val ua = appCtx.getPrefString(PreferKey.userAgent)
|
|
||||||
if (ua.isNullOrBlank()) {
|
|
||||||
return "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/" + BuildConfig.Cronet_Main_Version + " Safari/537.36"
|
|
||||||
}
|
|
||||||
return ua
|
|
||||||
}
|
|
||||||
|
|
||||||
var bitmapCacheSize: Int
|
var bitmapCacheSize: Int
|
||||||
get() = appCtx.getPrefInt(PreferKey.bitmapCacheSize, 50)
|
get() = DownloadCacheConfig.bitmapCacheSize
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefInt(PreferKey.bitmapCacheSize, value)
|
DownloadCacheConfig.bitmapCacheSize = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var imageRetainNum: Int
|
var imageRetainNum: Int
|
||||||
get() = appCtx.getPrefInt(PreferKey.imageRetainNum, 0)
|
get() = DownloadCacheConfig.imageRetainNum
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefInt(PreferKey.imageRetainNum, value)
|
DownloadCacheConfig.imageRetainNum = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var showReadTitleBarAddition: Boolean
|
var showReadTitleBarAddition: Boolean
|
||||||
get() = showReadTitleBarAdditionValue
|
get() = ReadConfig.showReadTitleAddition
|
||||||
set(value) {
|
set(value) {
|
||||||
showReadTitleBarAdditionValue = value
|
ReadConfig.showReadTitleAddition = value
|
||||||
appCtx.putPrefBoolean(PreferKey.showReadTitleAddition, value)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var readBarStyleFollowPage: Boolean
|
var readBarStyleFollowPage: Boolean
|
||||||
@@ -813,15 +709,9 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var sourceEditMaxLine: Int
|
var sourceEditMaxLine: Int
|
||||||
get() {
|
get() = OtherConfig.sourceEditMaxLine
|
||||||
val maxLine = appCtx.getPrefInt(PreferKey.sourceEditMaxLine, Int.MAX_VALUE)
|
|
||||||
if (maxLine < 10) {
|
|
||||||
return Int.MAX_VALUE
|
|
||||||
}
|
|
||||||
return maxLine
|
|
||||||
}
|
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefInt(PreferKey.sourceEditMaxLine, value)
|
OtherConfig.sourceEditMaxLine = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var audioPlayUseWakeLock: Boolean
|
var audioPlayUseWakeLock: Boolean
|
||||||
@@ -857,9 +747,9 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var firebaseEnable: Boolean
|
var firebaseEnable: Boolean
|
||||||
get() = appCtx.getPrefBoolean(PreferKey.firebaseEnable, false)
|
get() = OtherConfig.firebaseEnable
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefBoolean(PreferKey.firebaseEnable, value)
|
OtherConfig.firebaseEnable = value
|
||||||
}
|
}
|
||||||
|
|
||||||
//跳转到漫画界面不使用富文本模式
|
//跳转到漫画界面不使用富文本模式
|
||||||
@@ -886,10 +776,9 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var titleBarMode
|
var titleBarMode
|
||||||
get() = titleBarModeValue
|
get() = ReadConfig.titleBarMode
|
||||||
set(value) {
|
set(value) {
|
||||||
titleBarModeValue = value
|
ReadConfig.titleBarMode = value
|
||||||
appCtx.putPrefString(PreferKey.titleBarMode, value)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//漫画预加载数量
|
//漫画预加载数量
|
||||||
@@ -995,15 +884,15 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var tabletInterface
|
var tabletInterface
|
||||||
get() = appCtx.getPrefString(PreferKey.tabletInterface, "auto")
|
get() = ThemeConfig.tabletInterface
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefString(PreferKey.tabletInterface, value)
|
ThemeConfig.tabletInterface = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var pureBlack
|
var pureBlack
|
||||||
get() = appCtx.getPrefBoolean(PreferKey.pureBlack, false)
|
get() = ThemeConfig.isPureBlack
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefBoolean(PreferKey.pureBlack, value)
|
ThemeConfig.isPureBlack = value
|
||||||
}
|
}
|
||||||
|
|
||||||
val hasLightBg: Boolean
|
val hasLightBg: Boolean
|
||||||
@@ -1016,40 +905,38 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
get() = hasLightBg && hasDarkBg
|
get() = hasLightBg && hasDarkBg
|
||||||
|
|
||||||
var labelVisibilityMode
|
var labelVisibilityMode
|
||||||
get() = appCtx.getPrefString(PreferKey.labelVisibilityMode, "auto")
|
get() = ThemeConfig.labelVisibilityMode
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefString(PreferKey.labelVisibilityMode, value)
|
ThemeConfig.labelVisibilityMode = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var paletteStyle
|
var paletteStyle
|
||||||
get() = appCtx.getPrefString(PreferKey.paletteStyle, "tonalSpot")
|
get() = ThemeConfig.paletteStyle
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefString(PreferKey.paletteStyle, value)
|
ThemeConfig.paletteStyle = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var enableBlur
|
var enableBlur
|
||||||
get() = appCtx.getPrefBoolean(PreferKey.enableBlur, false)
|
get() = ThemeConfig.enableBlur
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefBoolean(PreferKey.enableBlur, value)
|
ThemeConfig.enableBlur = value
|
||||||
}
|
}
|
||||||
var menuAlpha: Int
|
var menuAlpha: Int
|
||||||
get() = menuAlphaValue
|
get() = ReadConfig.menuAlpha
|
||||||
set(value) {
|
set(value) {
|
||||||
menuAlphaValue = value
|
ReadConfig.menuAlpha = value
|
||||||
appCtx.putPrefInt(PreferKey.menuAlpha, value)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var readSliderMode
|
var readSliderMode
|
||||||
get() = readSliderModeValue
|
get() = ReadConfig.readSliderMode
|
||||||
set(value) {
|
set(value) {
|
||||||
readSliderModeValue = value
|
ReadConfig.readSliderMode = value
|
||||||
appCtx.putPrefString(PreferKey.readSliderMode, value)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var bookshelfRefreshingLimit: Int
|
var bookshelfRefreshingLimit: Int
|
||||||
get() = appCtx.getPrefInt(PreferKey.bookshelfRefreshingLimit, 0)
|
get() = BookshelfConfig.bookshelfRefreshingLimit
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefInt(PreferKey.bookshelfRefreshingLimit, value)
|
BookshelfConfig.bookshelfRefreshingLimit = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var systemMediaControlCompatibilityChange: Boolean
|
var systemMediaControlCompatibilityChange: Boolean
|
||||||
@@ -1059,15 +946,15 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var isPredictiveBackEnabled: Boolean
|
var isPredictiveBackEnabled: Boolean
|
||||||
get() = appCtx.getPrefBoolean(PreferKey.isPredictiveBackEnabled, true)
|
get() = ThemeConfig.isPredictiveBackEnabled
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefBoolean(PreferKey.isPredictiveBackEnabled, value)
|
ThemeConfig.isPredictiveBackEnabled = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var shouldShowExpandButton: Boolean
|
var shouldShowExpandButton: Boolean
|
||||||
get() = appCtx.getPrefBoolean(PreferKey.shouldShowExpandButton, false)
|
get() = BookshelfConfig.shouldShowExpandButton
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefBoolean(PreferKey.shouldShowExpandButton, value)
|
BookshelfConfig.shouldShowExpandButton = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var exploreLayoutState: Int
|
var exploreLayoutState: Int
|
||||||
@@ -1077,24 +964,21 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var defaultSourceChangeAll: Boolean
|
var defaultSourceChangeAll: Boolean
|
||||||
get() = defaultSourceChangeAllValue
|
get() = ReadConfig.defaultSourceChangeAll
|
||||||
set(value) {
|
set(value) {
|
||||||
defaultSourceChangeAllValue = value
|
ReadConfig.defaultSourceChangeAll = value
|
||||||
appCtx.putPrefBoolean(PreferKey.defaultSourceChangeAll, value)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var sliderVibrator: Boolean
|
var sliderVibrator: Boolean
|
||||||
get() = sliderVibratorValue
|
get() = ReadConfig.sliderVibrator
|
||||||
set(value) {
|
set(value) {
|
||||||
sliderVibratorValue = value
|
ReadConfig.sliderVibrator = value
|
||||||
appCtx.putPrefBoolean(PreferKey.sliderVibrator, value)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var selectVibrator: Boolean
|
var selectVibrator: Boolean
|
||||||
get() = selectVibratorValue
|
get() = ReadConfig.selectVibrator
|
||||||
set(value) {
|
set(value) {
|
||||||
selectVibratorValue = value
|
ReadConfig.selectVibrator = value
|
||||||
appCtx.putPrefBoolean(PreferKey.selectVibrator, value)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val audioPreDownloadNum: Int
|
val audioPreDownloadNum: Int
|
||||||
@@ -1110,8 +994,8 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var containerOpacity: Int
|
var containerOpacity: Int
|
||||||
get() = appCtx.getPrefInt(PreferKey.containerOpacity, 100)
|
get() = ThemeConfig.containerOpacity
|
||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefInt(PreferKey.containerOpacity, value)
|
ThemeConfig.containerOpacity = value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,16 @@ package io.legado.app.ui.config
|
|||||||
import androidx.compose.runtime.MutableState
|
import androidx.compose.runtime.MutableState
|
||||||
import androidx.compose.runtime.State
|
import androidx.compose.runtime.State
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
|
import androidx.datastore.preferences.core.booleanPreferencesKey
|
||||||
|
import androidx.datastore.preferences.core.emptyPreferences
|
||||||
|
import androidx.datastore.preferences.core.floatPreferencesKey
|
||||||
|
import androidx.datastore.preferences.core.intPreferencesKey
|
||||||
|
import androidx.datastore.preferences.core.longPreferencesKey
|
||||||
|
import androidx.datastore.preferences.core.stringPreferencesKey
|
||||||
import androidx.lifecycle.DefaultLifecycleObserver
|
import androidx.lifecycle.DefaultLifecycleObserver
|
||||||
import androidx.lifecycle.LifecycleOwner
|
import androidx.lifecycle.LifecycleOwner
|
||||||
|
import io.legado.app.data.repository.dataStore
|
||||||
|
import io.legado.app.help.config.DsSync
|
||||||
import io.legado.app.utils.getPrefBoolean
|
import io.legado.app.utils.getPrefBoolean
|
||||||
import io.legado.app.utils.getPrefFloat
|
import io.legado.app.utils.getPrefFloat
|
||||||
import io.legado.app.utils.getPrefInt
|
import io.legado.app.utils.getPrefInt
|
||||||
@@ -16,20 +24,15 @@ import io.legado.app.utils.putPrefInt
|
|||||||
import io.legado.app.utils.putPrefLong
|
import io.legado.app.utils.putPrefLong
|
||||||
import io.legado.app.utils.putPrefString
|
import io.legado.app.utils.putPrefString
|
||||||
import io.legado.app.utils.putPrefStringSync
|
import io.legado.app.utils.putPrefStringSync
|
||||||
import io.legado.app.help.config.DsSync
|
|
||||||
import androidx.datastore.preferences.core.*
|
|
||||||
import io.legado.app.data.repository.dataStore
|
|
||||||
import kotlinx.coroutines.CompletableDeferred
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.runBlocking
|
|
||||||
import kotlinx.coroutines.flow.catch
|
import kotlinx.coroutines.flow.catch
|
||||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||||
import kotlinx.coroutines.flow.first
|
import kotlinx.coroutines.flow.first
|
||||||
import kotlinx.coroutines.flow.map
|
import kotlinx.coroutines.flow.map
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.runBlocking
|
||||||
import splitties.init.appCtx
|
import splitties.init.appCtx
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import kotlin.properties.ReadWriteProperty
|
import kotlin.properties.ReadWriteProperty
|
||||||
@@ -37,13 +40,11 @@ import kotlin.reflect.KProperty
|
|||||||
|
|
||||||
interface PrefDelegate<T> : ReadWriteProperty<Any?, T> {
|
interface PrefDelegate<T> : ReadWriteProperty<Any?, T> {
|
||||||
val state: State<T>
|
val state: State<T>
|
||||||
val ready: CompletableDeferred<Unit>
|
|
||||||
fun dispose()
|
fun dispose()
|
||||||
}
|
}
|
||||||
|
|
||||||
class PrefStateDelegate<T>(private val delegate: PrefDelegate<T>) : ReadWriteProperty<Any?, T> by delegate {
|
class PrefStateDelegate<T>(private val delegate: PrefDelegate<T>) : ReadWriteProperty<Any?, T> by delegate {
|
||||||
val state: State<T> get() = delegate.state
|
val state: State<T> get() = delegate.state
|
||||||
val ready: CompletableDeferred<Unit> get() = delegate.ready
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <T> prefDelegate(
|
fun <T> prefDelegate(
|
||||||
@@ -54,24 +55,15 @@ fun <T> prefDelegate(
|
|||||||
onValueChange: ((T) -> Unit)? = null
|
onValueChange: ((T) -> Unit)? = null
|
||||||
): PrefDelegate<T> {
|
): PrefDelegate<T> {
|
||||||
return object : PrefDelegate<T>, DefaultLifecycleObserver {
|
return object : PrefDelegate<T>, DefaultLifecycleObserver {
|
||||||
private var _value: MutableState<T> = mutableStateOf(defaultValue)
|
private var _value: MutableState<T>
|
||||||
override val state: State<T> get() = _value
|
override val state: State<T> get() = _value
|
||||||
private val scope = CoroutineScope(Dispatchers.IO)
|
private val scope = CoroutineScope(Dispatchers.IO)
|
||||||
private var dsObserverJob: Job? = null
|
private var dsObserverJob: Job? = null
|
||||||
override val ready = CompletableDeferred<Unit>()
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
// 从 DataStore 读取初始值(DS 为唯一读取源)
|
// 同步从 DataStore 读取初始值,确保构造完成后即为最新值
|
||||||
// 在 IO 线程读取,切换到 Main 线程更新 MutableState,确保 snapshotFlow 能检测到变化
|
val initialValue = runBlocking(Dispatchers.IO) { readFromDs() } ?: defaultValue
|
||||||
scope.launch {
|
_value = mutableStateOf(initialValue)
|
||||||
val dsValue = readFromDs()
|
|
||||||
if (dsValue != null) {
|
|
||||||
withContext(Dispatchers.Main) {
|
|
||||||
_value.value = dsValue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ready.complete(Unit)
|
|
||||||
}
|
|
||||||
// 观察 DataStore 变化,用于跨实例同步
|
// 观察 DataStore 变化,用于跨实例同步
|
||||||
dsObserverJob = scope.launch {
|
dsObserverJob = scope.launch {
|
||||||
appCtx.dataStore.data
|
appCtx.dataStore.data
|
||||||
@@ -100,9 +92,7 @@ fun <T> prefDelegate(
|
|||||||
.distinctUntilChanged()
|
.distinctUntilChanged()
|
||||||
.collect { dsValue ->
|
.collect { dsValue ->
|
||||||
if (dsValue != null && _value.value != dsValue) {
|
if (dsValue != null && _value.value != dsValue) {
|
||||||
withContext(Dispatchers.Main) {
|
_value.value = dsValue
|
||||||
_value.value = dsValue
|
|
||||||
}
|
|
||||||
onValueChange?.invoke(dsValue)
|
onValueChange?.invoke(dsValue)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
-1
@@ -71,6 +71,5 @@ class DownloadCacheConfigViewModel(
|
|||||||
|
|
||||||
fun saveUserAgent(input: String) {
|
fun saveUserAgent(input: String) {
|
||||||
DownloadCacheConfig.userAgent = input
|
DownloadCacheConfig.userAgent = input
|
||||||
AppConfig.userAgent = DownloadCacheConfig.userAgent
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import io.legado.app.data.repository.MangaSettingsRepository
|
|||||||
import io.legado.app.data.repository.ReadAloudPreferences
|
import io.legado.app.data.repository.ReadAloudPreferences
|
||||||
import io.legado.app.data.repository.ReadAloudSettingsRepository
|
import io.legado.app.data.repository.ReadAloudSettingsRepository
|
||||||
import io.legado.app.help.DirectLinkUpload
|
import io.legado.app.help.DirectLinkUpload
|
||||||
import io.legado.app.help.config.AppConfig
|
|
||||||
import io.legado.app.help.config.LocalConfig
|
import io.legado.app.help.config.LocalConfig
|
||||||
import io.legado.app.model.CheckSource
|
import io.legado.app.model.CheckSource
|
||||||
import io.legado.app.receiver.SharedReceiverActivity
|
import io.legado.app.receiver.SharedReceiverActivity
|
||||||
@@ -122,7 +121,6 @@ class OtherConfigViewModel(
|
|||||||
|
|
||||||
fun saveUserAgent(input: String) {
|
fun saveUserAgent(input: String) {
|
||||||
DownloadCacheConfig.userAgent = input
|
DownloadCacheConfig.userAgent = input
|
||||||
AppConfig.userAgent = DownloadCacheConfig.userAgent
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateLocalBookDir(path: String) {
|
fun updateLocalBookDir(path: String) {
|
||||||
|
|||||||
Reference in New Issue
Block a user