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

Commit 63fcd2a0 authored by Jamie Garside's avatar Jamie Garside
Browse files

Open bouncer on screen side of swipe in one-handed mode.

This detects where the swipe to open the bouncer comes from when the
device is in left-handed mode, and moves the bouncer to that side.
Currently, this is just a simple case of opening it on the screen half
where the first swipe was, rather than following the finger during the
swipe or anything like that.

Bug: 170858298
Test: atest SystemUITests
Change-Id: I4b18cee7d56fedf792a1923e316778bda077e75f
parent 6230fca3
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -492,4 +492,11 @@ public class KeyguardHostViewController extends ViewController<KeyguardHostView>
            mKeyguardSecurityContainerController.updateResources();
        }
    }

    /** Update keyguard position based on a tapped X coordinate. */
    public void updateKeyguardPosition(float x) {
        if (mKeyguardSecurityContainerController != null) {
            mKeyguardSecurityContainerController.updateKeyguardPosition(x);
        }
    }
}
+14 −3
Original line number Diff line number Diff line
@@ -267,6 +267,13 @@ public class KeyguardSecurityContainer extends FrameLayout {
        updateSecurityViewLocation(false);
    }

    /** Update keyguard position based on a tapped X coordinate. */
    public void updateKeyguardPosition(float x) {
        if (mOneHandedMode) {
            moveBouncerForXCoordinate(x, /* animate= */false);
        }
    }

    /** Return whether the one-handed keyguard should be enabled. */
    private boolean canUseOneHandedBouncer() {
        // Is it enabled?
@@ -488,9 +495,13 @@ public class KeyguardSecurityContainer extends FrameLayout {
            return;
        }

        moveBouncerForXCoordinate(event.getX(), /* animate= */true);
    }

    private void moveBouncerForXCoordinate(float x, boolean animate) {
        // Did the tap hit the "other" side of the bouncer?
        if ((mIsSecurityViewLeftAligned && (event.getX() > getWidth() / 2f))
                || (!mIsSecurityViewLeftAligned && (event.getX() < getWidth() / 2f))) {
        if ((mIsSecurityViewLeftAligned && (x > getWidth() / 2f))
                || (!mIsSecurityViewLeftAligned && (x < getWidth() / 2f))) {
            mIsSecurityViewLeftAligned = !mIsSecurityViewLeftAligned;

            Settings.Global.putInt(
@@ -499,7 +510,7 @@ public class KeyguardSecurityContainer extends FrameLayout {
                    mIsSecurityViewLeftAligned ? Settings.Global.ONE_HANDED_KEYGUARD_SIDE_LEFT
                            : Settings.Global.ONE_HANDED_KEYGUARD_SIDE_RIGHT);

            updateSecurityViewLocation(true);
            updateSecurityViewLocation(animate);
        }
    }

+5 −0
Original line number Diff line number Diff line
@@ -515,6 +515,11 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
        }
    }

    /** Update keyguard position based on a tapped X coordinate. */
    public void updateKeyguardPosition(float x) {
        mView.updateKeyguardPosition(x);
    }

    static class Factory {

        private final KeyguardSecurityContainer mView;
+7 −0
Original line number Diff line number Diff line
@@ -555,6 +555,13 @@ public class KeyguardBouncer {
        pw.println("  mIsAnimatingAway: " + mIsAnimatingAway);
    }

    /** Update keyguard position based on a tapped X coordinate. */
    public void updateKeyguardPosition(float x) {
        if (mKeyguardViewController != null) {
            mKeyguardViewController.updateKeyguardPosition(x);
        }
    }

    public interface BouncerExpansionCallback {
        void onFullyShown();
        void onStartingToHide();
+6 −0
Original line number Diff line number Diff line
@@ -3495,6 +3495,12 @@ public class NotificationPanelViewController extends PanelViewController {
                    updateHorizontalPanelPosition(event.getX());
                    handled = true;
                }

                if (event.getActionMasked() == MotionEvent.ACTION_DOWN && isFullyExpanded()
                        && mStatusBarKeyguardViewManager.isShowing()) {
                    mStatusBarKeyguardViewManager.updateKeyguardPosition(event.getX());
                }

                handled |= super.onTouch(v, event);
                return !mDozing || mPulsing || handled || showingOrAnimatingAltAuth;
            }
Loading