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

Commit db79bf61 authored by Selim Cinek's avatar Selim Cinek
Browse files

Translating QS during LS -> Shade transition

This resolves the last inconsistency during the drag down,
as quick settings wasn't translated before. Future work
inclused spreading and squeezing the qs panel itself
to get to the finalized spec.

Fixes: 184946919
Test: drag down lon lockscreen, observe qs translating
Change-Id: I92fc12d383ec7495892703cffe5548f333ae62be
parent 39ee79bd
Loading
Loading
Loading
Loading
+36 −3
Original line number Diff line number Diff line
@@ -180,6 +180,11 @@ public class NotificationPanelViewController extends PanelViewController {

    private static final boolean DEBUG = false;

    /**
     * The parallax amount of the quick settings translation when dragging down the panel
     */
    private static final float QS_PARALLAX_AMOUNT = 0.175f;

    /**
     * Fling expanding QS.
     */
@@ -543,6 +548,11 @@ public class NotificationPanelViewController extends PanelViewController {
     */
    private int mDistanceForQSFullShadeTransition;

    /**
     * The translation amount for QS for the full shade transition
     */
    private float mQsTranslationForFullShadeTransition;

    /**
     * The maximum overshoot allowed for the top padding for the full shade transition
     */
@@ -589,6 +599,11 @@ public class NotificationPanelViewController extends PanelViewController {
     * The animator for the qs clipping bounds.
     */
    private ValueAnimator mQsClippingAnimation = null;

    /**
     * Is the current animator resetting the qs translation.
     */
    private boolean mIsQsTranslationResetAnimator;
    private final Rect mKeyguardStatusAreaClipBounds = new Rect();
    private final Region mQsInterceptRegion = new Region();

@@ -2326,6 +2341,7 @@ public class NotificationPanelViewController extends PanelViewController {
                @Override
                public void onAnimationEnd(Animator animation) {
                    mQsClippingAnimation = null;
                    mIsQsTranslationResetAnimator = false;
                }
            });
            mQsClippingAnimation.start();
@@ -2349,7 +2365,18 @@ public class NotificationPanelViewController extends PanelViewController {
            statusBarClipTop = top - mKeyguardStatusBar.getTop();
        }
        if (mQs != null) {
            mQs.setFancyClipping(top, bottom, radius, qsVisible
            float qsTranslation = 0;
            if (mTransitioningToFullShadeProgress > 0.0f || (mQsClippingAnimation != null
                    && mIsQsTranslationResetAnimator)) {
                qsTranslation = (top - mQs.getHeader().getHeight()) * QS_PARALLAX_AMOUNT;
            }
            mQsTranslationForFullShadeTransition = qsTranslation;
            updateQsFrameTranslation();
            float currentTranslation = mQsFrame.getTranslationY();
            mQs.setFancyClipping((
                    int) (top - currentTranslation),
                    (int) (bottom - currentTranslation),
                    radius, qsVisible
                    && !mShouldUseSplitNotificationShade);
        }
        mKeyguardStatusViewController.setClipBounds(
@@ -2486,6 +2513,7 @@ public class NotificationPanelViewController extends PanelViewController {
        if (animate && !mShouldUseSplitNotificationShade) {
            animateNextNotificationBounds(StackStateAnimator.ANIMATION_DURATION_GO_TO_FULL_SHADE,
                    delay);
            mIsQsTranslationResetAnimator = mQsTranslationForFullShadeTransition > 0.0f;
        }

        float endPosition = 0;
@@ -2885,7 +2913,7 @@ public class NotificationPanelViewController extends PanelViewController {
        float startHeight = -mQsExpansionHeight;
        if (!mShouldUseSplitNotificationShade && mBarState == StatusBarState.SHADE) {
            // Small parallax as we pull down and clip QS
            startHeight = -mQsExpansionHeight * 0.2f;
            startHeight = -mQsExpansionHeight * QS_PARALLAX_AMOUNT;
        }
        if (mKeyguardBypassController.getBypassEnabled() && isOnKeyguard()) {
            if (mNotificationStackScrollLayoutController.isPulseExpanding()) {
@@ -3067,10 +3095,15 @@ public class NotificationPanelViewController extends PanelViewController {
        super.setOverExpansion(overExpansion);
        // Translating the quick settings by half the overexpansion to center it in the background
        // frame
        mQsFrame.setTranslationY(overExpansion / 2f);
        updateQsFrameTranslation();
        mNotificationStackScrollLayoutController.setOverExpansion(overExpansion);
    }

    private void updateQsFrameTranslation() {
        float translation = mOverExpansion / 2.0f + mQsTranslationForFullShadeTransition;
        mQsFrame.setTranslationY(translation);
    }

    @Override
    protected void onTrackingStarted() {
        mFalsingCollector.onTrackingStarted(!mKeyguardStateController.canDismissLockScreen());