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

Commit 62f32f9a authored by Steve Elliott's avatar Steve Elliott
Browse files

Move mNotificationActivityStarter + logic to Controller

Part of an effort to refactor NSSL for uni-directional data flow.

Bug: 193539698
Test: manual
Change-Id: I314e5e09037ee37ee32d0dcbbb44dec4758ddc94
parent be6c2fd0
Loading
Loading
Loading
Loading
+20 −8
Original line number Diff line number Diff line
@@ -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<ExpandableView> mChildrenToAddAnimated = new HashSet<>();
    private ArrayList<View> mAddedHeadsUpChildren = new ArrayList<>();
    private ArrayList<ExpandableView> 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);
    }

+16 −1
Original line number Diff line number Diff line
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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(