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

Commit 3686cfde authored by Josh Tsuji's avatar Josh Tsuji Committed by Automerger Merge Worker
Browse files

Merge "Hide bubbles whenever the status bar is hidden, unless there's a...

Merge "Hide bubbles whenever the status bar is hidden, unless there's a flyout." into rvc-dev am: 21f26f1c am: cc8325d3 am: 57be6f29

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11709058

Change-Id: I36448da264160b8428d0dae2ad91166a3f6538d1
parents caf6d7fd 57be6f29
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -577,6 +577,18 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
        return mBubbleScrim;
    }

    /**
     * Called when the status bar has become visible or invisible (either permanently or
     * temporarily).
     */
    public void onStatusBarVisibilityChanged(boolean visible) {
        if (mStackView != null) {
            // Hide the stack temporarily if the status bar has been made invisible, and the stack
            // is collapsed. An expanded stack should remain visible until collapsed.
            mStackView.setTemporarilyInvisible(!visible && !isStackExpanded());
        }
    }

    /**
     * Sets whether to perform inflation on the same thread as the caller. This method should only
     * be used in tests, not in production.
+41 −0
Original line number Diff line number Diff line
@@ -80,6 +80,7 @@ import androidx.dynamicanimation.animation.SpringForce;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.ContrastColorUtil;
import com.android.internal.widget.ViewClippingUtil;
import com.android.systemui.Interpolators;
import com.android.systemui.Prefs;
import com.android.systemui.R;
import com.android.systemui.bubbles.animation.ExpandedAnimationController;
@@ -89,6 +90,7 @@ import com.android.systemui.model.SysUiState;
import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.shared.system.SysUiStatsLog;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.phone.CollapsedStatusBarFragment;
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
import com.android.systemui.util.DismissCircleView;
import com.android.systemui.util.FloatingContentCoordinator;
@@ -243,6 +245,9 @@ public class BubbleStackView extends FrameLayout
    /** Whether a touch gesture, such as a stack/bubble drag or flyout drag, is in progress. */
    private boolean mIsGestureInProgress = false;

    /** Whether or not the stack is temporarily invisible off the side of the screen. */
    private boolean mTemporarilyInvisible = false;

    /** Description of current animation controller state. */
    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        pw.println("Stack view state:");
@@ -919,6 +924,38 @@ public class BubbleStackView extends FrameLayout

            return true;
        });

        animate()
                .setInterpolator(Interpolators.PANEL_CLOSE_ACCELERATED)
                .setDuration(CollapsedStatusBarFragment.FADE_IN_DURATION);
    }

    /**
     * Sets whether or not the stack should become temporarily invisible by moving off the side of
     * the screen.
     *
     * If a flyout comes in while it's invisible, it will animate back in while the flyout is
     * showing but disappear again when the flyout is gone.
     */
    public void setTemporarilyInvisible(boolean invisible) {
        mTemporarilyInvisible = invisible;
        animateTemporarilyInvisible();
    }

    /**
     * Animates onto or off the screen depending on whether we're temporarily invisible, and whether
     * a flyout is visible.
     */
    private void animateTemporarilyInvisible() {
        if (mTemporarilyInvisible && mFlyout.getVisibility() != View.VISIBLE) {
            if (mStackAnimationController.isStackOnLeftSide()) {
                animate().translationX(-mBubbleSize).start();
            } else {
                animate().translationX(mBubbleSize).start();
            }
        } else {
            animate().translationX(0).start();
        }
    }

    private void setUpManageMenu() {
@@ -1989,6 +2026,9 @@ public class BubbleStackView extends FrameLayout
            // Stop suppressing the dot now that the flyout has morphed into the dot.
            bubbleView.removeDotSuppressionFlag(
                    BadgedImageView.SuppressionFlag.FLYOUT_VISIBLE);

            mFlyout.setVisibility(INVISIBLE);
            animateTemporarilyInvisible();
        };
        mFlyout.setVisibility(INVISIBLE);

@@ -2006,6 +2046,7 @@ public class BubbleStackView extends FrameLayout
            final Runnable expandFlyoutAfterDelay = () -> {
                mAnimateInFlyout = () -> {
                    mFlyout.setVisibility(VISIBLE);
                    animateTemporarilyInvisible();
                    mFlyoutDragDeltaX =
                            mStackAnimationController.isStackOnLeftSide()
                                    ? -mFlyout.getWidth()
+13 −0
Original line number Diff line number Diff line
@@ -2253,6 +2253,8 @@ public class StatusBar extends SystemUI implements DemoMode,
                updateHideIconsForBouncer(false /* animate */);
            }
        }

        updateBubblesVisibility();
    }

    @Override
@@ -2268,6 +2270,8 @@ public class StatusBar extends SystemUI implements DemoMode,
        }
        mLightBarController.onStatusBarAppearanceChanged(appearanceRegions, barModeChanged,
                mStatusBarMode, navbarColorManagedByIme);

        updateBubblesVisibility();
    }

    @Override
@@ -2311,6 +2315,7 @@ public class StatusBar extends SystemUI implements DemoMode,
        final int barMode = barMode(mTransientShown, mAppearance);
        if (updateBarMode(barMode)) {
            mLightBarController.onStatusBarModeChanged(barMode);
            updateBubblesVisibility();
        }
    }

@@ -2395,6 +2400,14 @@ public class StatusBar extends SystemUI implements DemoMode,
        mNotificationPanelViewController.setQsScrimEnabled(scrimEnabled);
    }

    /** Temporarily hides Bubbles if the status bar is hidden. */
    private void updateBubblesVisibility() {
        mBubbleController.onStatusBarVisibilityChanged(
                mStatusBarMode != MODE_LIGHTS_OUT
                        && mStatusBarMode != MODE_LIGHTS_OUT_TRANSPARENT
                        && !mStatusBarWindowHidden);
    }

    void checkBarMode(@TransitionMode int mode, @WindowVisibleState int windowState,
            BarTransitions transitions) {
        final boolean anim = !mNoAnimationOnNextBarModeChange && mDeviceInteractive