Browse Source

Add simple method for preference bindings

len 8 years ago
parent
commit
4524c705da

+ 10 - 11
app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAboutFragment.kt

@@ -22,6 +22,15 @@ import java.text.SimpleDateFormat
 import java.util.*
 
 class SettingsAboutFragment : SettingsFragment() {
+
+    companion object {
+        fun newInstance(rootKey: String): SettingsAboutFragment {
+            val args = Bundle()
+            args.putString(XpPreferenceFragment.ARG_PREFERENCE_ROOT, rootKey)
+            return SettingsAboutFragment().apply { arguments = args }
+        }
+    }
+
     /**
      * Checks for new releases
      */
@@ -32,17 +41,7 @@ class SettingsAboutFragment : SettingsFragment() {
      */
     private var releaseSubscription: Subscription? = null
 
-    val automaticUpdates by lazy {
-        findPreference(getString(R.string.pref_enable_automatic_updates_key)) as SwitchPreference
-    }
-
-    companion object {
-        fun newInstance(rootKey: String): SettingsAboutFragment {
-            val args = Bundle()
-            args.putString(XpPreferenceFragment.ARG_PREFERENCE_ROOT, rootKey)
-            return SettingsAboutFragment().apply { arguments = args }
-        }
-    }
+    val automaticUpdates: SwitchPreference by bindPref(R.string.pref_enable_automatic_updates_key)
 
     override fun onViewCreated(view: View, savedState: Bundle?) {
         super.onViewCreated(view, savedState)

+ 5 - 4
app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedFragment.kt

@@ -1,6 +1,7 @@
 package eu.kanade.tachiyomi.ui.setting
 
 import android.os.Bundle
+import android.support.v7.preference.Preference
 import android.support.v7.preference.XpPreferenceFragment
 import android.view.View
 import com.afollestad.materialdialogs.MaterialDialog
@@ -33,13 +34,13 @@ class SettingsAdvancedFragment : SettingsFragment() {
 
     private val db: DatabaseHelper by injectLazy()
 
-    private val clearCache by lazy { findPreference(getString(R.string.pref_clear_chapter_cache_key)) }
+    private val clearCache: Preference by bindPref(R.string.pref_clear_chapter_cache_key)
 
-    private val clearDatabase by lazy { findPreference(getString(R.string.pref_clear_database_key)) }
+    private val clearDatabase: Preference by bindPref(R.string.pref_clear_database_key)
 
-    private val clearCookies by lazy { findPreference(getString(R.string.pref_clear_cookies_key)) }
+    private val clearCookies: Preference by bindPref(R.string.pref_clear_cookies_key)
 
-    private val refreshMetadata by lazy { findPreference(getString(R.string.pref_refresh_library_metadata_key)) }
+    private val refreshMetadata: Preference by bindPref(R.string.pref_refresh_library_metadata_key)
 
     override fun onViewCreated(view: View, savedState: Bundle?) {
         super.onViewCreated(view, savedState)

+ 2 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsDownloadsFragment.kt

@@ -5,6 +5,7 @@ import android.content.Intent
 import android.os.Bundle
 import android.os.Environment
 import android.support.v4.content.ContextCompat
+import android.support.v7.preference.Preference
 import android.support.v7.preference.XpPreferenceFragment
 import android.support.v7.widget.RecyclerView
 import android.view.View
@@ -36,7 +37,7 @@ class SettingsDownloadsFragment : SettingsFragment() {
 
     private val preferences: PreferencesHelper by injectLazy()
 
-    val downloadDirPref by lazy { findPreference(getString(R.string.pref_download_directory_key)) }
+    val downloadDirPref: Preference by bindPref(R.string.pref_download_directory_key)
 
     override fun onViewCreated(view: View, savedState: Bundle?) {
         super.onViewCreated(view, savedState)

+ 5 - 0
app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsFragment.kt

@@ -4,6 +4,7 @@ import android.os.Bundle
 import android.support.annotation.CallSuper
 import android.support.graphics.drawable.VectorDrawableCompat
 import android.support.v4.content.ContextCompat
+import android.support.v7.preference.Preference
 import android.support.v7.preference.XpPreferenceFragment
 import android.view.View
 import eu.kanade.tachiyomi.R
@@ -83,4 +84,8 @@ open class SettingsFragment : XpPreferenceFragment() {
             "about_screen" to R.drawable.ic_help_black_24dp
     )
 
+    protected inline fun <reified T : Preference> bindPref(resId: Int): Lazy<T> {
+        return lazy { findPreference(getString(resId)) as T }
+    }
+
 }

+ 5 - 16
app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralFragment.kt

@@ -34,26 +34,15 @@ class SettingsGeneralFragment : SettingsFragment(),
 
     private val db: DatabaseHelper by injectLazy()
 
+    val columnsPreference: SimpleDialogPreference by bindPref(R.string.pref_library_columns_dialog_key)
 
-    val columnsPreference by lazy {
-        findPreference(getString(R.string.pref_library_columns_dialog_key)) as SimpleDialogPreference
-    }
-
-    val updateInterval by lazy {
-        findPreference(getString(R.string.pref_library_update_interval_key)) as IntListPreference
-    }
+    val updateInterval: IntListPreference by bindPref(R.string.pref_library_update_interval_key)
 
-    val updateRestriction by lazy {
-        findPreference(getString(R.string.pref_library_update_restriction_key)) as MultiSelectListPreference
-    }
+    val updateRestriction: MultiSelectListPreference by bindPref(R.string.pref_library_update_restriction_key)
 
-    val themePreference by lazy {
-        findPreference(getString(R.string.pref_theme_key)) as IntListPreference
-    }
+    val themePreference: IntListPreference by bindPref(R.string.pref_theme_key)
 
-    val categoryUpdate by lazy {
-        findPreference(getString(R.string.pref_library_update_categories_key)) as MultiSelectListPreference
-    }
+    val categoryUpdate: MultiSelectListPreference by bindPref(R.string.pref_library_update_categories_key)
 
     override fun onViewCreated(view: View, savedState: Bundle?) {
         super.onViewCreated(view, savedState)

+ 2 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsSyncFragment.kt

@@ -5,6 +5,7 @@ import android.os.Bundle
 import android.support.v7.preference.PreferenceCategory
 import android.support.v7.preference.XpPreferenceFragment
 import android.view.View
+import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.data.mangasync.MangaSyncManager
 import eu.kanade.tachiyomi.data.mangasync.MangaSyncService
 import eu.kanade.tachiyomi.data.preference.PreferencesHelper
@@ -28,7 +29,7 @@ class SettingsSyncFragment : SettingsFragment() {
 
     private val preferences: PreferencesHelper by injectLazy()
 
-    val syncCategory by lazy { findPreference("pref_category_manga_sync_accounts") as PreferenceCategory }
+    val syncCategory: PreferenceCategory by bindPref(R.string.pref_category_manga_sync_accounts_key)
 
     override fun onViewCreated(view: View, savedState: Bundle?) {
         super.onViewCreated(view, savedState)

+ 1 - 0
app/src/main/res/values/keys.xml

@@ -53,6 +53,7 @@
     <string name="pref_last_used_category_key">last_used_category</string>
 
     <string name="pref_source_languages">pref_source_languages</string>
+    <string name="pref_category_manga_sync_accounts_key">category_manga_sync_accounts</string>
 
     <string name="pref_clear_chapter_cache_key">pref_clear_chapter_cache_key</string>
     <string name="pref_clear_database_key">pref_clear_database_key</string>

+ 1 - 1
app/src/main/res/xml/pref_sync.xml

@@ -18,7 +18,7 @@
             android:dependency="@string/pref_auto_update_manga_sync_key"/>
 
         <PreferenceCategory
-            android:key="pref_category_manga_sync_accounts"
+            android:key="@string/pref_category_manga_sync_accounts_key"
             android:title="@string/services"
             android:persistent="false"/>