Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4ca00016 authored by Fabian Kozynski's avatar Fabian Kozynski
Browse files

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
parent f451d5ae
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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>
+27 −2
Original line number Diff line number Diff line
@@ -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;
    }
}