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

Commit 71c97740 authored by Phil Tunstall's avatar Phil Tunstall
Browse files

Status bar brightness control improvements

- Prevent brightness changes after notifications panel has been opened.
- Don't adjust brightness for swipes <45° from vertical.
- Stop using a VelocityTracker since we weren't actually giving it any
  events to track.

Change-Id: Ie28c5c186b692e3f308bba4a1ee02faeb0982ac1
parent f4763059
Loading
Loading
Loading
Loading
+23 −22
Original line number Diff line number Diff line
@@ -301,6 +301,8 @@ public class PhoneStatusBar extends BaseStatusBar {
    private boolean mBrightnessControl;
    private float mScreenWidth;
    private int mMinBrightness;
    private int mPeekHeight;
    private boolean mJustPeeked;
    int mLinger;
    int mInitialTouchX;
    int mInitialTouchY;
@@ -2200,41 +2202,39 @@ public class PhoneStatusBar extends BaseStatusBar {
        final int x = (int) event.getRawX();
        final int y = (int) event.getRawY();
        if (action == MotionEvent.ACTION_DOWN) {
            if (y < mNotificationHeaderHeight) {
                mLinger = 0;
                mInitialTouchX = x;
                mInitialTouchY = y;
            mVelocityTracker = VelocityTracker.obtain();
                mJustPeeked = true;
                mHandler.removeCallbacks(mLongPressBrightnessChange);
            if ((y) < mNotificationHeaderHeight) {
                mHandler.postDelayed(mLongPressBrightnessChange,
                        BRIGHTNESS_CONTROL_LONG_PRESS_TIMEOUT);
            }
        } else if (action == MotionEvent.ACTION_MOVE) {
            if ((y) < mNotificationHeaderHeight) {
                mVelocityTracker.computeCurrentVelocity(1000);
                float yVel = mVelocityTracker.getYVelocity();
                yVel = Math.abs(yVel);
                if (yVel < 50.0f) {
            if (y < mNotificationHeaderHeight && mJustPeeked) {
                if (mLinger > BRIGHTNESS_CONTROL_LINGER_THRESHOLD) {
                    adjustBrightness(x);
                } else {
                    final int xDiff = Math.abs(x - mInitialTouchX);
                    final int yDiff = Math.abs(y - mInitialTouchY);
                    final int touchSlop = ViewConfiguration.get(mContext).getScaledTouchSlop();
                    if (xDiff > yDiff) {
                        mLinger++;
                    }
                }
                int touchSlop = ViewConfiguration.get(mContext).getScaledTouchSlop();
                if (Math.abs(x - mInitialTouchX) > touchSlop ||
                        Math.abs(y - mInitialTouchY) > touchSlop) {
                    if (xDiff > touchSlop || yDiff > touchSlop) {
                        mHandler.removeCallbacks(mLongPressBrightnessChange);
                    }
                }
            } else {
                if (y > mPeekHeight) {
                    mJustPeeked = false;
                }
                mHandler.removeCallbacks(mLongPressBrightnessChange);
            }
        } else if (action == MotionEvent.ACTION_UP
                || action == MotionEvent.ACTION_CANCEL) {
            mVelocityTracker.recycle();
            mVelocityTracker = null;
            mHandler.removeCallbacks(mLongPressBrightnessChange);
            mLinger = 0;
        }
    }

@@ -3053,6 +3053,7 @@ public class PhoneStatusBar extends BaseStatusBar {

        mCarrierLabelHeight = res.getDimensionPixelSize(R.dimen.carrier_label_height);
        mNotificationHeaderHeight = res.getDimensionPixelSize(R.dimen.notification_panel_header_height);
        mPeekHeight = res.getDimensionPixelSize(R.dimen.peek_height);

        mNotificationPanelMinHeightFrac = res.getFraction(R.dimen.notification_panel_min_height_frac, 1, 1);
        if (mNotificationPanelMinHeightFrac < 0f || mNotificationPanelMinHeightFrac > 1f) {