blob: c11127d1dc0b0614b9425ace82a399c944b2fc7d [file] [log] [blame]
Jason Monk361915c2017-03-21 20:33:59 -04001/*
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
15package com.android.systemui.globalactions;
16
Beverlyae79ab92017-12-11 09:20:02 -050017import android.content.Context;
18import android.os.RemoteException;
19import android.os.ServiceManager;
20
Jason Monk361915c2017-03-21 20:33:59 -040021import com.android.internal.statusbar.IStatusBarService;
22import com.android.systemui.Dependency;
23import com.android.systemui.SysUiServiceProvider;
24import com.android.systemui.SystemUI;
25import com.android.systemui.plugins.GlobalActions;
26import com.android.systemui.plugins.GlobalActions.GlobalActionsManager;
27import com.android.systemui.statusbar.CommandQueue;
28import com.android.systemui.statusbar.CommandQueue.Callbacks;
29import com.android.systemui.statusbar.policy.ExtensionController;
30import com.android.systemui.statusbar.policy.ExtensionController.Extension;
31
Jason Monk361915c2017-03-21 20:33:59 -040032public class GlobalActionsComponent extends SystemUI implements Callbacks, GlobalActionsManager {
33
Charles He9851a8d2017-10-10 17:31:30 +010034 private GlobalActions mPlugin;
Jason Monk361915c2017-03-21 20:33:59 -040035 private Extension<GlobalActions> mExtension;
36 private IStatusBarService mBarService;
37
Dave Mankoffa5d8a392019-10-10 12:21:09 -040038 public GlobalActionsComponent(Context context) {
39 super(context);
40 }
41
Jason Monk361915c2017-03-21 20:33:59 -040042 @Override
43 public void start() {
44 mBarService = IStatusBarService.Stub.asInterface(
45 ServiceManager.getService(Context.STATUS_BAR_SERVICE));
46 mExtension = Dependency.get(ExtensionController.class).newExtension(GlobalActions.class)
47 .withPlugin(GlobalActions.class)
48 .withDefault(() -> new GlobalActionsImpl(mContext))
Charles He9851a8d2017-10-10 17:31:30 +010049 .withCallback(this::onExtensionCallback)
Jason Monk361915c2017-03-21 20:33:59 -040050 .build();
Charles He9851a8d2017-10-10 17:31:30 +010051 mPlugin = mExtension.get();
Jason Monkd7c98552018-12-04 11:14:50 -050052 SysUiServiceProvider.getComponent(mContext, CommandQueue.class).addCallback(this);
Jason Monk361915c2017-03-21 20:33:59 -040053 }
54
Charles He9851a8d2017-10-10 17:31:30 +010055 private void onExtensionCallback(GlobalActions newPlugin) {
56 if (mPlugin != null) {
57 mPlugin.destroy();
58 }
59 mPlugin = newPlugin;
60 }
61
Jason Monk361915c2017-03-21 20:33:59 -040062 @Override
Jason Monkb4302182017-08-04 13:39:17 -040063 public void handleShowShutdownUi(boolean isReboot, String reason) {
64 mExtension.get().showShutdownUi(isReboot, reason);
65 }
66
67 @Override
Jason Monk361915c2017-03-21 20:33:59 -040068 public void handleShowGlobalActionsMenu() {
69 mExtension.get().showGlobalActions(this);
70 }
71
72 @Override
73 public void onGlobalActionsShown() {
74 try {
75 mBarService.onGlobalActionsShown();
76 } catch (RemoteException e) {
77 }
78 }
79
80 @Override
81 public void onGlobalActionsHidden() {
82 try {
83 mBarService.onGlobalActionsHidden();
84 } catch (RemoteException e) {
85 }
86 }
87
88 @Override
89 public void shutdown() {
90 try {
91 mBarService.shutdown();
92 } catch (RemoteException e) {
93 }
94 }
95
96 @Override
97 public void reboot(boolean safeMode) {
98 try {
99 mBarService.reboot(safeMode);
100 } catch (RemoteException e) {
101 }
102 }
103}