• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2017 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 static com.android.systemui.statusbar.notification.ActivityLaunchAnimator.ExpandAnimationParameters;
20 
21 import android.view.View;
22 import android.view.ViewGroup;
23 
24 import com.android.systemui.plugins.statusbar.NotificationSwipeActionHelper;
25 
26 /**
27  * Interface representing the entity that contains notifications. It can have
28  * notification views added and removed from it, and will manage displaying them to the user.
29  */
30 public interface NotificationListContainer {
31 
32     /**
33      * Called when a child is being transferred.
34      *
35      * @param childTransferInProgress whether child transfer is in progress
36      */
setChildTransferInProgress(boolean childTransferInProgress)37     void setChildTransferInProgress(boolean childTransferInProgress);
38 
39     /**
40      * Change the position of child to a new location
41      *
42      * @param child the view to change the position for
43      * @param newIndex the new index
44      */
changeViewPosition(View child, int newIndex)45     void changeViewPosition(View child, int newIndex);
46 
47     /**
48      * Called when a child was added to a group.
49      *
50      * @param row row of the group child that was added
51      */
notifyGroupChildAdded(View row)52     void notifyGroupChildAdded(View row);
53 
54     /**
55      * Called when a child was removed from a group.
56      *
57      * @param row row of the child that was removed
58      * @param childrenContainer ViewGroup of the group that the child was removed from
59      */
notifyGroupChildRemoved(View row, ViewGroup childrenContainer)60     void notifyGroupChildRemoved(View row, ViewGroup childrenContainer);
61 
62     /**
63      * Generate an animation for an added child view.
64      *
65      * @param child The view to be added.
66      * @param fromMoreCard Whether this add is coming from the "more" card on lockscreen.
67      */
generateAddAnimation(View child, boolean fromMoreCard)68     void generateAddAnimation(View child, boolean fromMoreCard);
69 
70     /**
71      * Generate a child order changed event.
72      */
generateChildOrderChangedEvent()73     void generateChildOrderChangedEvent();
74 
75     /**
76      * Returns the number of children in the NotificationListContainer.
77      *
78      * @return the number of children in the NotificationListContainer
79      */
getContainerChildCount()80     int getContainerChildCount();
81 
82     /**
83      * Gets the ith child in the NotificationListContainer.
84      *
85      * @param i ith child to get
86      * @return the ith child in the list container
87      */
getContainerChildAt(int i)88     View getContainerChildAt(int i);
89 
90     /**
91      * Remove a view from the container
92      *
93      * @param v view to remove
94      */
removeContainerView(View v)95     void removeContainerView(View v);
96 
97     /**
98      * Add a view to the container
99      *
100      * @param v view to add
101      */
addContainerView(View v)102     void addContainerView(View v);
103 
104     /**
105      * Sets the maximum number of notifications to display.
106      *
107      * @param maxNotifications max number of notifications to display
108      */
setMaxDisplayedNotifications(int maxNotifications)109     void setMaxDisplayedNotifications(int maxNotifications);
110 
111     /**
112      * Handle snapping a non-dismissable row back if the user tried to dismiss it.
113      *
114      * @param row row to snap back
115      */
snapViewIfNeeded(ExpandableNotificationRow row)116     void snapViewIfNeeded(ExpandableNotificationRow row);
117 
118     /**
119      * Get the view parent for a notification entry. For example, NotificationStackScrollLayout.
120      *
121      * @param entry entry to get the view parent for
122      * @return the view parent for entry
123      */
getViewParentForNotification(NotificationData.Entry entry)124     ViewGroup getViewParentForNotification(NotificationData.Entry entry);
125 
126     /**
127      * Called when the height of an expandable view changes.
128      *
129      * @param view view whose height changed
130      * @param animate whether this change should be animated
131      */
onHeightChanged(ExpandableView view, boolean animate)132     void onHeightChanged(ExpandableView view, boolean animate);
133 
134     /**
135      * Resets the currently exposed menu view.
136      *
137      * @param animate whether to animate the closing/change of menu view
138      * @param force reset the menu view even if it looks like it is already reset
139      */
resetExposedMenuView(boolean animate, boolean force)140     void resetExposedMenuView(boolean animate, boolean force);
141 
142     /**
143      * Returns the NotificationSwipeActionHelper for the NotificationListContainer.
144      *
145      * @return swipe action helper for the list container
146      */
getSwipeActionHelper()147     NotificationSwipeActionHelper getSwipeActionHelper();
148 
149     /**
150      * Called when a notification is removed from the shade. This cleans up the state for a
151      * given view.
152      *
153      * @param view view to clean up view state for
154      */
cleanUpViewState(View view)155     void cleanUpViewState(View view);
156 
157     /**
158      * Returns whether an ExpandableNotificationRow is in a visible location or not.
159      *
160      * @param row
161      * @return true if row is in a visible location
162      */
isInVisibleLocation(ExpandableNotificationRow row)163     boolean isInVisibleLocation(ExpandableNotificationRow row);
164 
165     /**
166      * Sets a listener to listen for changes in notification locations.
167      *
168      * @param listener listener to set
169      */
setChildLocationsChangedListener( NotificationLogger.OnChildLocationsChangedListener listener)170     void setChildLocationsChangedListener(
171             NotificationLogger.OnChildLocationsChangedListener listener);
172 
173     /**
174      * Called when an update to the notification view hierarchy is completed.
175      */
onNotificationViewUpdateFinished()176     default void onNotificationViewUpdateFinished() {}
177 
178     /**
179      * Returns true if there are pulsing notifications.
180      *
181      * @return true if has pulsing notifications
182      */
hasPulsingNotifications()183     boolean hasPulsingNotifications();
184 
185     /**
186      * Apply parameters of the expand animation to the layout
187      */
applyExpandAnimationParams(ExpandAnimationParameters params)188     default void applyExpandAnimationParams(ExpandAnimationParameters params) {}
189 
setExpandingNotification(ExpandableNotificationRow row)190     default void setExpandingNotification(ExpandableNotificationRow row) {}
191 
192     /**
193      * Bind a newly created row.
194      *
195      * @param row The notification to bind.
196      */
bindRow(ExpandableNotificationRow row)197     default void bindRow(ExpandableNotificationRow row) {}
198 }
199