blob: e8ef454bd4662923025219a4de694b051a6a67bb [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
38 @Override
39 public void start() {
40 mBarService = IStatusBarService.Stub.asInterface(
41 ServiceManager.getService(Context.STATUS_BAR_SERVICE));
42 mExtension = Dependency.get(ExtensionController.class).newExtension(GlobalActions.class)
43 .withPlugin(GlobalActions.class)
44 .withDefault(() -> new GlobalActionsImpl(mContext))
Charles He9851a8d2017-10-10 17:31:30 +010045 .withCallback(this::onExtensionCallback)
Jason Monk361915c2017-03-21 20:33:59 -040046 .build();
Charles He9851a8d2017-10-10 17:31:30 +010047 mPlugin = mExtension.get();
Jason Monkd7c98552018-12-04 11:14:50 -050048 SysUiServiceProvider.getComponent(mContext, CommandQueue.class).addCallback(this);
Jason Monk361915c2017-03-21 20:33:59 -040049 }
50
Charles He9851a8d2017-10-10 17:31:30 +010051 private void onExtensionCallback(GlobalActions newPlugin) {
52 if (mPlugin != null) {
53 mPlugin.destroy();
54 }
55 mPlugin = newPlugin;
56 }
57
Jason Monk361915c2017-03-21 20:33:59 -040058 @Override
Jason Monkb4302182017-08-04 13:39:17 -040059 public void handleShowShutdownUi(boolean isReboot, String reason) {
60 mExtension.get().showShutdownUi(isReboot, reason);
61 }
62
63 @Override
Jason Monk361915c2017-03-21 20:33:59 -040064 public void handleShowGlobalActionsMenu() {
65 mExtension.get().showGlobalActions(this);
66 }
67
68 @Override
69 public void onGlobalActionsShown() {
70 try {
71 mBarService.onGlobalActionsShown();
72 } catch (RemoteException e) {
73 }
74 }
75
76 @Override
77 public void onGlobalActionsHidden() {
78 try {
79 mBarService.onGlobalActionsHidden();
80 } catch (RemoteException e) {
81 }
82 }
83
84 @Override
85 public void shutdown() {
86 try {
87 mBarService.shutdown();
88 } catch (RemoteException e) {
89 }
90 }
91
92 @Override
93 public void reboot(boolean safeMode) {
94 try {
95 mBarService.reboot(safeMode);
96 } catch (RemoteException e) {
97 }
98 }
99}