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

Commit d718be96 authored by Steve Elliott's avatar Steve Elliott Committed by android-build-merger
Browse files

Merge "Restrict rotation when global actions panel is enabled" into qt-dev

am: acf3529c

Change-Id: I546259224db99bc276a1fab626680282cf008bd1
parents f60c87c3 acf3529c
Loading
Loading
Loading
Loading
+62 −21
Original line number Diff line number Diff line
@@ -80,6 +80,7 @@ import com.android.internal.telephony.TelephonyProperties;
import com.android.internal.util.EmergencyAffordanceManager;
import com.android.internal.util.ScreenRecordHelper;
import com.android.internal.util.ScreenshotHelper;
import com.android.internal.view.RotationPolicy;
import com.android.internal.widget.LockPatternUtils;
import com.android.systemui.Dependency;
import com.android.systemui.Interpolators;
@@ -1498,6 +1499,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
        private boolean mKeyguardShowing;
        private boolean mShowing;
        private float mScrimAlpha;
        private ResetOrientationData mResetOrientationData;

        ActionsDialog(Context context, MyAdapter adapter,
                GlobalActionsPanelPlugin.PanelViewController plugin) {
@@ -1531,16 +1533,38 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
        }

        private boolean shouldUsePanel() {
            if (!isPanelEnabled(mContext) || mPanelController == null) {
                return false;
            return isPanelEnabled(mContext)
                    && mPanelController != null
                    && mPanelController.getPanelContent() != null;
        }
            if (mPanelController.getPanelContent() == null) {
                return false;

        private void initializePanel() {
            int rotation = RotationUtils.getRotation(mContext);
            boolean rotationLocked = RotationPolicy.isRotationLocked(mContext);
            if (rotation != RotationUtils.ROTATION_NONE) {
                if (rotationLocked) {
                    if (mResetOrientationData == null) {
                        mResetOrientationData = new ResetOrientationData();
                        mResetOrientationData.locked = true;
                        mResetOrientationData.rotation = rotation;
                    }
            return true;

                    // Unlock rotation, so user can choose to rotate to portrait to see the panel.
                    RotationPolicy.setRotationLockAtAngle(
                            mContext, false, RotationUtils.ROTATION_NONE);
                }
            } else {
                if (!rotationLocked) {
                    if (mResetOrientationData == null) {
                        mResetOrientationData = new ResetOrientationData();
                        mResetOrientationData.locked = false;
                    }

                    // Lock to portrait, so the user doesn't accidentally hide the panel.
                    RotationPolicy.setRotationLockAtAngle(
                            mContext, true, RotationUtils.ROTATION_NONE);
                }

        private void initializePanel() {
                FrameLayout panelContainer = new FrameLayout(mContext);
                FrameLayout.LayoutParams panelParams =
                        new FrameLayout.LayoutParams(
@@ -1553,6 +1577,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
                                ViewGroup.LayoutParams.MATCH_PARENT,
                                ViewGroup.LayoutParams.MATCH_PARENT));
            }
        }

        private void initializeLayout() {
            setContentView(getGlobalActionsLayoutId(mContext));
@@ -1683,19 +1708,30 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
                        mBackgroundDrawable.setAlpha(alpha);
                    })
                    .start();
            if (mPanelController != null) {
                mPanelController.onDismissed();
            }
            dismissPanel();
            resetOrientation();
        }

        void dismissImmediately() {
            super.dismiss();
            mShowing = false;
            dismissPanel();
            resetOrientation();
        }

        private void dismissPanel() {
            if (mPanelController != null) {
                mPanelController.onDismissed();
            }
        }

        private void resetOrientation() {
            if (mResetOrientationData != null) {
                RotationPolicy.setRotationLockAtAngle(mContext, mResetOrientationData.locked,
                        mResetOrientationData.rotation);
            }
        }

        @Override
        public void onColorsChanged(ColorExtractor extractor, int which) {
            if (mKeyguardShowing) {
@@ -1725,6 +1761,11 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
                refreshDialog();
            }
        }

        private static class ResetOrientationData {
            public boolean locked;
            public int rotation;
        }
    }

    /**