diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index efcc2c44ba942..41c34361cf703 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -483,4 +483,7 @@ false + + com.android.systemui.controls.panel + diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java index b9fe827bb1c95..6178a16bd22fd 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 { 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 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; + } }