Don't show help menu on about page

pull/935/head
Alex Baker 6 years ago
parent 544296c98b
commit 1e1ca2d2bd

@ -74,6 +74,8 @@ abstract class InjectingPreferenceFragment : PreferenceFragmentCompat() {
} }
} }
open fun getMenu() = R.menu.menu_preferences
protected fun recreate() { protected fun recreate() {
activity!!.recreate() activity!!.recreate()
} }

@ -1,21 +1,26 @@
package org.tasks.preferences package org.tasks.preferences
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.MenuItem
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.preference.Preference import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceFragmentCompat
import org.tasks.R import org.tasks.R
import org.tasks.databinding.ActivityPreferencesBinding import org.tasks.databinding.ActivityPreferencesBinding
import org.tasks.injection.InjectingPreferenceFragment
import org.tasks.injection.ThemedInjectingAppCompatActivity import org.tasks.injection.ThemedInjectingAppCompatActivity
import org.tasks.ui.MenuColorizer import org.tasks.ui.MenuColorizer
private const val EXTRA_TITLE = "extra_title" private const val EXTRA_TITLE = "extra_title"
abstract class BasePreferences : ThemedInjectingAppCompatActivity(), abstract class BasePreferences : ThemedInjectingAppCompatActivity(),
PreferenceFragmentCompat.OnPreferenceStartFragmentCallback { PreferenceFragmentCompat.OnPreferenceStartFragmentCallback, Toolbar.OnMenuItemClickListener {
lateinit var toolbar: Toolbar lateinit var toolbar: Toolbar
var menu: Int = 0
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -23,13 +28,16 @@ abstract class BasePreferences : ThemedInjectingAppCompatActivity(),
setContentView(binding.root) setContentView(binding.root)
toolbar = binding.toolbar.toolbar toolbar = binding.toolbar.toolbar
if (savedInstanceState == null) { if (savedInstanceState == null) {
val rootPreference = getRootPreference()
supportFragmentManager supportFragmentManager
.beginTransaction() .beginTransaction()
.replace(R.id.settings, getRootPreference()) .replace(R.id.settings, rootPreference)
.commit() .commit()
toolbar.title = getString(getRootTitle()) toolbar.title = getString(getRootTitle())
setupMenu(rootPreference)
} else { } else {
toolbar.title = savedInstanceState.getCharSequence(EXTRA_TITLE) toolbar.title = savedInstanceState.getCharSequence(EXTRA_TITLE)
setupMenu()
} }
supportFragmentManager.addOnBackStackChangedListener { supportFragmentManager.addOnBackStackChangedListener {
if (supportFragmentManager.backStackEntryCount == 0) { if (supportFragmentManager.backStackEntryCount == 0) {
@ -37,28 +45,37 @@ abstract class BasePreferences : ThemedInjectingAppCompatActivity(),
} }
} }
toolbar.navigationIcon = toolbar.navigationIcon =
ContextCompat.getDrawable(this, R.drawable.ic_outline_arrow_back_24px); ContextCompat.getDrawable(this, R.drawable.ic_outline_arrow_back_24px)
toolbar.setNavigationOnClickListener { onBackPressed() } toolbar.setNavigationOnClickListener { onBackPressed() }
setupMenu() toolbar.setOnMenuItemClickListener(this)
MenuColorizer.colorToolbar(this, toolbar) MenuColorizer.colorToolbar(this, toolbar)
} }
open fun setupMenu() {} private fun setupMenu() = setupMenu(supportFragmentManager.findFragmentById(R.id.settings))
private fun setupMenu(fragment: Fragment?) {
this.menu = if (fragment is InjectingPreferenceFragment) fragment.getMenu() else 0
toolbar.menu.clear()
if (menu > 0) {
toolbar.inflateMenu(menu)
}
}
abstract fun getRootTitle(): Int abstract fun getRootTitle(): Int
abstract fun getRootPreference(): PreferenceFragmentCompat abstract fun getRootPreference(): InjectingPreferenceFragment
override fun onSaveInstanceState(outState: Bundle) { override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState) super.onSaveInstanceState(outState)
outState.putCharSequence(EXTRA_TITLE, toolbar.title) outState.putCharSequence(EXTRA_TITLE, toolbar.title)
} }
override fun onSupportNavigateUp(): Boolean { override fun onBackPressed() {
if (supportFragmentManager.popBackStackImmediate()) { if (supportFragmentManager.popBackStackImmediate()) {
return true setupMenu()
} else {
super.onBackPressed()
} }
return super.onSupportNavigateUp()
} }
override fun onPreferenceStartFragment( override fun onPreferenceStartFragment(
@ -78,6 +95,16 @@ abstract class BasePreferences : ThemedInjectingAppCompatActivity(),
.addToBackStack(null) .addToBackStack(null)
.commit() .commit()
toolbar.title = pref.title toolbar.title = pref.title
setupMenu(fragment)
return true return true
} }
override fun onMenuItemClick(item: MenuItem?): Boolean {
return if (item?.itemId == R.id.menu_help_and_feedback) {
startActivity(Intent(this, HelpAndFeedback::class.java))
true
} else {
false
}
}
} }

@ -1,18 +1,10 @@
package org.tasks.preferences package org.tasks.preferences
import android.content.Intent
import android.view.MenuItem
import androidx.appcompat.widget.Toolbar
import org.tasks.R import org.tasks.R
import org.tasks.injection.ActivityComponent import org.tasks.injection.ActivityComponent
import org.tasks.preferences.fragments.MainSettingsFragment import org.tasks.preferences.fragments.MainSettingsFragment
class MainPreferences : BasePreferences(), Toolbar.OnMenuItemClickListener { class MainPreferences : BasePreferences() {
override fun setupMenu() {
toolbar.inflateMenu(R.menu.menu_preferences)
toolbar.setOnMenuItemClickListener(this)
}
override fun getRootTitle() = R.string.TLA_menu_settings override fun getRootTitle() = R.string.TLA_menu_settings
@ -21,13 +13,4 @@ class MainPreferences : BasePreferences(), Toolbar.OnMenuItemClickListener {
override fun inject(component: ActivityComponent) { override fun inject(component: ActivityComponent) {
component.inject(this) component.inject(this)
} }
override fun onMenuItemClick(item: MenuItem?): Boolean {
return if (item?.itemId == R.id.menu_help_and_feedback) {
startActivity(Intent(this, HelpAndFeedback::class.java))
true
} else {
false
}
}
} }

@ -68,4 +68,6 @@ class HelpAndFeedback : InjectingPreferenceFragment() {
override fun inject(component: FragmentComponent) { override fun inject(component: FragmentComponent) {
component.inject(this); component.inject(this);
} }
override fun getMenu() = 0
} }
Loading…
Cancel
Save