• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.systemui.statusbar.notification.icon.ui.viewbinder
18 
19 import com.android.systemui.common.ui.ConfigurationState
20 import com.android.systemui.shade.ShadeDisplayAware
21 import com.android.systemui.statusbar.notification.collection.NotifCollection
22 import com.android.systemui.statusbar.notification.icon.ui.viewbinder.NotificationIconContainerViewBinder.IconViewStore
23 import com.android.systemui.statusbar.notification.icon.ui.viewbinder.NotificationIconContainerViewBinder.bindIcons
24 import com.android.systemui.statusbar.notification.icon.ui.viewmodel.NotificationIconContainerShelfViewModel
25 import com.android.systemui.statusbar.phone.NotificationIconContainer
26 import com.android.systemui.statusbar.ui.SystemBarUtilsState
27 import javax.inject.Inject
28 
29 /** Binds a [NotificationIconContainer] to a [NotificationIconContainerShelfViewModel]. */
30 class NotificationIconContainerShelfViewBinder
31 @Inject
32 constructor(
33     private val viewModel: NotificationIconContainerShelfViewModel,
34     @ShadeDisplayAware private val configuration: ConfigurationState,
35     private val systemBarUtilsState: SystemBarUtilsState,
36     private val failureTracker: StatusBarIconViewBindingFailureTracker,
37     private val viewStore: ShelfNotificationIconViewStore,
38 ) {
bindnull39     suspend fun bind(view: NotificationIconContainer) {
40         viewModel.icons.bindIcons(
41             logTag = "shelf",
42             view = view,
43             configuration = configuration,
44             systemBarUtilsState = systemBarUtilsState,
45             notifyBindingFailures = { failureTracker.shelfFailures = it },
46             viewStore = viewStore,
47         )
48     }
49 }
50 
51 /** [IconViewStore] for the [com.android.systemui.statusbar.NotificationShelf] */
52 class ShelfNotificationIconViewStore @Inject constructor(notifCollection: NotifCollection) :
<lambda>null53     IconViewStore by (notifCollection.iconViewStoreBy { it.shelfIcon })
54