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

Commit 5d34df8c authored by Jacky Wang's avatar Jacky Wang
Browse files

[Catalyst] Provide FragmentManager for PreferenceLifecycleContext

FragmentManager could be used to show dialog.

Bug: 389127138
Flag: EXEMPT new property
Test: N/A
Change-Id: I6d4d4bc8bce6edad15519c02d5a82d05f9b0307d
parent f54fcb71
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.os.Bundle
import androidx.activity.result.ActivityResultCallback
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContract
import androidx.fragment.app.FragmentManager
import com.android.settingslib.datastore.KeyValueStore
import kotlinx.coroutines.CoroutineScope

@@ -150,6 +151,22 @@ abstract class PreferenceLifecycleContext(context: Context) : ContextWrapper(con
     */
    abstract val lifecycleScope: CoroutineScope

    /**
     * Return the [FragmentManager] for interacting with fragments associated with current
     * fragment's activity.
     *
     * @see [androidx.fragment.app.Fragment.getParentFragmentManager]
     */
    abstract val fragmentManager: FragmentManager

    /**
     * Return a private `FragmentManager` for placing and managing Fragments inside of current
     * Fragment.
     *
     * @see [androidx.fragment.app.Fragment.getChildFragmentManager]
     */
    abstract val childFragmentManager: FragmentManager

    /** Returns the preference widget object associated with given key. */
    abstract fun <T> findPreference(key: String): T?

+8 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.content.Intent
import android.os.Bundle
import androidx.activity.result.ActivityResultCallback
import androidx.activity.result.contract.ActivityResultContract
import androidx.fragment.app.FragmentManager
import androidx.lifecycle.LifecycleCoroutineScope
import androidx.lifecycle.lifecycleScope
import androidx.preference.Preference
@@ -66,6 +67,12 @@ class PreferenceScreenBindingHelper(
            override val lifecycleScope: LifecycleCoroutineScope
                get() = fragment.lifecycleScope

            override val fragmentManager: FragmentManager
                get() = fragment.parentFragmentManager

            override val childFragmentManager: FragmentManager
                get() = fragment.childFragmentManager

            override fun <T> findPreference(key: String) =
                preferenceScreen.findPreference(key) as T?

@@ -86,7 +93,7 @@ class PreferenceScreenBindingHelper(

            override fun <I, O> registerForActivityResult(
                contract: ActivityResultContract<I, O>,
                callback: ActivityResultCallback<O>
                callback: ActivityResultCallback<O>,
            ) = fragment.registerForActivityResult(contract, callback)
        }