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

Commit 86f0e8bb authored by LuK1337's avatar LuK1337 Committed by Bruno Martins
Browse files

frameworks: Add device controls shortcut to power menu

Change-Id: I4bc00a7b631216d41c72f7c216925f1120606b7c
parent 9a240944
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -66,6 +66,7 @@ import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.animation.Interpolators;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.colorextraction.SysuiColorExtractor;
import com.android.systemui.controls.dagger.ControlsComponent;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.model.SysUiState;
@@ -172,7 +173,8 @@ public class GlobalActionsDialog extends GlobalActionsDialogLite
            @Main Handler handler,
            PackageManager packageManager,
            StatusBar statusBar,
            KeyguardUpdateMonitor keyguardUpdateMonitor) {
            KeyguardUpdateMonitor keyguardUpdateMonitor,
            ControlsComponent controlsComponent) {

        super(context,
                windowManagerFuncs,
@@ -204,7 +206,8 @@ public class GlobalActionsDialog extends GlobalActionsDialogLite
                handler,
                packageManager,
                statusBar,
                keyguardUpdateMonitor);
                keyguardUpdateMonitor,
                controlsComponent);

        mLockPatternUtils = lockPatternUtils;
        mKeyguardStateController = keyguardStateController;
+41 −1
Original line number Diff line number Diff line
@@ -126,6 +126,10 @@ import com.android.systemui.MultiListLayout.MultiListAdapter;
import com.android.systemui.animation.Interpolators;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.colorextraction.SysuiColorExtractor;
import com.android.systemui.controls.dagger.ControlsComponent;
import com.android.systemui.controls.management.ControlsListingController;
import com.android.systemui.controls.ui.ControlsActivity;
import com.android.systemui.controls.ui.ControlsUiController;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.model.SysUiState;
@@ -258,6 +262,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene
    private int mSmallestScreenWidthDp;
    private final StatusBar mStatusBar;
    private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    private final ControlsComponent mControlsComponent;

    @VisibleForTesting
    public enum GlobalActionsEvent implements UiEventLogger.UiEventEnum {
@@ -365,7 +370,8 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene
            @Main Handler handler,
            PackageManager packageManager,
            StatusBar statusBar,
            KeyguardUpdateMonitor keyguardUpdateMonitor) {
            KeyguardUpdateMonitor keyguardUpdateMonitor,
            ControlsComponent controlsComponent) {
        mContext = context;
        mWindowManagerFuncs = windowManagerFuncs;
        mAudioManager = audioManager;
@@ -396,6 +402,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene
        mSmallestScreenWidthDp = resources.getConfiguration().smallestScreenWidthDp;
        mStatusBar = statusBar;
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mControlsComponent = controlsComponent;
        mLineageGlobalActions = LineageGlobalActions.getInstance(mContext);

        // receive broadcasts
@@ -656,6 +663,8 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene
                }
            } else if (GLOBAL_ACTION_KEY_EMERGENCY.equals(actionKey)) {
                addIfShouldShowAction(tempActions, new EmergencyDialerAction());
            } else if (GLOBAL_ACTION_KEY_DEVICECONTROLS.equals(actionKey)) {
                addIfShouldShowAction(tempActions, new DeviceControlsAction());
            } else {
                Log.e(TAG, "Invalid global action key " + actionKey);
            }
@@ -2314,6 +2323,37 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene
        }
    }

    private final class DeviceControlsAction extends SinglePressAction {
        private DeviceControlsAction() {
            super(com.android.systemui.R.drawable.controls_icon,
                    com.android.systemui.R.string.quick_controls_title);
        }

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

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

        @Override
        public void onPress() {
            Intent intent = new Intent(mContext, ControlsActivity.class)
                    .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK)
                    .putExtra(ControlsUiController.EXTRA_ANIMATE, true);
            mContext.startActivity(intent);
        }

        @Override
        public boolean shouldShow() {
            return super.shouldShow() &&
                    mControlsComponent.getControlsListingController().isPresent();
        }
    }

    private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
+4 −1
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.colorextraction.SysuiColorExtractor;
import com.android.systemui.controls.dagger.ControlsComponent;
import com.android.systemui.model.SysUiState;
import com.android.systemui.plugins.GlobalActions;
import com.android.systemui.settings.UserContextProvider;
@@ -113,6 +114,7 @@ public class GlobalActionsDialogLiteTest extends SysuiTestCase {
    @Mock private UserContextProvider mUserContextProvider;
    @Mock private StatusBar mStatusBar;
    @Mock private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    @Mock private ControlsComponent mControlsComponent;

    private TestableLooper mTestableLooper;

@@ -157,7 +159,8 @@ public class GlobalActionsDialogLiteTest extends SysuiTestCase {
                mHandler,
                mPackageManager,
                mStatusBar,
                mKeyguardUpdateMonitor
                mKeyguardUpdateMonitor,
                mControlsComponent
        );
        mGlobalActionsDialogLite.setZeroDialogPressDelayForTesting();

+4 −1
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.colorextraction.SysuiColorExtractor;
import com.android.systemui.controls.dagger.ControlsComponent;
import com.android.systemui.model.SysUiState;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.GlobalActions;
@@ -126,6 +127,7 @@ public class GlobalActionsDialogTest extends SysuiTestCase {
    @Mock private SecureSettings mSecureSettings;
    @Mock private StatusBar mStatusBar;
    @Mock private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    @Mock private ControlsComponent mControlsComponent;

    private TestableLooper mTestableLooper;

@@ -169,7 +171,8 @@ public class GlobalActionsDialogTest extends SysuiTestCase {
                mHandler,
                mPackageManager,
                mStatusBar,
                mKeyguardUpdateMonitor
                mKeyguardUpdateMonitor,
                mControlsComponent
        );
        mGlobalActionsDialog.setZeroDialogPressDelayForTesting();