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

Commit 52f05447 authored by Steve Elliott's avatar Steve Elliott
Browse files

Insert section headers in new notif pipeline

Test: atest, manual

Change-Id: Ia2befebb21816cc792c7e7db5803c44441b8e0d7
parent 056630f1
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -673,7 +673,6 @@ public class ShadeListBuilder implements Dumpable {
                GroupEntry parent = (GroupEntry) entry;
                for (NotificationEntry child : parent.getChildren()) {
                    child.getAttachState().setSection(section);
                    child.getAttachState().setSection(section);
                }
                parent.sortChildren(sChildComparator);
            }
+7 −4
Original line number Diff line number Diff line
@@ -22,6 +22,8 @@ import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifPromoter
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSectioner
import com.android.systemui.statusbar.notification.collection.render.NodeController
import com.android.systemui.statusbar.notification.dagger.PeopleHeader
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier.Companion.TYPE_NON_PERSON
import javax.inject.Inject
@@ -33,7 +35,8 @@ import javax.inject.Inject
 */
@SysUISingleton
class ConversationCoordinator @Inject constructor(
    private val peopleNotificationIdentifier: PeopleNotificationIdentifier
    private val peopleNotificationIdentifier: PeopleNotificationIdentifier,
    @PeopleHeader peopleHeaderController: NodeController
) : Coordinator {

    private val notificationPromoter = object : NotifPromoter(TAG) {
@@ -43,9 +46,9 @@ class ConversationCoordinator @Inject constructor(
    }

    val sectioner = object : NotifSectioner("People") {
        override fun isInSection(entry: ListEntry): Boolean {
            return isConversation(entry.representativeEntry!!)
        }
        override fun isInSection(entry: ListEntry): Boolean =
                isConversation(entry.representativeEntry!!)
        override fun getHeaderNodeController() = peopleHeaderController
    }

    override fun attach(pipeline: NotifPipeline) {
+12 −1
Original line number Diff line number Diff line
@@ -30,6 +30,8 @@ import com.android.systemui.statusbar.notification.collection.listbuilder.plugga
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSectioner;
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifLifetimeExtender;
import com.android.systemui.statusbar.notification.collection.render.NodeController;
import com.android.systemui.statusbar.notification.dagger.IncomingHeader;
import com.android.systemui.statusbar.notification.interruption.HeadsUpViewBinder;
import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProvider;
import com.android.systemui.statusbar.policy.HeadsUpManager;
@@ -61,6 +63,7 @@ public class HeadsUpCoordinator implements Coordinator {
    private final HeadsUpViewBinder mHeadsUpViewBinder;
    private final NotificationInterruptStateProvider mNotificationInterruptStateProvider;
    private final NotificationRemoteInputManager mRemoteInputManager;
    private final NodeController mIncomingHeaderController;

    // tracks the current HeadUpNotification reported by HeadsUpManager
    private @Nullable NotificationEntry mCurrentHun;
@@ -73,11 +76,13 @@ public class HeadsUpCoordinator implements Coordinator {
            HeadsUpManager headsUpManager,
            HeadsUpViewBinder headsUpViewBinder,
            NotificationInterruptStateProvider notificationInterruptStateProvider,
            NotificationRemoteInputManager remoteInputManager) {
            NotificationRemoteInputManager remoteInputManager,
            @IncomingHeader NodeController incomingHeaderController) {
        mHeadsUpManager = headsUpManager;
        mHeadsUpViewBinder = headsUpViewBinder;
        mNotificationInterruptStateProvider = notificationInterruptStateProvider;
        mRemoteInputManager = remoteInputManager;
        mIncomingHeaderController = incomingHeaderController;
    }

    @Override
@@ -196,6 +201,12 @@ public class HeadsUpCoordinator implements Coordinator {
        public boolean isInSection(ListEntry entry) {
            return isCurrentlyShowingHun(entry);
        }

        @Nullable
        @Override
        public NodeController getHeaderNodeController() {
            return mIncomingHeaderController;
        }
    };

    private final OnHeadsUpChangedListener mOnHeadsUpChangedListener =
+24 −1
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.systemui.statusbar.notification.collection.coordinator;

import android.annotation.Nullable;

import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.notification.collection.ListEntry;
@@ -24,6 +26,9 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter;
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSectioner;
import com.android.systemui.statusbar.notification.collection.provider.HighPriorityProvider;
import com.android.systemui.statusbar.notification.collection.render.NodeController;
import com.android.systemui.statusbar.notification.dagger.AlertingHeader;
import com.android.systemui.statusbar.notification.dagger.SilentHeader;

import javax.inject.Inject;

@@ -40,13 +45,19 @@ public class RankingCoordinator implements Coordinator {

    private final StatusBarStateController mStatusBarStateController;
    private final HighPriorityProvider mHighPriorityProvider;
    private final NodeController mSilentHeaderController;
    private final NodeController mAlertingHeaderController;

    @Inject
    public RankingCoordinator(
            StatusBarStateController statusBarStateController,
            HighPriorityProvider highPriorityProvider) {
            HighPriorityProvider highPriorityProvider,
            @AlertingHeader NodeController alertingHeaderController,
            @SilentHeader NodeController silentHeaderController) {
        mStatusBarStateController = statusBarStateController;
        mHighPriorityProvider = highPriorityProvider;
        mAlertingHeaderController = alertingHeaderController;
        mSilentHeaderController = silentHeaderController;
    }

    @Override
@@ -70,6 +81,12 @@ public class RankingCoordinator implements Coordinator {
        public boolean isInSection(ListEntry entry) {
            return mHighPriorityProvider.isHighPriority(entry);
        }

        @Nullable
        @Override
        public NodeController getHeaderNodeController() {
            return mAlertingHeaderController;
        }
    };

    private final NotifSectioner mSilentNotifSectioner = new NotifSectioner("Silent") {
@@ -77,6 +94,12 @@ public class RankingCoordinator implements Coordinator {
        public boolean isInSection(ListEntry entry) {
            return !mHighPriorityProvider.isHighPriority(entry);
        }

        @Nullable
        @Override
        public NodeController getHeaderNodeController() {
            return mSilentHeaderController;
        }
    };

    /**
+4 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.notification.collection.listbuilder

import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSectioner
import com.android.systemui.statusbar.notification.collection.render.NodeController

data class NotifSection(
    val sectioner: NotifSectioner,
@@ -24,4 +25,7 @@ data class NotifSection(
) {
    val label: String
        get() = "Section($index, \"${sectioner.name}\")"

    val headerController: NodeController?
        get() = sectioner.headerNodeController
}
Loading