Loading core/java/android/app/StatusBarManager.java +3 −2 Original line number Diff line number Diff line Loading @@ -73,15 +73,16 @@ public class StatusBarManager { public static final int DISABLE2_QUICK_SETTINGS = 1; public static final int DISABLE2_SYSTEM_ICONS = 1 << 1; public static final int DISABLE2_NOTIFICATION_SHADE = 1 << 2; public static final int DISABLE2_GLOBAL_ACTIONS = 1 << 3; public static final int DISABLE2_NONE = 0x00000000; public static final int DISABLE2_MASK = DISABLE2_QUICK_SETTINGS | DISABLE2_SYSTEM_ICONS | DISABLE2_NOTIFICATION_SHADE; | DISABLE2_NOTIFICATION_SHADE | DISABLE2_GLOBAL_ACTIONS; @IntDef(flag = true, value = {DISABLE2_NONE, DISABLE2_MASK, DISABLE2_QUICK_SETTINGS, DISABLE2_SYSTEM_ICONS, DISABLE2_NOTIFICATION_SHADE}) DISABLE2_NOTIFICATION_SHADE, DISABLE2_GLOBAL_ACTIONS}) @Retention(RetentionPolicy.SOURCE) public @interface Disable2Flags {} Loading packages/SystemUI/plugin/src/com/android/systemui/plugins/GlobalActions.java +3 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,9 @@ public interface GlobalActions extends Plugin { default void showShutdownUi(boolean isReboot, String reason) { } default void destroy() { } @ProvidesInterface(version = GlobalActionsManager.VERSION) public interface GlobalActionsManager { int VERSION = 1; Loading packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsComponent.java +10 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.os.ServiceManager; public class GlobalActionsComponent extends SystemUI implements Callbacks, GlobalActionsManager { private GlobalActions mPlugin; private Extension<GlobalActions> mExtension; private IStatusBarService mBarService; Loading @@ -41,10 +42,19 @@ public class GlobalActionsComponent extends SystemUI implements Callbacks, Globa mExtension = Dependency.get(ExtensionController.class).newExtension(GlobalActions.class) .withPlugin(GlobalActions.class) .withDefault(() -> new GlobalActionsImpl(mContext)) .withCallback(this::onExtensionCallback) .build(); mPlugin = mExtension.get(); SysUiServiceProvider.getComponent(mContext, CommandQueue.class).addCallbacks(this); } private void onExtensionCallback(GlobalActions newPlugin) { if (mPlugin != null) { mPlugin.destroy(); } mPlugin = newPlugin; } @Override public void handleShowShutdownUi(boolean isReboot, String reason) { mExtension.get().showShutdownUi(isReboot, reason); Loading packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java +26 −23 Original line number Diff line number Diff line Loading @@ -16,27 +16,6 @@ package com.android.systemui.globalactions; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN; import com.android.internal.R; import com.android.internal.colorextraction.ColorExtractor; import com.android.internal.colorextraction.ColorExtractor.GradientColors; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.util.EmergencyAffordanceManager; import com.android.internal.telephony.TelephonyIntents; import com.android.internal.telephony.TelephonyProperties; import com.android.internal.widget.LockPatternUtils; import com.android.systemui.Dependency; import com.android.systemui.HardwareUiLayout; import com.android.systemui.Interpolators; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.plugins.GlobalActions.GlobalActionsManager; import com.android.systemui.statusbar.notification.NotificationUtils; import com.android.systemui.statusbar.phone.ScrimController; import com.android.systemui.volume.VolumeDialogMotion.LogAccelerateInterpolator; import com.android.systemui.volume.VolumeDialogMotion.LogDecelerateInterpolator; import android.animation.ValueAnimator; import android.animation.ValueAnimator.AnimatorUpdateListener; import android.app.ActivityManager; import android.app.Dialog; import android.app.WallpaperManager; Loading Loading @@ -69,7 +48,6 @@ import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.ArraySet; import android.util.Log; import android.util.MathUtils; import android.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.View; Loading @@ -86,7 +64,23 @@ import android.widget.ImageView.ScaleType; import android.widget.LinearLayout; import android.widget.TextView; import com.android.internal.R; import com.android.internal.colorextraction.ColorExtractor; import com.android.internal.colorextraction.ColorExtractor.GradientColors; import com.android.internal.colorextraction.drawable.GradientDrawable; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.telephony.TelephonyIntents; import com.android.internal.telephony.TelephonyProperties; import com.android.internal.util.EmergencyAffordanceManager; import com.android.internal.widget.LockPatternUtils; import com.android.systemui.Dependency; import com.android.systemui.HardwareUiLayout; import com.android.systemui.Interpolators; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.plugins.GlobalActions.GlobalActionsManager; import com.android.systemui.statusbar.phone.ScrimController; import com.android.systemui.volume.VolumeDialogMotion.LogAccelerateInterpolator; import java.util.ArrayList; import java.util.List; Loading @@ -96,7 +90,8 @@ import java.util.List; * may show depending on whether the keyguard is showing, and whether the device * is provisioned. */ class GlobalActionsDialog implements DialogInterface.OnDismissListener, DialogInterface.OnClickListener { class GlobalActionsDialog implements DialogInterface.OnDismissListener, DialogInterface.OnClickListener { static public final String SYSTEM_DIALOG_REASON_KEY = "reason"; static public final String SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS = "globalactions"; Loading Loading @@ -195,6 +190,14 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener, DialogIn } } /** * Dismiss the global actions dialog, if it's currently shown */ public void dismissDialog() { mHandler.removeMessages(MESSAGE_DISMISS); mHandler.sendEmptyMessage(MESSAGE_DISMISS); } private void awakenIfNecessary() { if (mDreamManager != null) { try { Loading packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java +23 −3 Original line number Diff line number Diff line Loading @@ -14,12 +14,12 @@ package com.android.systemui.globalactions; import static android.app.StatusBarManager.DISABLE2_GLOBAL_ACTIONS; import android.app.Dialog; import android.app.KeyguardManager; import android.app.WallpaperColors; import android.app.WallpaperManager; import android.content.Context; import android.graphics.Color; import android.graphics.Point; import android.view.ViewGroup; import android.view.Window; Loading @@ -32,12 +32,14 @@ import com.android.internal.colorextraction.ColorExtractor.GradientColors; import com.android.internal.colorextraction.drawable.GradientDrawable; import com.android.settingslib.Utils; import com.android.systemui.Dependency; import com.android.systemui.SysUiServiceProvider; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.plugins.GlobalActions; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.KeyguardMonitor; public class GlobalActionsImpl implements GlobalActions { public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks { private static final float SHUTDOWN_SCRIM_ALPHA = 0.95f; Loading @@ -45,15 +47,23 @@ public class GlobalActionsImpl implements GlobalActions { private final KeyguardMonitor mKeyguardMonitor; private final DeviceProvisionedController mDeviceProvisionedController; private GlobalActionsDialog mGlobalActions; private boolean mDisabled; public GlobalActionsImpl(Context context) { mContext = context; mKeyguardMonitor = Dependency.get(KeyguardMonitor.class); mDeviceProvisionedController = Dependency.get(DeviceProvisionedController.class); SysUiServiceProvider.getComponent(context, CommandQueue.class).addCallbacks(this); } @Override public void destroy() { SysUiServiceProvider.getComponent(mContext, CommandQueue.class).removeCallbacks(this); } @Override public void showGlobalActions(GlobalActionsManager manager) { if (mDisabled) return; if (mGlobalActions == null) { mGlobalActions = new GlobalActionsDialog(mContext, manager); } Loading Loading @@ -107,4 +117,14 @@ public class GlobalActionsImpl implements GlobalActions { d.show(); } @Override public void disable(int state1, int state2, boolean animate) { final boolean disabled = (state2 & DISABLE2_GLOBAL_ACTIONS) != 0; if (disabled == mDisabled) return; mDisabled = disabled; if (disabled && mGlobalActions != null) { mGlobalActions.dismissDialog(); } } } Loading
core/java/android/app/StatusBarManager.java +3 −2 Original line number Diff line number Diff line Loading @@ -73,15 +73,16 @@ public class StatusBarManager { public static final int DISABLE2_QUICK_SETTINGS = 1; public static final int DISABLE2_SYSTEM_ICONS = 1 << 1; public static final int DISABLE2_NOTIFICATION_SHADE = 1 << 2; public static final int DISABLE2_GLOBAL_ACTIONS = 1 << 3; public static final int DISABLE2_NONE = 0x00000000; public static final int DISABLE2_MASK = DISABLE2_QUICK_SETTINGS | DISABLE2_SYSTEM_ICONS | DISABLE2_NOTIFICATION_SHADE; | DISABLE2_NOTIFICATION_SHADE | DISABLE2_GLOBAL_ACTIONS; @IntDef(flag = true, value = {DISABLE2_NONE, DISABLE2_MASK, DISABLE2_QUICK_SETTINGS, DISABLE2_SYSTEM_ICONS, DISABLE2_NOTIFICATION_SHADE}) DISABLE2_NOTIFICATION_SHADE, DISABLE2_GLOBAL_ACTIONS}) @Retention(RetentionPolicy.SOURCE) public @interface Disable2Flags {} Loading
packages/SystemUI/plugin/src/com/android/systemui/plugins/GlobalActions.java +3 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,9 @@ public interface GlobalActions extends Plugin { default void showShutdownUi(boolean isReboot, String reason) { } default void destroy() { } @ProvidesInterface(version = GlobalActionsManager.VERSION) public interface GlobalActionsManager { int VERSION = 1; Loading
packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsComponent.java +10 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.os.ServiceManager; public class GlobalActionsComponent extends SystemUI implements Callbacks, GlobalActionsManager { private GlobalActions mPlugin; private Extension<GlobalActions> mExtension; private IStatusBarService mBarService; Loading @@ -41,10 +42,19 @@ public class GlobalActionsComponent extends SystemUI implements Callbacks, Globa mExtension = Dependency.get(ExtensionController.class).newExtension(GlobalActions.class) .withPlugin(GlobalActions.class) .withDefault(() -> new GlobalActionsImpl(mContext)) .withCallback(this::onExtensionCallback) .build(); mPlugin = mExtension.get(); SysUiServiceProvider.getComponent(mContext, CommandQueue.class).addCallbacks(this); } private void onExtensionCallback(GlobalActions newPlugin) { if (mPlugin != null) { mPlugin.destroy(); } mPlugin = newPlugin; } @Override public void handleShowShutdownUi(boolean isReboot, String reason) { mExtension.get().showShutdownUi(isReboot, reason); Loading
packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java +26 −23 Original line number Diff line number Diff line Loading @@ -16,27 +16,6 @@ package com.android.systemui.globalactions; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN; import com.android.internal.R; import com.android.internal.colorextraction.ColorExtractor; import com.android.internal.colorextraction.ColorExtractor.GradientColors; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.util.EmergencyAffordanceManager; import com.android.internal.telephony.TelephonyIntents; import com.android.internal.telephony.TelephonyProperties; import com.android.internal.widget.LockPatternUtils; import com.android.systemui.Dependency; import com.android.systemui.HardwareUiLayout; import com.android.systemui.Interpolators; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.plugins.GlobalActions.GlobalActionsManager; import com.android.systemui.statusbar.notification.NotificationUtils; import com.android.systemui.statusbar.phone.ScrimController; import com.android.systemui.volume.VolumeDialogMotion.LogAccelerateInterpolator; import com.android.systemui.volume.VolumeDialogMotion.LogDecelerateInterpolator; import android.animation.ValueAnimator; import android.animation.ValueAnimator.AnimatorUpdateListener; import android.app.ActivityManager; import android.app.Dialog; import android.app.WallpaperManager; Loading Loading @@ -69,7 +48,6 @@ import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.ArraySet; import android.util.Log; import android.util.MathUtils; import android.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.View; Loading @@ -86,7 +64,23 @@ import android.widget.ImageView.ScaleType; import android.widget.LinearLayout; import android.widget.TextView; import com.android.internal.R; import com.android.internal.colorextraction.ColorExtractor; import com.android.internal.colorextraction.ColorExtractor.GradientColors; import com.android.internal.colorextraction.drawable.GradientDrawable; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.telephony.TelephonyIntents; import com.android.internal.telephony.TelephonyProperties; import com.android.internal.util.EmergencyAffordanceManager; import com.android.internal.widget.LockPatternUtils; import com.android.systemui.Dependency; import com.android.systemui.HardwareUiLayout; import com.android.systemui.Interpolators; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.plugins.GlobalActions.GlobalActionsManager; import com.android.systemui.statusbar.phone.ScrimController; import com.android.systemui.volume.VolumeDialogMotion.LogAccelerateInterpolator; import java.util.ArrayList; import java.util.List; Loading @@ -96,7 +90,8 @@ import java.util.List; * may show depending on whether the keyguard is showing, and whether the device * is provisioned. */ class GlobalActionsDialog implements DialogInterface.OnDismissListener, DialogInterface.OnClickListener { class GlobalActionsDialog implements DialogInterface.OnDismissListener, DialogInterface.OnClickListener { static public final String SYSTEM_DIALOG_REASON_KEY = "reason"; static public final String SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS = "globalactions"; Loading Loading @@ -195,6 +190,14 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener, DialogIn } } /** * Dismiss the global actions dialog, if it's currently shown */ public void dismissDialog() { mHandler.removeMessages(MESSAGE_DISMISS); mHandler.sendEmptyMessage(MESSAGE_DISMISS); } private void awakenIfNecessary() { if (mDreamManager != null) { try { Loading
packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java +23 −3 Original line number Diff line number Diff line Loading @@ -14,12 +14,12 @@ package com.android.systemui.globalactions; import static android.app.StatusBarManager.DISABLE2_GLOBAL_ACTIONS; import android.app.Dialog; import android.app.KeyguardManager; import android.app.WallpaperColors; import android.app.WallpaperManager; import android.content.Context; import android.graphics.Color; import android.graphics.Point; import android.view.ViewGroup; import android.view.Window; Loading @@ -32,12 +32,14 @@ import com.android.internal.colorextraction.ColorExtractor.GradientColors; import com.android.internal.colorextraction.drawable.GradientDrawable; import com.android.settingslib.Utils; import com.android.systemui.Dependency; import com.android.systemui.SysUiServiceProvider; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.plugins.GlobalActions; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.KeyguardMonitor; public class GlobalActionsImpl implements GlobalActions { public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks { private static final float SHUTDOWN_SCRIM_ALPHA = 0.95f; Loading @@ -45,15 +47,23 @@ public class GlobalActionsImpl implements GlobalActions { private final KeyguardMonitor mKeyguardMonitor; private final DeviceProvisionedController mDeviceProvisionedController; private GlobalActionsDialog mGlobalActions; private boolean mDisabled; public GlobalActionsImpl(Context context) { mContext = context; mKeyguardMonitor = Dependency.get(KeyguardMonitor.class); mDeviceProvisionedController = Dependency.get(DeviceProvisionedController.class); SysUiServiceProvider.getComponent(context, CommandQueue.class).addCallbacks(this); } @Override public void destroy() { SysUiServiceProvider.getComponent(mContext, CommandQueue.class).removeCallbacks(this); } @Override public void showGlobalActions(GlobalActionsManager manager) { if (mDisabled) return; if (mGlobalActions == null) { mGlobalActions = new GlobalActionsDialog(mContext, manager); } Loading Loading @@ -107,4 +117,14 @@ public class GlobalActionsImpl implements GlobalActions { d.show(); } @Override public void disable(int state1, int state2, boolean animate) { final boolean disabled = (state2 & DISABLE2_GLOBAL_ACTIONS) != 0; if (disabled == mDisabled) return; mDisabled = disabled; if (disabled && mGlobalActions != null) { mGlobalActions.dismissDialog(); } } }