diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java index 969576082b362..2673ebdd1f6ac 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java @@ -89,7 +89,6 @@ import com.android.systemui.statusbar.RemoteInputController; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.notification.ExpandAnimationParameters; import com.android.systemui.statusbar.notification.FakeShadowView; -import com.android.systemui.statusbar.notification.NotificationActivityStarter; import com.android.systemui.statusbar.notification.NotificationLaunchAnimatorController; import com.android.systemui.statusbar.notification.NotificationUtils; import com.android.systemui.statusbar.notification.ShadeViewRefactor; @@ -212,7 +211,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable private GroupMembershipManager mGroupMembershipManager; private GroupExpansionManager mGroupExpansionManager; - private NotificationActivityStarter mNotificationActivityStarter; private HashSet mChildrenToAddAnimated = new HashSet<>(); private ArrayList mAddedHeadsUpChildren = new ArrayList<>(); private ArrayList mChildrenToRemoveAnimated = new ArrayList<>(); @@ -564,6 +562,9 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable } }; + @Nullable + private OnClickListener mManageButtonClickListener; + @Inject public NotificationStackScrollLayout( @Named(VIEW_CONTEXT) Context context, @@ -4361,6 +4362,14 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable return -1; } + /** + * Returns whether or not a History button is shown in the footer. If there is no footer, then + * this will return false. + **/ + public boolean isHistoryShown() { + return mFooterView != null && mFooterView.isHistoryShown(); + } + @ShadeViewRefactor(RefactorComponent.SHADE_VIEW) void setFooterView(@NonNull FooterView footerView) { int index = -1; @@ -4370,6 +4379,9 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable } mFooterView = footerView; addView(mFooterView, index); + if (mManageButtonClickListener != null) { + mFooterView.setManageButtonClickListener(mManageButtonClickListener); + } } @ShadeViewRefactor(RefactorComponent.SHADE_VIEW) @@ -5073,9 +5085,12 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable } } - public void setNotificationActivityStarter( - NotificationActivityStarter notificationActivityStarter) { - mNotificationActivityStarter = notificationActivityStarter; + /** Register a {@link View.OnClickListener} to be invoked when the Manage button is clicked. */ + public void setManageButtonClickListener(@Nullable OnClickListener listener) { + mManageButtonClickListener = listener; + if (mFooterView != null) { + mFooterView.setManageButtonClickListener(mManageButtonClickListener); + } } @VisibleForTesting @@ -5089,9 +5104,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable } clearNotifications(ROWS_ALL, true /* closeShade */); }); - footerView.setManageButtonClickListener(v -> { - mNotificationActivityStarter.startHistoryIntent(v, mFooterView.isHistoryShown()); - }); setFooterView(footerView); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java index f861e53b2612d..428a8407cc532 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java @@ -48,6 +48,8 @@ import android.view.View; import android.view.ViewGroup; import android.view.WindowInsets; +import androidx.annotation.Nullable; + import com.android.internal.annotations.VisibleForTesting; import com.android.internal.colorextraction.ColorExtractor; import com.android.internal.jank.InteractionJankMonitor; @@ -184,6 +186,9 @@ public class NotificationStackScrollLayoutController { private final NotificationListContainerImpl mNotificationListContainer = new NotificationListContainerImpl(); + @Nullable + private NotificationActivityStarter mNotificationActivityStarter; + private ColorExtractor.OnColorsChangedListener mOnColorsChangedListener; /** @@ -712,6 +717,11 @@ public class NotificationStackScrollLayoutController { mView.setKeyguardBypassEnabled(mKeyguardBypassController.getBypassEnabled()); mKeyguardBypassController .registerOnBypassStateChangedListener(mView::setKeyguardBypassEnabled); + mView.setManageButtonClickListener(v -> { + if (mNotificationActivityStarter != null) { + mNotificationActivityStarter.startHistoryIntent(v, mView.isHistoryShown()); + } + }); mHeadsUpManager.addListener(mOnHeadsUpChangedListener); mHeadsUpManager.setAnimationStateHandler(mView::setHeadsUpGoingAwayAnimationsAllowed); @@ -1472,6 +1482,10 @@ public class NotificationStackScrollLayoutController { mView.animateNextTopPaddingChange(); } + public void setNotificationActivityStarter(NotificationActivityStarter activityStarter) { + mNotificationActivityStarter = activityStarter; + } + /** * Enum for UiEvent logged from this class */ @@ -1543,7 +1557,8 @@ public class NotificationStackScrollLayoutController { @Override public void setNotificationActivityStarter( NotificationActivityStarter notificationActivityStarter) { - mView.setNotificationActivityStarter(notificationActivityStarter); + NotificationStackScrollLayoutController.this + .setNotificationActivityStarter(notificationActivityStarter); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index dc3ea8d9b265b..5952c1ecc63eb 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -1447,7 +1447,7 @@ public class StatusBar extends SystemUI implements DemoMode, .setNotificationPresenter(mPresenter) .setNotificationPanelViewController(mNotificationPanelViewController) .build(); - mStackScroller.setNotificationActivityStarter(mNotificationActivityStarter); + mStackScrollerController.setNotificationActivityStarter(mNotificationActivityStarter); mGutsManager.setNotificationActivityStarter(mNotificationActivityStarter); mNotificationsController.initialize(