<lambda>null1package com.android.systemui.statusbar.notification.collection.coordinator 2 3 import android.util.ArrayMap 4 import com.android.systemui.statusbar.notification.collection.GroupEntry 5 import com.android.systemui.statusbar.notification.collection.ListEntry 6 import com.android.systemui.statusbar.notification.collection.NotifPipeline 7 import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope 8 import com.android.systemui.statusbar.notification.collection.render.NotifGroupController 9 import javax.inject.Inject 10 11 /** A small coordinator which calculates, stores, and applies the untruncated child count. */ 12 @CoordinatorScope 13 class GroupCountCoordinator @Inject constructor() : Coordinator { 14 private val untruncatedChildCounts = ArrayMap<GroupEntry, Int>() 15 16 override fun attach(pipeline: NotifPipeline) { 17 pipeline.addOnBeforeFinalizeFilterListener(::onBeforeFinalizeFilter) 18 pipeline.addOnAfterRenderGroupListener(::onAfterRenderGroup) 19 } 20 21 private fun onBeforeFinalizeFilter(entries: List<ListEntry>) { 22 // save untruncated child counts to our internal map 23 untruncatedChildCounts.clear() 24 entries.asSequence().filterIsInstance<GroupEntry>().forEach { groupEntry -> 25 untruncatedChildCounts[groupEntry] = groupEntry.children.size 26 } 27 } 28 29 private fun onAfterRenderGroup(group: GroupEntry, controller: NotifGroupController) { 30 // find the untruncated child count for a group and apply it to the controller 31 val count = untruncatedChildCounts[group] 32 checkNotNull(count) { "No untruncated child count for group: ${group.key}" } 33 controller.setUntruncatedChildCount(count) 34 } 35 }