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

Commit c4aa27a7 authored by László Dávid's avatar László Dávid
Browse files

Status bar brightness control on lock screens

The status bar brightness control does not work on lock screens,
altough it would be useful when you try to type your password
or pin code – e.g. in bright conditions.

Patch Set 3:
- Remove the unnecessary "else" in "if" statement
- Use mViewDelta in brightnessControl method as is in the original code

Change-Id: Idf086f35d9952a892c932780be2192a26a4b38fa
parent 814e909c
Loading
Loading
Loading
Loading
+63 −41
Original line number Diff line number Diff line
@@ -642,6 +642,9 @@ public class PhoneStatusBar extends BaseStatusBar {
        context.registerReceiver(mBroadcastReceiver, filter);

        mPowerWidget.setupWidget();

        mVelocityTracker = VelocityTracker.obtain();

        return mStatusBarView;
    }

@@ -1550,8 +1553,7 @@ public class PhoneStatusBar extends BaseStatusBar {
            return;
        mTracking = false;
        setPileLayers(View.LAYER_TYPE_NONE);
        mVelocityTracker.recycle();
        mVelocityTracker = null;
        mVelocityTracker.clear();
        mCloseView.setPressed(false);
    }

@@ -1645,7 +1647,7 @@ public class PhoneStatusBar extends BaseStatusBar {

        mTracking = true;
        setPileLayers(View.LAYER_TYPE_HARDWARE);
        mVelocityTracker = VelocityTracker.obtain();
        mVelocityTracker.clear();
        if (opening) {
            makeExpandedVisible(true);
        } else {
@@ -1755,6 +1757,50 @@ public class PhoneStatusBar extends BaseStatusBar {
        }
    }

    private void brightnessControl(MotionEvent event)
    {
        if (mBrightnessControl)
        {
            final int action = event.getAction();
            final int x = (int)event.getRawX();
            final int y = (int)event.getRawY();
            if (action == MotionEvent.ACTION_DOWN) {
                mLinger = 0;
                mInitialTouchX = x;
                mInitialTouchY = y;
                mHandler.removeCallbacks(mLongPressBrightnessChange);
                if ((y + mViewDelta) < mNotificationPanelMinHeight) {
                    mHandler.postDelayed(mLongPressBrightnessChange,
                            BRIGHTNESS_CONTROL_LONG_PRESS_TIMEOUT);
                }
            } else if (action == MotionEvent.ACTION_MOVE) {
                if ((y + mViewDelta) < mNotificationPanelMinHeight) {
                    mVelocityTracker.computeCurrentVelocity(1000);
                    float yVel = mVelocityTracker.getYVelocity();
                    yVel = Math.abs(yVel);
                    if (yVel < 50.0f) {
                        if (mLinger > BRIGHTNESS_CONTROL_LINGER_THRESHOLD) {
                            adjustBrightness(x);
                        } else {
                            mLinger++;
                        }
                    }
                    int touchSlop = ViewConfiguration.get(mContext).getScaledTouchSlop();
                    if (Math.abs(x - mInitialTouchX) > touchSlop ||
                            Math.abs(y - mInitialTouchY) > touchSlop) {
                        mHandler.removeCallbacks(mLongPressBrightnessChange);
                    }
                } else {
                    mHandler.removeCallbacks(mLongPressBrightnessChange);
                }
            } else if (action == MotionEvent.ACTION_UP
                    || action == MotionEvent.ACTION_CANCEL) {
                mHandler.removeCallbacks(mLongPressBrightnessChange);
                mLinger = 0;
            }
        }
    }

    boolean interceptTouchEvent(MotionEvent event) {
        if (SPEW) {
            Slog.d(TAG, "Touch: rawY=" + event.getRawY() + " event=" + event + " mDisabled="
@@ -1768,23 +1814,13 @@ public class PhoneStatusBar extends BaseStatusBar {
            }
        }

        if ((mDisabled & StatusBarManager.DISABLE_EXPAND) != 0) {
            return false;
        }

        final int action = event.getAction();
        final int statusBarSize = getStatusBarHeight();
        final int hitSize = statusBarSize*2;
        final int x = (int)event.getRawX();
        final int y = (int)event.getRawY();
        if (action == MotionEvent.ACTION_DOWN) {
            if (!areLightsOn()) {
                setLightsOn(true);
            }
            mLinger = 0;
            mInitialTouchX = x;
            mInitialTouchY = y;

        if (action == MotionEvent.ACTION_DOWN) {
            if (!mExpanded) {
                mViewDelta = statusBarSize - y;
            } else {
@@ -1795,6 +1831,18 @@ public class PhoneStatusBar extends BaseStatusBar {
                           + mNotificationPanelBackgroundPadding.bottom
                           - y;
            }
        }

        brightnessControl(event);

        if ((mDisabled & StatusBarManager.DISABLE_EXPAND) != 0) {
            return false;
        }

        if (action == MotionEvent.ACTION_DOWN) {
            if (!areLightsOn()) {
                setLightsOn(true);
            }
            if ((!mExpanded && y < hitSize) ||
                    // @@ add taps outside the panel if it's not full-screen
                    (mExpanded && y > (getExpandedViewMaxHeight()-hitSize))) {
@@ -1808,41 +1856,15 @@ public class PhoneStatusBar extends BaseStatusBar {
                    trackMovement(event);
                }
            }
            if (mTracking && mBrightnessControl) {
                mHandler.removeCallbacks(mLongPressBrightnessChange);
                mHandler.postDelayed(mLongPressBrightnessChange,
                        BRIGHTNESS_CONTROL_LONG_PRESS_TIMEOUT);
            }
        } else if (mTracking) {
            trackMovement(event);
            if (action == MotionEvent.ACTION_MOVE) {
                if (mAnimatingReveal && (y + mViewDelta) < mNotificationPanelMinHeight) {
                    if (mBrightnessControl) {
                        mVelocityTracker.computeCurrentVelocity(1000);
                        float yVel = mVelocityTracker.getYVelocity();
                        yVel = Math.abs(yVel);
                        if (yVel < 50.0f) {
                            if (mLinger > BRIGHTNESS_CONTROL_LINGER_THRESHOLD) {
                                adjustBrightness(x);
                            } else {
                                mLinger++;
                            }
                        }
                        int touchSlop = ViewConfiguration.get(mContext).getScaledTouchSlop();
                        if (Math.abs(x - mInitialTouchX) > touchSlop ||
                                Math.abs(y - mInitialTouchY) > touchSlop) {
                            mHandler.removeCallbacks(mLongPressBrightnessChange);
                        }
                    }
                } else  {
                    mHandler.removeCallbacks(mLongPressBrightnessChange);
                if (!mAnimatingReveal || (y + mViewDelta) >= mNotificationPanelMinHeight) {
                    mAnimatingReveal = false;
                    updateExpandedViewPos(y + mViewDelta);
                }
            } else if (action == MotionEvent.ACTION_UP
                    || action == MotionEvent.ACTION_CANCEL) {
                mHandler.removeCallbacks(mLongPressBrightnessChange);
                mLinger = 0;
                mVelocityTracker.computeCurrentVelocity(1000);

                float yVel = mVelocityTracker.getYVelocity();