Back button now returns to start screen. Also fix #356

This commit is contained in:
len
2016-07-20 19:09:28 +02:00
parent 1090c04fe3
commit 8c1bedf796
5 changed files with 82 additions and 33 deletions
@@ -16,6 +16,15 @@ class SettingsActivity : BaseActivity(),
private lateinit var replaceFragmentStrategy: ReplaceFragment
/**
* Flags to send to the parent activity for reacting to preference changes.
*/
var parentFlags = 0
set(value) {
field = field or value
setResult(field)
}
override fun onCreate(savedState: Bundle?) {
setAppTheme()
super.onCreate(savedState)
@@ -29,10 +38,16 @@ class SettingsActivity : BaseActivity(),
supportFragmentManager.beginTransaction()
.add(R.id.settings_content, SettingsFragment.newInstance(null), "Settings")
.commit()
} else {
parentFlags = savedState.getInt(SettingsActivity::parentFlags.name)
}
setupToolbar(toolbar, backNavigation = false)
}
override fun onSaveInstanceState(outState: Bundle) {
outState.putInt(SettingsActivity::parentFlags.name, parentFlags)
super.onSaveInstanceState(outState)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
@@ -60,4 +75,9 @@ class SettingsActivity : BaseActivity(),
return true
}
companion object {
const val FLAG_THEME_CHANGED = 0x1
const val FLAG_DATABASE_CLEARED = 0x2
}
}
@@ -97,6 +97,7 @@ class SettingsAdvancedFragment : SettingsFragment() {
.positiveText(android.R.string.yes)
.negativeText(android.R.string.no)
.onPositive { dialog, which ->
(activity as SettingsActivity).parentFlags = SettingsActivity.FLAG_DATABASE_CLEARED
db.deleteMangasNotInLibrary().executeAsBlocking()
activity.toast(R.string.clear_database_completed)
}
@@ -1,8 +1,6 @@
package eu.kanade.tachiyomi.ui.setting
import android.content.Intent
import android.os.Bundle
import android.support.v4.app.TaskStackBuilder
import android.support.v7.preference.Preference
import android.support.v7.preference.PreferenceFragmentCompat
import android.support.v7.preference.XpPreferenceFragment
@@ -67,16 +65,14 @@ class SettingsGeneralFragment : SettingsFragment(),
}
themePreference.setOnPreferenceChangeListener { preference, newValue ->
// Rebuild activity's to apply themes.
TaskStackBuilder.create(context)
.addNextIntentWithParentStack(Intent(activity.intent))
.startActivities()
(activity as SettingsActivity).parentFlags = SettingsActivity.FLAG_THEME_CHANGED
activity.recreate()
true
}
}
override fun onPreferenceDisplayDialog(p0: PreferenceFragmentCompat?, p: Preference): Boolean {
if (p.key == getString(R.string.pref_library_columns_dialog_key)) {
if (p === columnsPreference) {
val fragment = LibraryColumnsDialog.newInstance(p)
fragment.setTargetFragment(this, 0)
fragment.show(fragmentManager, null)