From 48003fa119eb6abb6a827f56be201571a5123901 Mon Sep 17 00:00:00 2001 From: Patryk Michalik Date: Mon, 1 Mar 2021 20:59:57 +0100 Subject: [PATCH] Settings: Dynamically update Top App Bar title to match open Fragment --- lawnchair/res/layout/settings_activity.xml | 1 + .../lawnchair/settings/BasePreferenceFragment.kt | 6 +++++- .../lawnchair/settings/GeneralSettingsFragment.kt | 5 ++++- .../settings/HomeScreenSettingsFragment.kt | 5 ++++- .../lawnchair/settings/SettingsActivity.kt | 13 +++++++++++-- .../lawnchair/settings/SettingsFragment.kt | 5 ++++- 6 files changed, 29 insertions(+), 6 deletions(-) diff --git a/lawnchair/res/layout/settings_activity.xml b/lawnchair/res/layout/settings_activity.xml index b346103f7f..fa29419225 100644 --- a/lawnchair/res/layout/settings_activity.xml +++ b/lawnchair/res/layout/settings_activity.xml @@ -14,6 +14,7 @@ android:layout_height="wrap_content"> diff --git a/lawnchair/src/ch/deletescape/lawnchair/settings/BasePreferenceFragment.kt b/lawnchair/src/ch/deletescape/lawnchair/settings/BasePreferenceFragment.kt index 4d39177a08..fcd8c1d154 100644 --- a/lawnchair/src/ch/deletescape/lawnchair/settings/BasePreferenceFragment.kt +++ b/lawnchair/src/ch/deletescape/lawnchair/settings/BasePreferenceFragment.kt @@ -5,7 +5,11 @@ import androidx.preference.PreferenceFragmentCompat import com.android.launcher3.LauncherFiles import com.google.android.material.transition.MaterialSharedAxis -open class BasePreferenceFragment(var preferenceResource: Int, var isTopLevelFragment: Boolean = false) : PreferenceFragmentCompat() { +interface TitledFragment { + val title: String +} + +abstract class BasePreferenceFragment(var preferenceResource: Int, var isTopLevelFragment: Boolean = false) : PreferenceFragmentCompat(), TitledFragment { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(preferenceResource, rootKey) diff --git a/lawnchair/src/ch/deletescape/lawnchair/settings/GeneralSettingsFragment.kt b/lawnchair/src/ch/deletescape/lawnchair/settings/GeneralSettingsFragment.kt index eaf760f2b0..8057b052b2 100644 --- a/lawnchair/src/ch/deletescape/lawnchair/settings/GeneralSettingsFragment.kt +++ b/lawnchair/src/ch/deletescape/lawnchair/settings/GeneralSettingsFragment.kt @@ -2,4 +2,7 @@ package ch.deletescape.lawnchair.settings import com.android.launcher3.R -class GeneralSettingsFragment : BasePreferenceFragment(R.xml.general_settings) \ No newline at end of file +class GeneralSettingsFragment : BasePreferenceFragment(R.xml.general_settings) { + override val title: String + get() = "General" +} \ No newline at end of file diff --git a/lawnchair/src/ch/deletescape/lawnchair/settings/HomeScreenSettingsFragment.kt b/lawnchair/src/ch/deletescape/lawnchair/settings/HomeScreenSettingsFragment.kt index aae940f7bb..b1e7175066 100644 --- a/lawnchair/src/ch/deletescape/lawnchair/settings/HomeScreenSettingsFragment.kt +++ b/lawnchair/src/ch/deletescape/lawnchair/settings/HomeScreenSettingsFragment.kt @@ -2,4 +2,7 @@ package ch.deletescape.lawnchair.settings import com.android.launcher3.R -class HomeScreenSettingsFragment : BasePreferenceFragment(R.xml.home_screen_settings) \ No newline at end of file +class HomeScreenSettingsFragment : BasePreferenceFragment(R.xml.home_screen_settings) { + override val title: String + get() = "Home Screen" +} \ No newline at end of file diff --git a/lawnchair/src/ch/deletescape/lawnchair/settings/SettingsActivity.kt b/lawnchair/src/ch/deletescape/lawnchair/settings/SettingsActivity.kt index c8ba7d69af..c11b30a495 100644 --- a/lawnchair/src/ch/deletescape/lawnchair/settings/SettingsActivity.kt +++ b/lawnchair/src/ch/deletescape/lawnchair/settings/SettingsActivity.kt @@ -1,20 +1,29 @@ package ch.deletescape.lawnchair.settings import android.os.Bundle +import android.view.View import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat import com.android.launcher3.R import com.google.android.material.appbar.MaterialToolbar -// TODO: Migrate missing code from ch.deletescape.settings.ui.SettingsActivity. - class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPreferenceStartFragmentCallback { private lateinit var topAppBar: MaterialToolbar + private val fragmentListener = object: FragmentManager.FragmentLifecycleCallbacks() { + override fun onFragmentViewCreated(fm: FragmentManager, fragment: Fragment, v: View, savedInstanceState: Bundle?) { + topAppBar.title = (fragment as? TitledFragment)?.title + } + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.settings_activity) + topAppBar = findViewById(R.id.top_app_bar) + supportFragmentManager.registerFragmentLifecycleCallbacks(fragmentListener, false) supportFragmentManager .beginTransaction() .replace(R.id.content, SettingsFragment()) diff --git a/lawnchair/src/ch/deletescape/lawnchair/settings/SettingsFragment.kt b/lawnchair/src/ch/deletescape/lawnchair/settings/SettingsFragment.kt index 43498acc19..878dc0e790 100644 --- a/lawnchair/src/ch/deletescape/lawnchair/settings/SettingsFragment.kt +++ b/lawnchair/src/ch/deletescape/lawnchair/settings/SettingsFragment.kt @@ -4,4 +4,7 @@ import com.android.launcher3.R // TODO: Migrate missing code from ch.deletescape.settings.ui.SettingsActivity. -class SettingsFragment : BasePreferenceFragment(R.xml.settings, true) \ No newline at end of file +class SettingsFragment : BasePreferenceFragment(R.xml.settings, true) { + override val title: String + get() = "Settings" +} \ No newline at end of file