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

Unverified Commit 5957d529 authored by Zhao Wei Liew's avatar Zhao Wei Liew Committed by Michael Bestas
Browse files

SystemUI: statusbar: Fix QS quick pulldown feature

Bring in the fixes from CM 13.

This commit squashes the following patches from CM 13.0:
68c40f32 SystemUI: fix QS quick pull down
477f58dc SystemUI: hook up settings observer in notificationpanel
d2bec52c SystemUI: Fix quick-quick settings pulldown settings
eb10bc20 Add left QS quick pulldown (1/3)

Change-Id: Ie122477261d96499c80640cf274d22fba6642a01
parent 5a093e17
Loading
Loading
Loading
Loading
+25 −27
Original line number Diff line number Diff line
@@ -219,7 +219,7 @@ public class NotificationPanelView extends PanelView implements
    private Handler mHandler = new Handler();
    private SettingsObserver mSettingsObserver;

    private boolean mOneFingerQuickSettingsIntercept;
    private int mOneFingerQuickSettingsIntercept;
    private boolean mDoubleTapToSleepEnabled;
    private int mStatusBarHeaderHeight;
    private GestureDetector mDoubleTapGesture;
@@ -374,13 +374,14 @@ public class NotificationPanelView extends PanelView implements
    }

    @Override
    public void onAttachedToWindow() {
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();
        mSettingsObserver.observe();

    }

    @Override
    public void onDetachedFromWindow() {
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        mSettingsObserver.unobserve();
    }

@@ -836,13 +837,7 @@ public class NotificationPanelView extends PanelView implements
                && mQsExpansionEnabled) {
            mTwoFingerQsExpandPossible = true;
        }
        boolean twoFingerQsEvent = mTwoFingerQsExpandPossible
                && (event.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN
                && event.getPointerCount() == 2);
        boolean oneFingerQsOverride = mOneFingerQuickSettingsIntercept
                && event.getActionMasked() == MotionEvent.ACTION_DOWN
                && shouldQuickSettingsIntercept(event.getX(), event.getY(), -1, false);
        if ((twoFingerQsEvent || oneFingerQsOverride) && isOpenQsEvent(event)
        if (mTwoFingerQsExpandPossible && isOpenQsEvent(event)
                && event.getY(event.getActionIndex()) < mStatusBarMinHeight) {
            MetricsLogger.count(mContext, COUNTER_PANEL_OPEN_QS, 1);
            mQsExpandImmediate = true;
@@ -877,7 +872,22 @@ public class NotificationPanelView extends PanelView implements
                && (event.isButtonPressed(MotionEvent.BUTTON_SECONDARY)
                        || event.isButtonPressed(MotionEvent.BUTTON_TERTIARY));

        return twoFingerDrag || stylusButtonClickDrag || mouseButtonClickDrag;
        final float w = getMeasuredWidth();
        final float x = event.getX();
        float region = w * 1.f / 4.f; // TODO overlay region fraction?
        boolean showQsOverride = false;

        switch (mOneFingerQuickSettingsIntercept) {
            case 1: // Right side pulldown
                showQsOverride = isLayoutRtl() ? x < region : w - region < x;
                break;
            case 2: // Left side pulldown
                showQsOverride = isLayoutRtl() ? w - region < x : x < region;
                break;
        }
        showQsOverride &= mStatusBarState == StatusBarState.SHADE;

        return twoFingerDrag || showQsOverride || stylusButtonClickDrag || mouseButtonClickDrag;
    }

    private void handleQsDown(MotionEvent event) {
@@ -1403,30 +1413,18 @@ public class NotificationPanelView extends PanelView implements
     * @return Whether we should intercept a gesture to open Quick Settings.
     */
    private boolean shouldQuickSettingsIntercept(float x, float y, float yDiff) {
        return shouldQuickSettingsIntercept(x, y, yDiff, true);
    }

    /**
     * @return Whether we should intercept a gesture to open Quick Settings.
     */
    private boolean shouldQuickSettingsIntercept(float x, float y, float yDiff, boolean useHeader) {
        if (!mQsExpansionEnabled || mCollapsedOnDown) {
            return false;
        }
        View header = mKeyguardShowing ? mKeyguardStatusBar : mQsContainer.getHeader();
        boolean onHeader = useHeader && x >= mQsAutoReinflateContainer.getX()
        boolean onHeader = x >= mQsAutoReinflateContainer.getX()
                && x <= mQsAutoReinflateContainer.getX() + mQsAutoReinflateContainer.getWidth()
                && y >= header.getTop() && y <= header.getBottom();

        final float w = getMeasuredWidth();
        float region = (w * (1.f/3.f)); // TODO overlay region fraction?
        final boolean showQsOverride = isLayoutRtl() ? (x < region) : (w - region < x)
                        && mStatusBarState == StatusBarState.SHADE;

        if (mQsExpanded) {
            return onHeader || (yDiff < 0 && isInQsArea(x, y));
        } else {
            return onHeader || showQsOverride;
            return onHeader;
        }
    }

@@ -2451,7 +2449,7 @@ public class NotificationPanelView extends PanelView implements
        public void update() {
            ContentResolver resolver = mContext.getContentResolver();
            mOneFingerQuickSettingsIntercept = CMSettings.System.getInt(
                    resolver, CMSettings.System.STATUS_BAR_QUICK_QS_PULLDOWN, 1) == 1;
                    resolver, CMSettings.System.STATUS_BAR_QUICK_QS_PULLDOWN, 1);
            mDoubleTapToSleepEnabled = CMSettings.System.getInt(
                    resolver, CMSettings.System.DOUBLE_TAP_SLEEP_GESTURE, 1) == 1;
        }