Make StatusBar not be a NotificationPresenter
Break the NotificationPresenter out of the StatusBar and most of
the logic with it.
- Break RemoteInput Callbacks out of NotificationPresenter
- Break Environment Callbacks out of NotificationPresenter
- Add ShadeController interface for StatusBar (abstraction
layer from StatusBar)
- Add InitController to allow for post-init tasks (dependency
resolution should not go here)
- Make some dependencies (ShadeController, NotificationEntryManager,
NotificationLockscreenUserManager usually) lazily-resolved to break
some dependency cycles
- Lots of other cleanup
Test: Existing tests do not pass
Change-Id: Ic043c6b15a4ffe551fc27f99b25d5c3caa1be582
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index e31bad65..5ee0823 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.phone;
+import static com.android.systemui.SysUiServiceProvider.getComponent;
import static com.android.systemui.statusbar.notification.ActivityLaunchAnimator
.ExpandAnimationParameters;
@@ -65,10 +66,12 @@
import com.android.systemui.fragments.FragmentHostManager.FragmentListener;
import com.android.systemui.plugins.qs.QS;
import com.android.systemui.qs.QSFragment;
+import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.FlingAnimationUtils;
import com.android.systemui.statusbar.GestureRecorder;
import com.android.systemui.statusbar.KeyguardAffordanceView;
import com.android.systemui.statusbar.KeyguardIndicationController;
+import com.android.systemui.statusbar.NotificationLockscreenUserManager;
import com.android.systemui.statusbar.NotificationShelf;
import com.android.systemui.statusbar.RemoteInputController;
import com.android.systemui.statusbar.StatusBarState;
@@ -337,6 +340,11 @@
Dependency.get(NotificationEntryManager.class);
private final StateListener mListener = this::setBarState;
+ private final CommandQueue mCommandQueue;
+ private final NotificationLockscreenUserManager mLockscreenUserManager =
+ Dependency.get(NotificationLockscreenUserManager.class);
+ private final ShadeController mShadeController =
+ Dependency.get(ShadeController.class);
public NotificationPanelView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -347,6 +355,7 @@
setAccessibilityPaneTitle(determineAccessibilityPaneTitle());
mAlphaPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.MULTIPLY));
setPanelAlpha(255, false /* animate */);
+ mCommandQueue = getComponent(context, CommandQueue.class);
}
private void setStatusBar(StatusBar bar) {
@@ -630,7 +639,7 @@
if (suppressedSummary) {
continue;
}
- if (!mStatusBar.getNotificationLockscreenUserManager().shouldShowOnKeyguard(
+ if (!mLockscreenUserManager.shouldShowOnKeyguard(
row.getStatusBarNotification())) {
continue;
}
@@ -2414,7 +2423,7 @@
return true;
case StatusBarState.SHADE_LOCKED:
if (!mQsExpanded) {
- mStatusBar.goToKeyguard();
+ mShadeController.goToKeyguard();
}
return true;
case StatusBarState.SHADE:
@@ -2617,7 +2626,7 @@
}
if (showIconsWhenExpanded != mShowIconsWhenExpanded) {
mShowIconsWhenExpanded = showIconsWhenExpanded;
- mStatusBar.recomputeDisableFlags(false);
+ mCommandQueue.recomputeDisableFlags(false);
}
}
@@ -2904,7 +2913,7 @@
if (hideIcons != mHideIconsDuringNotificationLaunch) {
mHideIconsDuringNotificationLaunch = hideIcons;
if (!hideIcons) {
- mStatusBar.recomputeDisableFlags(true /* animate */);
+ mCommandQueue.recomputeDisableFlags(true /* animate */);
}
}
}
@@ -2972,6 +2981,7 @@
mNotificationStackScroller.updateSpeedBumpIndex();
mNotificationStackScroller.updateFooter();
updateShowEmptyShadeView();
+ mNotificationStackScroller.updateIconAreaViews();
}
public void onUpdateRowStates() {
@@ -3019,6 +3029,10 @@
updateShowEmptyShadeView();
}
+ public void showTransientIndication(int id) {
+ mKeyguardBottomArea.showTransientIndication(id);
+ }
+
/**
* Whenever a user drags down on the empty area (pulling down the shade and clock) and lets go.
*