summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Fabian Kozynski <kozynski@google.com> 2019-11-01 14:03:33 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-11-01 14:03:33 +0000
commit280f659058567e3ad9b670ebaeca60aac4f5366c (patch)
tree2eaa50693e3b34c326de735fa80b74c049d4c8f8
parente1270b7a0aecfefe633851a522ce854fce556285 (diff)
parent4ca00016c5a5506d2955d033207998b7a21cdd0d (diff)
Merge "Use an external GlobalActionsPanelPlugin if available"
-rw-r--r--packages/SystemUI/res/values/config.xml3
-rw-r--r--packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java29
2 files changed, 30 insertions, 2 deletions
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index efcc2c44ba94..41c34361cf70 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -483,4 +483,7 @@
<!-- Whether or not to add a "people" notifications section -->
<bool name="config_usePeopleFiltering">false</bool>
+ <!-- Package name for controls plugin -->
+ <string name="config_controlsPluginPackageName" translatable="false">com.android.systemui.controls.panel</string>
+
</resources>
diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java
index b9fe827bb1c9..6178a16bd22f 100644
--- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java
@@ -37,12 +37,15 @@ import com.android.systemui.SysUiServiceProvider;
import com.android.systemui.colorextraction.SysuiColorExtractor;
import com.android.systemui.plugins.GlobalActions;
import com.android.systemui.plugins.GlobalActionsPanelPlugin;
+import com.android.systemui.plugins.PluginListener;
+import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.ExtensionController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
-public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks {
+public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks,
+ PluginListener<GlobalActionsPanelPlugin> {
private static final float SHUTDOWN_SCRIM_ALPHA = 0.95f;
@@ -50,23 +53,33 @@ public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks
private final KeyguardStateController mKeyguardStateController;
private final DeviceProvisionedController mDeviceProvisionedController;
private final ExtensionController.Extension<GlobalActionsPanelPlugin> mPanelExtension;
+ private GlobalActionsPanelPlugin mPlugin;
private GlobalActionsDialog mGlobalActions;
private boolean mDisabled;
+ private final PluginManager mPluginManager;
+ private final String mPluginPackageName;
public GlobalActionsImpl(Context context) {
mContext = context;
mKeyguardStateController = Dependency.get(KeyguardStateController.class);
mDeviceProvisionedController = Dependency.get(DeviceProvisionedController.class);
+ mPluginManager = Dependency.get(PluginManager.class);
SysUiServiceProvider.getComponent(context, CommandQueue.class).addCallback(this);
mPanelExtension = Dependency.get(ExtensionController.class)
.newExtension(GlobalActionsPanelPlugin.class)
.withPlugin(GlobalActionsPanelPlugin.class)
.build();
+ mPluginPackageName = mContext.getString(
+ com.android.systemui.R.string.config_controlsPluginPackageName);
+ mPluginManager.addPluginListener(
+ GlobalActionsPanelPlugin.ACTION, this, GlobalActionsPanelPlugin.class, true);
}
@Override
public void destroy() {
SysUiServiceProvider.getComponent(mContext, CommandQueue.class).removeCallback(this);
+ mPluginManager.removePluginListener(this);
+ if (mPlugin != null) mPlugin.onDestroy();
if (mGlobalActions != null) {
mGlobalActions.destroy();
mGlobalActions = null;
@@ -81,7 +94,7 @@ public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks
}
mGlobalActions.showDialog(mKeyguardStateController.isShowing(),
mDeviceProvisionedController.isDeviceProvisioned(),
- mPanelExtension.get());
+ mPlugin != null ? mPlugin : mPanelExtension.get());
Dependency.get(KeyguardUpdateMonitor.class).requestFaceAuth();
}
@@ -144,4 +157,16 @@ public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks
mGlobalActions.dismissDialog();
}
}
+
+ @Override
+ public void onPluginConnected(GlobalActionsPanelPlugin plugin, Context pluginContext) {
+ if (pluginContext.getPackageName().equals(mPluginPackageName)) {
+ mPlugin = plugin;
+ }
+ }
+
+ @Override
+ public void onPluginDisconnected(GlobalActionsPanelPlugin plugin) {
+ mPlugin = null;
+ }
}