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

Unverified Commit e4b3071f authored by MaxMustermann2.0's avatar MaxMustermann2.0 Committed by Michael Bestas
Browse files

GlobalActions: Long press screenshot action to take a partial screenshot

Change-Id: I9380b1df77a16835b851edd42e2c9aaa7fa49b70
parent fa238cac
Loading
Loading
Loading
Loading
+30 −15
Original line number Diff line number Diff line
@@ -368,7 +368,7 @@ class GlobalActions implements DialogInterface.OnDismissListener, DialogInterfac
            } else if (GLOBAL_ACTION_KEY_REBOOT.equals(actionKey)) {
                mItems.add(new RebootAction());
            } else if (GLOBAL_ACTION_KEY_SCREENSHOT.equals(actionKey)) {
                mItems.add(getScreenshotAction());
                mItems.add(new ScreenshotAction());
            } else if (GLOBAL_ACTION_KEY_AIRPLANE.equals(actionKey)) {
                mItems.add(mAirplaneModeOn);
            } else if (GLOBAL_ACTION_KEY_BUGREPORT.equals(actionKey)) {
@@ -502,22 +502,35 @@ class GlobalActions implements DialogInterface.OnDismissListener, DialogInterfac
        }
    }

    private Action getScreenshotAction() {
        return new SinglePressAction(com.android.internal.R.drawable.ic_lock_screenshot,
                R.string.global_action_screenshot) {
    private final class ScreenshotAction extends SinglePressAction implements LongPressAction {

        private ScreenshotAction() {
            super(com.android.internal.R.drawable.ic_lock_screenshot,
                    R.string.global_action_screenshot);
        }

        @Override
        public void onPress() {
                takeScreenshot();
            takeScreenshot(false);
        }


        @Override
        public boolean onLongPress() {
            mHandler.sendEmptyMessage(MESSAGE_DISMISS);
            takeScreenshot(true /* partial */);
            return true;
        }

        @Override
        public boolean showDuringKeyguard() {
            return true;
        }

        @Override
        public boolean showBeforeProvisioning() {
            return true;
        }
        };
    }

    private class BugReportAction extends SinglePressAction implements LongPressAction {
@@ -779,7 +792,7 @@ class GlobalActions implements DialogInterface.OnDismissListener, DialogInterfac
        }
    };

    private void takeScreenshot() {
    private void takeScreenshot(final boolean partial) {
        synchronized (mScreenshotLock) {
            if (mScreenshotConnection != null) {
                return;
@@ -797,6 +810,8 @@ class GlobalActions implements DialogInterface.OnDismissListener, DialogInterfac
                        }
                        Messenger messenger = new Messenger(service);
                        Message msg = Message.obtain(null, 1);
                        msg.what = partial ? WindowManager.TAKE_SCREENSHOT_SELECTED_REGION
                                : WindowManager.TAKE_SCREENSHOT_FULLSCREEN;
                        final ServiceConnection myConn = this;
                        Handler h = new Handler(mHandler.getLooper()) {
                            @Override