Settings: Dynamically update Top App Bar title to match open Fragment
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/top_app_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="56dp"
|
||||
app:title="Settings" />
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -2,4 +2,7 @@ package ch.deletescape.lawnchair.settings
|
||||
|
||||
import com.android.launcher3.R
|
||||
|
||||
class GeneralSettingsFragment : BasePreferenceFragment(R.xml.general_settings)
|
||||
class GeneralSettingsFragment : BasePreferenceFragment(R.xml.general_settings) {
|
||||
override val title: String
|
||||
get() = "General"
|
||||
}
|
||||
@@ -2,4 +2,7 @@ package ch.deletescape.lawnchair.settings
|
||||
|
||||
import com.android.launcher3.R
|
||||
|
||||
class HomeScreenSettingsFragment : BasePreferenceFragment(R.xml.home_screen_settings)
|
||||
class HomeScreenSettingsFragment : BasePreferenceFragment(R.xml.home_screen_settings) {
|
||||
override val title: String
|
||||
get() = "Home Screen"
|
||||
}
|
||||
@@ -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())
|
||||
|
||||
@@ -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)
|
||||
class SettingsFragment : BasePreferenceFragment(R.xml.settings, true) {
|
||||
override val title: String
|
||||
get() = "Settings"
|
||||
}
|
||||
Reference in New Issue
Block a user