Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java +31 −2 Original line number Diff line number Diff line Loading @@ -226,8 +226,13 @@ public class ShadeListBuilder implements Dumpable { mNotifSections.clear(); for (NotifSectioner sectioner : sectioners) { mNotifSections.add(new NotifSection(sectioner, mNotifSections.size())); final NotifSection section = new NotifSection(sectioner, mNotifSections.size()); final NotifComparator sectionComparator = section.getComparator(); mNotifSections.add(section); sectioner.setInvalidationListener(this::onNotifSectionInvalidated); if (sectionComparator != null) { sectionComparator.setInvalidationListener(this::onNotifComparatorInvalidated); } } mNotifSections.add(new NotifSection(DEFAULT_SECTIONER, mNotifSections.size())); Loading Loading @@ -1098,7 +1103,12 @@ public class ShadeListBuilder implements Dumpable { callOnCleanup(mNotifComparators); for (int i = 0; i < mNotifSections.size(); i++) { mNotifSections.get(i).getSectioner().onCleanup(); final NotifSection notifSection = mNotifSections.get(i); notifSection.getSectioner().onCleanup(); final NotifComparator comparator = notifSection.getComparator(); if (comparator != null) { comparator.onCleanup(); } } callOnCleanup(List.of(getStabilityManager())); Loading @@ -1111,6 +1121,19 @@ public class ShadeListBuilder implements Dumpable { } } @Nullable private NotifComparator getSectionComparator( @NonNull ListEntry o1, @NonNull ListEntry o2) { final NotifSection section = o1.getSection(); if (section != o2.getSection()) { throw new RuntimeException("Entry ordering should only be done within sections"); } if (section != null) { return section.getComparator(); } return null; } private final Comparator<ListEntry> mTopLevelComparator = (o1, o2) -> { int cmp = Integer.compare( o1.getSectionIndex(), Loading @@ -1122,6 +1145,12 @@ public class ShadeListBuilder implements Dumpable { cmp = Integer.compare(index1, index2); if (cmp != 0) return cmp; NotifComparator sectionComparator = getSectionComparator(o1, o2); if (sectionComparator != null) { cmp = sectionComparator.compare(o1, o2); if (cmp != 0) return cmp; } for (int i = 0; i < mNotifComparators.size(); i++) { cmp = mNotifComparators.get(i).compare(o1, o2); if (cmp != 0) return cmp; Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ConversationCoordinator.kt +9 −12 Original line number Diff line number Diff line Loading @@ -51,23 +51,20 @@ class ConversationCoordinator @Inject constructor( val sectioner = object : NotifSectioner("People", BUCKET_PEOPLE) { override fun isInSection(entry: ListEntry): Boolean = isConversation(entry) override fun getHeaderNodeController() = // TODO: remove SHOW_ALL_SECTIONS, this redundant method, and peopleHeaderController if (RankingCoordinator.SHOW_ALL_SECTIONS) peopleHeaderController else null } val comparator = object : NotifComparator("People") { override fun getComparator() = object : NotifComparator("People") { override fun compare(entry1: ListEntry, entry2: ListEntry): Int { assert(entry1.section === entry2.section) if (entry1.section?.sectioner !== sectioner) { return 0 } val type1 = getPeopleType(entry1) val type2 = getPeopleType(entry2) return type2.compareTo(type1) } } override fun getHeaderNodeController() = // TODO: remove SHOW_ALL_SECTIONS, this redundant method, and peopleHeaderController if (RankingCoordinator.SHOW_ALL_SECTIONS) peopleHeaderController else null } override fun attach(pipeline: NotifPipeline) { pipeline.addPromoter(notificationPromoter) } Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinator.kt +8 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import com.android.systemui.statusbar.notification.collection.ListEntry import com.android.systemui.statusbar.notification.collection.NotifPipeline import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifComparator 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.notifcollection.NotifCollectionListener Loading Loading @@ -456,6 +457,13 @@ class HeadsUpCoordinator @Inject constructor( // TODO: This check won't notice if a child of the group is going to HUN... isGoingToShowHunNoRetract(entry) override fun getComparator(): NotifComparator { return object : NotifComparator("HeadsUp") { override fun compare(o1: ListEntry, o2: ListEntry): Int = mHeadsUpManager.compare(o1.representativeEntry, o2.representativeEntry) } } override fun getHeaderNodeController(): NodeController? = // TODO: remove SHOW_ALL_SECTIONS, this redundant method, and mIncomingHeaderController if (RankingCoordinator.SHOW_ALL_SECTIONS) mIncomingHeaderController else null Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.kt +0 −6 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import com.android.systemui.dump.DumpManager import com.android.systemui.statusbar.notification.NotifPipelineFlags import com.android.systemui.statusbar.notification.collection.NotifPipeline import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifComparator import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSectioner import java.io.FileDescriptor import java.io.PrintWriter Loading Loading @@ -64,7 +63,6 @@ class NotifCoordinatorsImpl @Inject constructor( private val mCoordinators: MutableList<Coordinator> = ArrayList() private val mOrderedSections: MutableList<NotifSectioner> = ArrayList() private val mOrderedComparators: MutableList<NotifComparator> = ArrayList() /** * Creates all the coordinators. Loading Loading @@ -119,9 +117,6 @@ class NotifCoordinatorsImpl @Inject constructor( mOrderedSections.add(rankingCoordinator.alertingSectioner) // Alerting mOrderedSections.add(rankingCoordinator.silentSectioner) // Silent mOrderedSections.add(rankingCoordinator.minimizedSectioner) // Minimized // Manually add ordered comparators mOrderedComparators.add(conversationCoordinator.comparator) } /** Loading @@ -133,7 +128,6 @@ class NotifCoordinatorsImpl @Inject constructor( c.attach(pipeline) } pipeline.setSections(mOrderedSections) pipeline.setComparators(mOrderedComparators) } override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<String>) { Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/NotifSection.kt +3 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.notification.collection.listbuilder import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifComparator 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.stack.PriorityBucket Loading @@ -29,5 +30,7 @@ data class NotifSection( val headerController: NodeController? = sectioner.headerNodeController val comparator: NotifComparator? = sectioner.comparator @PriorityBucket val bucket: Int = sectioner.bucket } Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java +31 −2 Original line number Diff line number Diff line Loading @@ -226,8 +226,13 @@ public class ShadeListBuilder implements Dumpable { mNotifSections.clear(); for (NotifSectioner sectioner : sectioners) { mNotifSections.add(new NotifSection(sectioner, mNotifSections.size())); final NotifSection section = new NotifSection(sectioner, mNotifSections.size()); final NotifComparator sectionComparator = section.getComparator(); mNotifSections.add(section); sectioner.setInvalidationListener(this::onNotifSectionInvalidated); if (sectionComparator != null) { sectionComparator.setInvalidationListener(this::onNotifComparatorInvalidated); } } mNotifSections.add(new NotifSection(DEFAULT_SECTIONER, mNotifSections.size())); Loading Loading @@ -1098,7 +1103,12 @@ public class ShadeListBuilder implements Dumpable { callOnCleanup(mNotifComparators); for (int i = 0; i < mNotifSections.size(); i++) { mNotifSections.get(i).getSectioner().onCleanup(); final NotifSection notifSection = mNotifSections.get(i); notifSection.getSectioner().onCleanup(); final NotifComparator comparator = notifSection.getComparator(); if (comparator != null) { comparator.onCleanup(); } } callOnCleanup(List.of(getStabilityManager())); Loading @@ -1111,6 +1121,19 @@ public class ShadeListBuilder implements Dumpable { } } @Nullable private NotifComparator getSectionComparator( @NonNull ListEntry o1, @NonNull ListEntry o2) { final NotifSection section = o1.getSection(); if (section != o2.getSection()) { throw new RuntimeException("Entry ordering should only be done within sections"); } if (section != null) { return section.getComparator(); } return null; } private final Comparator<ListEntry> mTopLevelComparator = (o1, o2) -> { int cmp = Integer.compare( o1.getSectionIndex(), Loading @@ -1122,6 +1145,12 @@ public class ShadeListBuilder implements Dumpable { cmp = Integer.compare(index1, index2); if (cmp != 0) return cmp; NotifComparator sectionComparator = getSectionComparator(o1, o2); if (sectionComparator != null) { cmp = sectionComparator.compare(o1, o2); if (cmp != 0) return cmp; } for (int i = 0; i < mNotifComparators.size(); i++) { cmp = mNotifComparators.get(i).compare(o1, o2); if (cmp != 0) return cmp; Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ConversationCoordinator.kt +9 −12 Original line number Diff line number Diff line Loading @@ -51,23 +51,20 @@ class ConversationCoordinator @Inject constructor( val sectioner = object : NotifSectioner("People", BUCKET_PEOPLE) { override fun isInSection(entry: ListEntry): Boolean = isConversation(entry) override fun getHeaderNodeController() = // TODO: remove SHOW_ALL_SECTIONS, this redundant method, and peopleHeaderController if (RankingCoordinator.SHOW_ALL_SECTIONS) peopleHeaderController else null } val comparator = object : NotifComparator("People") { override fun getComparator() = object : NotifComparator("People") { override fun compare(entry1: ListEntry, entry2: ListEntry): Int { assert(entry1.section === entry2.section) if (entry1.section?.sectioner !== sectioner) { return 0 } val type1 = getPeopleType(entry1) val type2 = getPeopleType(entry2) return type2.compareTo(type1) } } override fun getHeaderNodeController() = // TODO: remove SHOW_ALL_SECTIONS, this redundant method, and peopleHeaderController if (RankingCoordinator.SHOW_ALL_SECTIONS) peopleHeaderController else null } override fun attach(pipeline: NotifPipeline) { pipeline.addPromoter(notificationPromoter) } Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinator.kt +8 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import com.android.systemui.statusbar.notification.collection.ListEntry import com.android.systemui.statusbar.notification.collection.NotifPipeline import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifComparator 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.notifcollection.NotifCollectionListener Loading Loading @@ -456,6 +457,13 @@ class HeadsUpCoordinator @Inject constructor( // TODO: This check won't notice if a child of the group is going to HUN... isGoingToShowHunNoRetract(entry) override fun getComparator(): NotifComparator { return object : NotifComparator("HeadsUp") { override fun compare(o1: ListEntry, o2: ListEntry): Int = mHeadsUpManager.compare(o1.representativeEntry, o2.representativeEntry) } } override fun getHeaderNodeController(): NodeController? = // TODO: remove SHOW_ALL_SECTIONS, this redundant method, and mIncomingHeaderController if (RankingCoordinator.SHOW_ALL_SECTIONS) mIncomingHeaderController else null Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.kt +0 −6 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import com.android.systemui.dump.DumpManager import com.android.systemui.statusbar.notification.NotifPipelineFlags import com.android.systemui.statusbar.notification.collection.NotifPipeline import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifComparator import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSectioner import java.io.FileDescriptor import java.io.PrintWriter Loading Loading @@ -64,7 +63,6 @@ class NotifCoordinatorsImpl @Inject constructor( private val mCoordinators: MutableList<Coordinator> = ArrayList() private val mOrderedSections: MutableList<NotifSectioner> = ArrayList() private val mOrderedComparators: MutableList<NotifComparator> = ArrayList() /** * Creates all the coordinators. Loading Loading @@ -119,9 +117,6 @@ class NotifCoordinatorsImpl @Inject constructor( mOrderedSections.add(rankingCoordinator.alertingSectioner) // Alerting mOrderedSections.add(rankingCoordinator.silentSectioner) // Silent mOrderedSections.add(rankingCoordinator.minimizedSectioner) // Minimized // Manually add ordered comparators mOrderedComparators.add(conversationCoordinator.comparator) } /** Loading @@ -133,7 +128,6 @@ class NotifCoordinatorsImpl @Inject constructor( c.attach(pipeline) } pipeline.setSections(mOrderedSections) pipeline.setComparators(mOrderedComparators) } override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<String>) { Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/NotifSection.kt +3 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.notification.collection.listbuilder import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifComparator 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.stack.PriorityBucket Loading @@ -29,5 +30,7 @@ data class NotifSection( val headerController: NodeController? = sectioner.headerNodeController val comparator: NotifComparator? = sectioner.comparator @PriorityBucket val bucket: Int = sectioner.bucket }