Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 324febbe authored by Jacky Wang's avatar Jacky Wang
Browse files

[Catalyst] Support hybrid mode

Bug: 332202168
Flag: com.android.settings.flags.catalyst
Test: Manual
Change-Id: Ibfaca108774cad4835db44da0e34c68a6e5a2b23
parent b4230169
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -41,6 +41,9 @@ open class PreferenceFragment :
        createPreferenceScreen(PreferenceScreenFactory(this))

    override fun createPreferenceScreen(factory: PreferenceScreenFactory): PreferenceScreen? {
        preferenceScreenBindingHelper?.close()
        preferenceScreenBindingHelper = null

        val context = factory.context
        fun createPreferenceScreenFromResource() =
            factory.inflate(getPreferenceScreenResId(context))?.also {
@@ -86,9 +89,13 @@ open class PreferenceFragment :

    override fun onDestroy() {
        preferenceScreenBindingHelper?.close()
        preferenceScreenBindingHelper = null
        super.onDestroy()
    }

    protected fun getPreferenceKeysInHierarchy(): Set<String> =
        preferenceScreenBindingHelper?.getPreferences()?.map { it.key }?.toSet() ?: setOf()

    companion object {
        private const val TAG = "PreferenceFragment"
    }
+3 −1
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@ class PreferenceScreenBindingHelper(
    context: Context,
    private val preferenceBindingFactory: PreferenceBindingFactory,
    private val preferenceScreen: PreferenceScreen,
    preferenceHierarchy: PreferenceHierarchy,
    private val preferenceHierarchy: PreferenceHierarchy,
) : KeyedDataObservable<String>(), AutoCloseable {

    private val handler = Handler(Looper.getMainLooper())
@@ -133,6 +133,8 @@ class PreferenceScreenBindingHelper(
        }
    }

    fun getPreferences() = preferenceHierarchy.getAllPreferences()

    override fun close() {
        removeObserver(preferenceObserver)
        val context = preferenceScreen.context