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

Unverified Commit 38f899a4 authored by LuK1337's avatar LuK1337 Committed by Michael Bestas
Browse files

frameworks: Add device controls shortcut to power menu

Change-Id: I4bc00a7b631216d41c72f7c216925f1120606b7c
parent 11ea0cfb
Loading
Loading
Loading
Loading
+41 −1
Original line number Original line Diff line number Diff line
@@ -130,6 +130,10 @@ import com.android.systemui.animation.DialogLaunchAnimator;
import com.android.systemui.animation.Expandable;
import com.android.systemui.animation.Expandable;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.colorextraction.SysuiColorExtractor;
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.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.plugins.GlobalActions.GlobalActionsManager;
import com.android.systemui.plugins.GlobalActions.GlobalActionsManager;
@@ -270,6 +274,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene
    private final ShadeController mShadeController;
    private final ShadeController mShadeController;
    private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    private final DialogLaunchAnimator mDialogLaunchAnimator;
    private final DialogLaunchAnimator mDialogLaunchAnimator;
    private final ControlsComponent mControlsComponent;


    @VisibleForTesting
    @VisibleForTesting
    public enum GlobalActionsEvent implements UiEventLogger.UiEventEnum {
    public enum GlobalActionsEvent implements UiEventLogger.UiEventEnum {
@@ -379,7 +384,8 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene
            Optional<CentralSurfaces> centralSurfacesOptional,
            Optional<CentralSurfaces> centralSurfacesOptional,
            ShadeController shadeController,
            ShadeController shadeController,
            KeyguardUpdateMonitor keyguardUpdateMonitor,
            KeyguardUpdateMonitor keyguardUpdateMonitor,
            DialogLaunchAnimator dialogLaunchAnimator) {
            DialogLaunchAnimator dialogLaunchAnimator,
            ControlsComponent controlsComponent) {
        mContext = context;
        mContext = context;
        mWindowManagerFuncs = windowManagerFuncs;
        mWindowManagerFuncs = windowManagerFuncs;
        mAudioManager = audioManager;
        mAudioManager = audioManager;
@@ -399,6 +405,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene
        mTelecomManager = telecomManager;
        mTelecomManager = telecomManager;
        mMetricsLogger = metricsLogger;
        mMetricsLogger = metricsLogger;
        mUiEventLogger = uiEventLogger;
        mUiEventLogger = uiEventLogger;
        mControlsComponent = controlsComponent;
        mLineageGlobalActions = LineageGlobalActions.getInstance(mContext);
        mLineageGlobalActions = LineageGlobalActions.getInstance(mContext);
        mSysuiColorExtractor = colorExtractor;
        mSysuiColorExtractor = colorExtractor;
        mStatusBarService = statusBarService;
        mStatusBarService = statusBarService;
@@ -698,6 +705,8 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene
                if (shouldDisplayEmergency()) {
                if (shouldDisplayEmergency()) {
                    addIfShouldShowAction(tempActions, new EmergencyDialerAction());
                    addIfShouldShowAction(tempActions, new EmergencyDialerAction());
                }
                }
            } else if (GLOBAL_ACTION_KEY_DEVICECONTROLS.equals(actionKey)) {
                addIfShouldShowAction(tempActions, new DeviceControlsAction());
            } else {
            } else {
                Log.e(TAG, "Invalid global action key " + actionKey);
                Log.e(TAG, "Invalid global action key " + actionKey);
            }
            }
@@ -2385,6 +2394,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() {
    private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            String action = intent.getAction();
+4 −1
Original line number Original line Diff line number Diff line
@@ -66,6 +66,7 @@ import com.android.systemui.SysuiTestCase;
import com.android.systemui.animation.DialogLaunchAnimator;
import com.android.systemui.animation.DialogLaunchAnimator;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.colorextraction.SysuiColorExtractor;
import com.android.systemui.colorextraction.SysuiColorExtractor;
import com.android.systemui.controls.dagger.ControlsComponent;
import com.android.systemui.plugins.GlobalActions;
import com.android.systemui.plugins.GlobalActions;
import com.android.systemui.settings.UserContextProvider;
import com.android.systemui.settings.UserContextProvider;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.settings.UserTracker;
@@ -132,6 +133,7 @@ public class GlobalActionsDialogLiteTest extends SysuiTestCase {
    @Mock private ShadeController mShadeController;
    @Mock private ShadeController mShadeController;
    @Mock private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    @Mock private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    @Mock private DialogLaunchAnimator mDialogLaunchAnimator;
    @Mock private DialogLaunchAnimator mDialogLaunchAnimator;
    @Mock private ControlsComponent mControlsComponent;
    @Mock private OnBackInvokedDispatcher mOnBackInvokedDispatcher;
    @Mock private OnBackInvokedDispatcher mOnBackInvokedDispatcher;
    @Captor private ArgumentCaptor<OnBackInvokedCallback> mOnBackInvokedCallback;
    @Captor private ArgumentCaptor<OnBackInvokedCallback> mOnBackInvokedCallback;


@@ -180,7 +182,8 @@ public class GlobalActionsDialogLiteTest extends SysuiTestCase {
                Optional.of(mCentralSurfaces),
                Optional.of(mCentralSurfaces),
                mShadeController,
                mShadeController,
                mKeyguardUpdateMonitor,
                mKeyguardUpdateMonitor,
                mDialogLaunchAnimator);
                mDialogLaunchAnimator,
                mControlsComponent);
        mGlobalActionsDialogLite.setZeroDialogPressDelayForTesting();
        mGlobalActionsDialogLite.setZeroDialogPressDelayForTesting();


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