1 /* 2 * Copyright (C) 2017 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file 5 * except in compliance with the License. You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software distributed under the 10 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 11 * KIND, either express or implied. See the License for the specific language governing 12 * permissions and limitations under the License. 13 */ 14 15 package com.android.systemui.globalactions; 16 17 import static android.app.StatusBarManager.DISABLE2_GLOBAL_ACTIONS; 18 19 import android.content.Context; 20 21 import com.android.systemui.plugins.GlobalActions; 22 import com.android.systemui.statusbar.BlurUtils; 23 import com.android.systemui.statusbar.CommandQueue; 24 import com.android.systemui.statusbar.policy.DeviceProvisionedController; 25 import com.android.systemui.statusbar.policy.KeyguardStateController; 26 27 import javax.inject.Inject; 28 29 public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks { 30 31 private final Context mContext; 32 private final KeyguardStateController mKeyguardStateController; 33 private final DeviceProvisionedController mDeviceProvisionedController; 34 private final BlurUtils mBlurUtils; 35 private final CommandQueue mCommandQueue; 36 private final GlobalActionsDialogLite mGlobalActionsDialog; 37 private boolean mDisabled; 38 private ShutdownUi mShutdownUi; 39 40 @Inject GlobalActionsImpl(Context context, CommandQueue commandQueue, GlobalActionsDialogLite globalActionsDialog, BlurUtils blurUtils, KeyguardStateController keyguardStateController, DeviceProvisionedController deviceProvisionedController, ShutdownUi shutdownUi)41 public GlobalActionsImpl(Context context, CommandQueue commandQueue, 42 GlobalActionsDialogLite globalActionsDialog, BlurUtils blurUtils, 43 KeyguardStateController keyguardStateController, 44 DeviceProvisionedController deviceProvisionedController, 45 ShutdownUi shutdownUi) { 46 mContext = context; 47 mGlobalActionsDialog = globalActionsDialog; 48 mKeyguardStateController = keyguardStateController; 49 mDeviceProvisionedController = deviceProvisionedController; 50 mCommandQueue = commandQueue; 51 mBlurUtils = blurUtils; 52 mCommandQueue.addCallback(this); 53 mShutdownUi = shutdownUi; 54 } 55 56 @Override destroy()57 public void destroy() { 58 mCommandQueue.removeCallback(this); 59 mGlobalActionsDialog.destroy(); 60 } 61 62 @Override showGlobalActions(GlobalActionsManager manager)63 public void showGlobalActions(GlobalActionsManager manager) { 64 if (mDisabled) return; 65 mGlobalActionsDialog.showOrHideDialog(mKeyguardStateController.isShowing(), 66 mDeviceProvisionedController.isDeviceProvisioned(), null /* view */); 67 } 68 69 @Override showShutdownUi(boolean isReboot, String reason)70 public void showShutdownUi(boolean isReboot, String reason) { 71 mShutdownUi.showShutdownUi(isReboot, reason); 72 } 73 @Override disable(int displayId, int state1, int state2, boolean animate)74 public void disable(int displayId, int state1, int state2, boolean animate) { 75 final boolean disabled = (state2 & DISABLE2_GLOBAL_ACTIONS) != 0; 76 if (displayId != mContext.getDisplayId() || disabled == mDisabled) return; 77 mDisabled = disabled; 78 if (disabled) { 79 mGlobalActionsDialog.dismissDialog(); 80 } 81 } 82 } 83