Preferences ported to support library

This commit is contained in:
len
2016-03-07 23:48:43 +01:00
parent bcbd541d48
commit 70e557575f
26 changed files with 488 additions and 440 deletions

View File

@@ -1,8 +1,12 @@
package eu.kanade.tachiyomi.ui.setting
import android.content.Context
import android.os.Bundle
import android.preference.PreferenceCategory
import android.support.v7.preference.DialogPreference
import android.support.v7.preference.Preference
import android.support.v7.preference.PreferenceCategory
import android.view.View
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.source.base.Source
import eu.kanade.tachiyomi.widget.preference.MangaSyncLoginDialog
import eu.kanade.tachiyomi.widget.preference.SourceLoginDialog
@@ -18,29 +22,32 @@ class SettingsAccountsFragment : SettingsNestedFragment() {
}
}
val sourceCategory by lazy { findPreference("pref_category_source_accounts") as PreferenceCategory }
val syncCategory by lazy { findPreference("pref_category_manga_sync_accounts") as PreferenceCategory }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
PreferenceCategory(activity).apply {
preferenceScreen.addPreference(this)
title = "Sources"
val themedContext = preferenceManager.context
for (source in getSourcesWithLogin()) {
val dialog = SourceLoginDialog(activity, preferences, source)
dialog.title = source.name
addPreference(dialog)
for (source in getSourcesWithLogin()) {
val pref = SourcePreference(themedContext).apply {
isPersistent = false
title = source.name
key = source.id.toString()
dialogLayoutResource = R.layout.pref_account_login
}
sourceCategory.addPreference(pref)
}
PreferenceCategory(activity).apply {
preferenceScreen.addPreference(this)
title = "Sync"
for (sync in settingsActivity.syncManager.services) {
val dialog = MangaSyncLoginDialog(activity, preferences, sync)
dialog.title = sync.name
addPreference(dialog)
for (sync in settingsActivity.syncManager.services) {
val pref = SyncPreference(themedContext).apply {
isPersistent = false
title = sync.name
key = sync.id.toString()
dialogLayoutResource = R.layout.pref_account_login
}
syncCategory.addPreference(pref)
}
}
@@ -48,4 +55,22 @@ class SettingsAccountsFragment : SettingsNestedFragment() {
return settingsActivity.sourceManager.sources.filter { it.isLoginRequired }
}
override fun onDisplayPreferenceDialog(preference: Preference) {
if (preference is SourcePreference) {
val fragment = SourceLoginDialog.newInstance(preference)
fragment.setTargetFragment(this, 0)
fragment.show(childFragmentManager, null)
} else if (preference is SyncPreference) {
val fragment = MangaSyncLoginDialog.newInstance(preference)
fragment.setTargetFragment(this, 0)
fragment.show(childFragmentManager, null)
} else {
super.onDisplayPreferenceDialog(preference)
}
}
class SourcePreference(context: Context) : DialogPreference(context) {}
class SyncPreference(context: Context) : DialogPreference(context) {}
}

View File

@@ -1,7 +1,7 @@
package eu.kanade.tachiyomi.ui.setting
import android.os.Bundle
import android.preference.PreferenceFragment
import android.support.v7.preference.PreferenceFragmentCompat
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.cache.ChapterCache
import eu.kanade.tachiyomi.data.database.DatabaseHelper
@@ -28,46 +28,46 @@ class SettingsActivity : BaseActivity() {
setupToolbar(toolbar)
if (savedState == null) {
fragmentManager.beginTransaction().replace(R.id.settings_content,
SettingsMainFragment()).commit()
supportFragmentManager.beginTransaction()
.replace(R.id.settings_content,SettingsMainFragment())
.commit()
}
}
override fun onBackPressed() {
if (!fragmentManager.popBackStackImmediate()) {
if (!supportFragmentManager.popBackStackImmediate()) {
super.onBackPressed()
}
}
class SettingsMainFragment : PreferenceFragment() {
class SettingsMainFragment : PreferenceFragmentCompat() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
override fun onCreatePreferences(savedState: Bundle?, s: String?) {
addPreferencesFromResource(R.xml.pref_main)
registerSubpreference(R.string.pref_category_general_key,
SettingsGeneralFragment.newInstance(
R.xml.pref_general, R.string.pref_category_general))
registerSubpreference(R.string.pref_category_general_key) {
SettingsGeneralFragment.newInstance(R.xml.pref_general, R.string.pref_category_general)
}
registerSubpreference(R.string.pref_category_reader_key,
SettingsNestedFragment.newInstance(
R.xml.pref_reader, R.string.pref_category_reader))
registerSubpreference(R.string.pref_category_reader_key) {
SettingsNestedFragment.newInstance(R.xml.pref_reader, R.string.pref_category_reader)
}
registerSubpreference(R.string.pref_category_downloads_key,
SettingsDownloadsFragment.newInstance(
R.xml.pref_downloads, R.string.pref_category_downloads))
registerSubpreference(R.string.pref_category_downloads_key) {
SettingsDownloadsFragment.newInstance(R.xml.pref_downloads, R.string.pref_category_downloads)
}
registerSubpreference(R.string.pref_category_accounts_key,
SettingsAccountsFragment.newInstance(
R.xml.pref_accounts, R.string.pref_category_accounts))
registerSubpreference(R.string.pref_category_accounts_key) {
SettingsAccountsFragment.newInstance(R.xml.pref_accounts, R.string.pref_category_accounts)
}
registerSubpreference(R.string.pref_category_advanced_key,
SettingsAdvancedFragment.newInstance(
R.xml.pref_advanced, R.string.pref_category_advanced))
registerSubpreference(R.string.pref_category_advanced_key) {
SettingsAdvancedFragment.newInstance(R.xml.pref_advanced, R.string.pref_category_advanced)
}
registerSubpreference(R.string.pref_category_about_key,
SettingsAboutFragment.newInstance(
R.xml.pref_about, R.string.pref_category_about))
registerSubpreference(R.string.pref_category_about_key) {
SettingsAboutFragment.newInstance(R.xml.pref_about, R.string.pref_category_about)
}
}
override fun onResume() {
@@ -75,8 +75,9 @@ class SettingsActivity : BaseActivity() {
(activity as BaseActivity).setToolbarTitle(getString(R.string.label_settings))
}
private fun registerSubpreference(preferenceResource: Int, fragment: PreferenceFragment) {
private fun registerSubpreference(preferenceResource: Int, func: () -> PreferenceFragmentCompat) {
findPreference(getString(preferenceResource)).setOnPreferenceClickListener {
val fragment = func()
fragmentManager.beginTransaction()
.replace(R.id.settings_content, fragment)
.addToBackStack(fragment.javaClass.simpleName)

View File

@@ -1,7 +1,7 @@
package eu.kanade.tachiyomi.ui.setting
import android.os.Bundle
import android.preference.Preference
import android.support.v7.preference.Preference
import android.view.View
import com.afollestad.materialdialogs.MaterialDialog
import eu.kanade.tachiyomi.R

View File

@@ -1,11 +1,15 @@
package eu.kanade.tachiyomi.ui.setting
import android.os.Bundle
import android.support.v7.preference.Preference
import android.view.View
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.library.LibraryUpdateAlarm
import eu.kanade.tachiyomi.widget.preference.IntListPreference
import eu.kanade.tachiyomi.widget.preference.LibraryColumnsDialog
import eu.kanade.tachiyomi.widget.preference.SimpleDialogPreference
import rx.Observable
import rx.Subscription
class SettingsGeneralFragment : SettingsNestedFragment() {
@@ -17,19 +21,56 @@ class SettingsGeneralFragment : SettingsNestedFragment() {
}
}
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
}
var columnsSubscription: Subscription? = null
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
val columnsDialog = findPreference(
getString(R.string.pref_library_columns_dialog_key)) as LibraryColumnsDialog
columnsDialog.setPreferencesHelper(preferences)
val updateInterval = findPreference(
getString(R.string.pref_library_update_interval_key)) as IntListPreference
updateInterval.setOnPreferenceChangeListener { preference, newValue ->
LibraryUpdateAlarm.startAlarm(activity, (newValue as String).toInt())
true
}
}
override fun onResume() {
super.onResume()
columnsSubscription = Observable.combineLatest(preferences.portraitColumns().asObservable(),
preferences.landscapeColumns().asObservable(),
{ portraitColumns, landscapeColumns -> Pair(portraitColumns, landscapeColumns) })
.subscribe { updateColumnsSummary(it.first, it.second) }
}
override fun onPause() {
columnsSubscription?.unsubscribe()
super.onPause()
}
override fun onDisplayPreferenceDialog(preference: Preference) {
if (preference === columnsPreference) {
val fragment = LibraryColumnsDialog.newInstance(preference)
fragment.setTargetFragment(this, 0)
fragment.show(childFragmentManager, null)
} else {
super.onDisplayPreferenceDialog(preference)
}
}
private fun updateColumnsSummary(portraitColumns: Int, landscapeColumns: Int) {
val portrait = getColumnValue(portraitColumns)
val landscape = getColumnValue(landscapeColumns)
val msg = "${getString(R.string.portrait)}: $portrait, ${getString(R.string.landscape)}: $landscape"
columnsPreference.summary = msg
}
private fun getColumnValue(value: Int): String {
return if (value == 0) getString(R.string.default_columns) else value.toString()
}
}

View File

@@ -1,10 +1,10 @@
package eu.kanade.tachiyomi.ui.setting
import android.os.Bundle
import android.preference.PreferenceFragment
import android.support.v7.preference.PreferenceFragmentCompat
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
open class SettingsNestedFragment : PreferenceFragment() {
open class SettingsNestedFragment : PreferenceFragmentCompat() {
companion object {
@@ -19,8 +19,7 @@ open class SettingsNestedFragment : PreferenceFragment() {
}
override fun onCreate(savedState: Bundle?) {
super.onCreate(savedState)
override fun onCreatePreferences(savedState: Bundle?, s: String?) {
addPreferencesFromResource(arguments.getInt(RESOURCE_FILE))
}