mirror of
https://github.com/mihonapp/mihon.git
synced 2025-11-12 20:19:05 +01:00
Preferences ported to support library
This commit is contained in:
@@ -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) {}
|
||||
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user