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

Commit acf3529c authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

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

parents ae5afab0 48f75dbb
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;
        }
    }

    /**