summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Fabian Kozynski <kozynski@google.com> 2019-10-01 16:45:10 -0400
committer Fabian Kozynski <kozynski@google.com> 2019-10-30 14:40:41 -0400
commit4ca00016c5a5506d2955d033207998b7a21cdd0d (patch)
treed595a7f0c9fd2d52e999e08b677d67a90017799f
parentf451d5aed087739b629b160b61edb9f690b668bf (diff)
Use an external GlobalActionsPanelPlugin if available
If there is any plugin that implements GlobalActionsPanelPlugin with package name as defined in the config, SystemUI will use that instead of the wallet plugin. Test: manual Change-Id: I63db81287ef40f085d5b542fe01eff29adeb1477
-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;
+ }
}