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
18 
19 import android.view.View
20 import android.view.View.OnClickListener
21 import com.android.systemui.statusbar.notification.row.ExpandableView
22 import com.android.systemui.statusbar.notification.stack.AmbientState
23 import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout
24 import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
25 import com.android.systemui.statusbar.phone.NotificationIconContainer
26 
27 /** Controller interface for [NotificationShelf]. */
28 interface NotificationShelfController {
29     /** The [NotificationShelf] controlled by this Controller. */
30     val view: NotificationShelf
31 
32     /** @see ExpandableView.getIntrinsicHeight */
33     val intrinsicHeight: Int
34 
35     /** Container view for icons displayed in the shelf. */
36     val shelfIcons: NotificationIconContainer
37 
38     /** Whether or not the shelf can modify the color of notifications in the shade. */
39     fun canModifyColorOfNotifications(): Boolean
40 
41     /** Binds the shelf to the host [NotificationStackScrollLayout], via its Controller. */
42     fun bind(
43         ambientState: AmbientState,
44         notificationStackScrollLayoutController: NotificationStackScrollLayoutController,
45     )
46 
47     /** @see View.setOnClickListener */
48     fun setOnClickListener(listener: OnClickListener)
49 }
50