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

Commit 736e594e authored by Pranav Vashi's avatar Pranav Vashi Committed by Bruno Martins
Browse files

PhoneWindowManager: Use SingleKeyRule for assist long press



fixes LongPress action not working

Change-Id: Idd67241ee0ac727536bb903b89fc4bfaf272c46f
Signed-off-by: default avatarPranav Vashi <neobuddy89@gmail.com>
parent 93e8e851
Loading
Loading
Loading
Loading
+67 −32
Original line number Diff line number Diff line
@@ -683,7 +683,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    private boolean mKeyguardOccludedChanged;

    boolean mMenuPressed;
    boolean mAssistPressed;
    Intent mHomeIntent;
    Intent mCarDockIntent;
    Intent mDeskDockIntent;
@@ -1763,6 +1762,38 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        }
    }

    private void assistPress() {
        if (!keyguardOn() && mAssistPressAction != Action.NOTHING) {
            if (mAssistPressAction != Action.APP_SWITCH) {
                cancelPreloadRecentApps();
            }
            long now = SystemClock.uptimeMillis();
            KeyEvent event = new KeyEvent(now, now, KeyEvent.ACTION_DOWN,
                    KeyEvent.KEYCODE_ASSIST, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
                    KeyEvent.FLAG_FROM_SYSTEM, InputDevice.SOURCE_KEYBOARD);

            performKeyAction(mAssistPressAction, event,
                    AssistUtils.INVOCATION_TYPE_ASSIST_BUTTON);
        }
    }

    private void assistLongPress() {
        if (!keyguardOn() && mAssistLongPressAction != Action.NOTHING) {
            if (mAssistLongPressAction != Action.APP_SWITCH) {
                cancelPreloadRecentApps();
            }

            long now = SystemClock.uptimeMillis();
            KeyEvent event = new KeyEvent(now, now, KeyEvent.ACTION_DOWN,
                    KeyEvent.KEYCODE_ASSIST, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
                    KeyEvent.FLAG_FROM_SYSTEM, InputDevice.SOURCE_KEYBOARD);

            performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, "Assist - Long Press");
            performKeyAction(mAssistLongPressAction, event,
                    AssistUtils.INVOCATION_TYPE_ASSIST_BUTTON);
        }
    }

    private void sleepPress() {
        if (mShortPressOnSleepBehavior == SHORT_PRESS_SLEEP_GO_TO_SLEEP_AND_GO_HOME) {
            launchHomeFromHotKey(DEFAULT_DISPLAY, false /* awakenDreams */,
@@ -2983,6 +3014,35 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        }
    }

    /**
     * Rule for single assist key gesture.
     */
    private final class AssistKeyRule extends SingleKeyGestureDetector.SingleKeyRule {
        AssistKeyRule() {
            super(KeyEvent.KEYCODE_ASSIST);
        }

        @Override
        boolean supportLongPress() {
            return mAssistLongPressAction != Action.NOTHING;
        }

        @Override
        void onKeyGesture(@NonNull SingleKeyGestureEvent event) {
            if (event.getAction() != ACTION_COMPLETE) {
                return;
            }
            switch (event.getType()) {
                case SINGLE_KEY_GESTURE_TYPE_PRESS:
                    assistPress();
                    break;
                case SINGLE_KEY_GESTURE_TYPE_LONG_PRESS:
                    assistLongPress();
                    break;
            }
        }
    }

    /**
     * Rule for single stem primary key gesture.
     */
@@ -3199,6 +3259,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        mSingleKeyGestureDetector.addRule(new BackKeyRule());
        mSingleKeyGestureDetector.addRule(new StylusTailButtonRule());
        mSingleKeyGestureDetector.addRule(new AppSwitchKeyRule());
        mSingleKeyGestureDetector.addRule(new AssistKeyRule());
    }

    private void updateKeyAssignments() {
@@ -5433,38 +5494,12 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                break;
            }
            case KeyEvent.KEYCODE_ASSIST: {
                if (keyguardOn()) {
                    break;
                }
                if (!keyguardOn()) {
                    if (down) {
                        if (mAssistPressAction == Action.APP_SWITCH
                                || mAssistLongPressAction == Action.APP_SWITCH) {
                            preloadRecentApps();
                        }
                    if (event.getRepeatCount() == 0) {
                        mAssistPressed = true;
                    } else if (longPress) {
                        if (mAssistLongPressAction != Action.NOTHING) {
                            if (mAssistLongPressAction != Action.APP_SWITCH) {
                                cancelPreloadRecentApps();
                            }
                            performHapticFeedback(HapticFeedbackConstants.LONG_PRESS,
                                    "Assist - Long Press");
                            performKeyAction(mAssistLongPressAction, event,
                                    AssistUtils.INVOCATION_TYPE_ASSIST_BUTTON);
                            mAssistPressed = false;
                        }
                    }
                } else {
                    if (mAssistPressed) {
                        if (mAssistPressAction != Action.APP_SWITCH) {
                            cancelPreloadRecentApps();
                        }
                        mAssistPressed = false;
                        if (!canceled) {
                            performKeyAction(mAssistPressAction, event,
                                    AssistUtils.INVOCATION_TYPE_ASSIST_BUTTON);
                        }
                    }
                }
                break;