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

Unverified Commit 74386ef0 authored by LuK1337's avatar LuK1337 Committed by Michael Bestas
Browse files

frameworks: Add device controls shortcut to power menu

Change-Id: I4bc00a7b631216d41c72f7c216925f1120606b7c
parent e2c3b8d4
Loading
Loading
Loading
Loading
+41 −1
Original line number Diff line number Diff line
@@ -123,6 +123,10 @@ import com.android.systemui.MultiListLayout.MultiListAdapter;
import com.android.systemui.animation.DialogLaunchAnimator;
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;
@@ -259,6 +263,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene
    private final SystemUIDialogManager mDialogManager;
    private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    private final DialogLaunchAnimator mDialogLaunchAnimator;
    private final ControlsComponent mControlsComponent;

    @VisibleForTesting
    public enum GlobalActionsEvent implements UiEventLogger.UiEventEnum {
@@ -367,7 +372,8 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene
            Optional<StatusBar> statusBarOptional,
            KeyguardUpdateMonitor keyguardUpdateMonitor,
            DialogLaunchAnimator dialogLaunchAnimator,
            SystemUIDialogManager dialogManager) {
            SystemUIDialogManager dialogManager,
            ControlsComponent controlsComponent) {
        mContext = context;
        mWindowManagerFuncs = windowManagerFuncs;
        mAudioManager = audioManager;
@@ -399,6 +405,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mDialogLaunchAnimator = dialogLaunchAnimator;
        mDialogManager = dialogManager;
        mControlsComponent = controlsComponent;
        mLineageGlobalActions = LineageGlobalActions.getInstance(mContext);

        // receive broadcasts
@@ -670,6 +677,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);
            }
@@ -2345,6 +2354,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
@@ -57,6 +57,7 @@ import com.android.systemui.SysuiTestCase;
import com.android.systemui.animation.DialogLaunchAnimator;
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;
@@ -117,6 +118,7 @@ public class GlobalActionsDialogLiteTest extends SysuiTestCase {
    @Mock private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    @Mock private DialogLaunchAnimator mDialogLaunchAnimator;
    @Mock private SystemUIDialogManager mDialogManager;
    @Mock private ControlsComponent mControlsComponent;

    private TestableLooper mTestableLooper;

@@ -162,7 +164,8 @@ public class GlobalActionsDialogLiteTest extends SysuiTestCase {
                Optional.of(mStatusBar),
                mKeyguardUpdateMonitor,
                mDialogLaunchAnimator,
                mDialogManager);
                mDialogManager,
                mControlsComponent);
        mGlobalActionsDialogLite.setZeroDialogPressDelayForTesting();

        ColorExtractor.GradientColors backdropColors = new ColorExtractor.GradientColors();