diff options
| author | 2019-11-01 14:03:33 +0000 | |
|---|---|---|
| committer | 2019-11-01 14:03:33 +0000 | |
| commit | 280f659058567e3ad9b670ebaeca60aac4f5366c (patch) | |
| tree | 2eaa50693e3b34c326de735fa80b74c049d4c8f8 | |
| parent | e1270b7a0aecfefe633851a522ce854fce556285 (diff) | |
| parent | 4ca00016c5a5506d2955d033207998b7a21cdd0d (diff) | |
Merge "Use an external GlobalActionsPanelPlugin if available"
| -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; + } } |