From b61e1bdbe344d2fbe466bbb94ce9adbc76e4ed8e Mon Sep 17 00:00:00 2001 From: tarsin Date: Thu, 1 Jun 2023 19:17:23 +0800 Subject: [PATCH] Introduce intFromStrPref --- .../main/java/com/hippo/ehviewer/Settings.kt | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/Settings.kt b/app/src/main/java/com/hippo/ehviewer/Settings.kt index a93e70ec8..d28fd8ba0 100755 --- a/app/src/main/java/com/hippo/ehviewer/Settings.kt +++ b/app/src/main/java/com/hippo/ehviewer/Settings.kt @@ -28,7 +28,9 @@ import com.hippo.unifile.UniFile import splitties.experimental.ExperimentalSplittiesApi import splitties.init.appCtx import splitties.preferences.DefaultPreferences +import splitties.preferences.StringPref import java.util.Locale +import kotlin.reflect.KProperty @OptIn(ExperimentalSplittiesApi::class) object Settings : DefaultPreferences() { @@ -124,8 +126,6 @@ object Settings : DefaultPreferences() { private const val KEY_FAV_COUNT_8 = "fav_count_8" private const val KEY_FAV_COUNT_9 = "fav_count_9" - private const val KEY_DOWNLOAD_DELAY = "download_delay" - private const val DEFAULT_DOWNLOAD_DELAY = 0 private const val KEY_ARCHIVE_PASSWDS = "archive_passwds" private lateinit var sSettingsPre: SharedPreferences private var LIST_THUMB_SIZE = 40 @@ -257,8 +257,7 @@ object Settings : DefaultPreferences() { val multiThreadDownload: Int get() = getIntFromStr(KEY_MULTI_THREAD_DOWNLOAD, DEFAULT_MULTI_THREAD_DOWNLOAD) - val downloadDelay: Int - get() = getIntFromStr(KEY_DOWNLOAD_DELAY, DEFAULT_DOWNLOAD_DELAY) + val preloadImage: Int get() = getIntFromStr(KEY_PRELOAD_IMAGE, DEFAULT_PRELOAD_IMAGE) @@ -335,6 +334,8 @@ object Settings : DefaultPreferences() { val listThumbSize: Int get() = 3 * _listThumbSize + val downloadDelay by intFromStrPref(0) { stringPref("download_delay", it) } + val showComments by boolPref("show_gallery_comments", true) val requestNews by boolPref(KEY_REQUEST_NEWS, false) val hideHvEvents by boolPref(KEY_HIDE_HV_EVENTS, false) @@ -379,3 +380,14 @@ object Settings : DefaultPreferences() { var dohUrl by stringPref("doh_url", "") var lastDawnDay by longPref("last_dawn_day", 0) } + +interface Delegate { + operator fun getValue(thisRef: Any?, prop: KProperty<*>?): R + operator fun setValue(thisRef: Any?, prop: KProperty<*>?, value: R) +} + +fun intFromStrPref(defValue: Int, getter: (String) -> StringPref) = object : Delegate { + private var _value by getter(defValue.toString()) + override fun getValue(thisRef: Any?, prop: KProperty<*>?) = _value.toIntOrNull() ?: defValue + override fun setValue(thisRef: Any?, prop: KProperty<*>?, value: Int) { _value = value.toString() } +}