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

Commit 80848582 authored by Jeremie Boulic's avatar Jeremie Boulic
Browse files

[DocsUI Peek] Lazily load Peek fragment

Bug: 417096722
Flag: com.android.documentsui.flags.use_material3
Flag: com.android.documentsui.flags.use_peek_preview_ro
Test: DocumentsUIGoogleTests:com.android.documentsui.peek.PeekUiTest
still pass

Change-Id: Ic82c4f9a022afb1b5b56b91a0a996cc94d1080e8
parent 618f7c68
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -614,9 +614,11 @@ public class ActionHandler<T extends FragmentActivity & AbstractActionHandler.Co
    }

    private void showPeek(DocumentInfo doc) {
        if (mPeekViewManager != null) {
            mPeekViewManager.peekDocument(doc);
        if (mPeekViewManager == null) {
            Log.e(TAG, "Attempting to show Peek when PeekViewManager is not defined");
            return;
        }
        mPeekViewManager.peekDocument(doc);
    }

    @Override
+14 −1
Original line number Diff line number Diff line
@@ -42,13 +42,25 @@ open class PeekViewManager(
    }

    protected open fun initialize() {
        // Restore the Peek overlay if it was active.
        if (viewModel.overlayActive.value == true) {
            maybeInitializeFragment()
            setContainerVisibility(true)
        }
    }

    /**
     * Sets the Peek fragment. By either querying it if it has been restored by the fragment
     * manager, or by initializing it.
     */
    private fun maybeInitializeFragment() {
        // The fragment manager automatically handles state restoration: the fragment might already
        // exist.
        val existingFragment = fm.findFragmentById(getRes(R.id.peek_overlay))
        if (existingFragment == null) {
            peekFragment = PeekFragment()
            val ft: FragmentTransaction = fm.beginTransaction()
            ft.replace(getRes(R.id.peek_overlay), peekFragment)
            ft.add(getRes(R.id.peek_overlay), peekFragment)
            ft.commitAllowingStateLoss()
        } else {
            peekFragment = existingFragment as PeekFragment
@@ -68,6 +80,7 @@ open class PeekViewManager(
    }

    open fun peekDocument(doc: DocumentInfo) {
        maybeInitializeFragment()
        if (!::peekFragment.isInitialized) {
            Log.e(TAG, "PeekFragment has not been initialized")
            return