diff options
| author | 2019-10-01 16:45:10 -0400 | |
|---|---|---|
| committer | 2019-10-30 14:40:41 -0400 | |
| commit | 4ca00016c5a5506d2955d033207998b7a21cdd0d (patch) | |
| tree | d595a7f0c9fd2d52e999e08b677d67a90017799f | |
| parent | f451d5aed087739b629b160b61edb9f690b668bf (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.xml | 3 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java | 29 |
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; + } } |