OSDN Git Service

Merge "docs: Add documentation for equals() method" into qt-dev am: 732a127636
[android-x86/frameworks-base.git] / packages / SystemUI / src / com / android / systemui / statusbar / notification / stack / NotificationListContainer.java
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.notification.stack;
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 import com.android.systemui.statusbar.notification.VisibilityLocationProvider;
26 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
27 import com.android.systemui.statusbar.notification.logging.NotificationLogger;
28 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
29 import com.android.systemui.statusbar.notification.row.ExpandableView;
30
31 /**
32  * Interface representing the entity that contains notifications. It can have
33  * notification views added and removed from it, and will manage displaying them to the user.
34  */
35 public interface NotificationListContainer extends ExpandableView.OnHeightChangedListener,
36         VisibilityLocationProvider {
37
38     /**
39      * Called when a child is being transferred.
40      *
41      * @param childTransferInProgress whether child transfer is in progress
42      */
43     void setChildTransferInProgress(boolean childTransferInProgress);
44
45     /**
46      * Change the position of child to a new location
47      *  @param child the view to change the position for
48      * @param newIndex the new index
49      */
50     void changeViewPosition(ExpandableView child, int newIndex);
51
52     /**
53      * Called when a child was added to a group.
54      *
55      * @param row row of the group child that was added
56      */
57     void notifyGroupChildAdded(ExpandableView row);
58
59     /**
60      * Called when a child was removed from a group.
61      *  @param row row of the child that was removed
62      * @param childrenContainer ViewGroup of the group that the child was removed from
63      */
64     void notifyGroupChildRemoved(ExpandableView row, ViewGroup childrenContainer);
65
66     /**
67      * Generate an animation for an added child view.
68      *  @param child The view to be added.
69      * @param fromMoreCard Whether this add is coming from the "more" card on lockscreen.
70      */
71     void generateAddAnimation(ExpandableView child, boolean fromMoreCard);
72
73     /**
74      * Generate a child order changed event.
75      */
76     void generateChildOrderChangedEvent();
77
78     /**
79      * Returns the number of children in the NotificationListContainer.
80      *
81      * @return the number of children in the NotificationListContainer
82      */
83     int getContainerChildCount();
84
85     /**
86      * Gets the ith child in the NotificationListContainer.
87      *
88      * @param i ith child to get
89      * @return the ith child in the list container
90      */
91     View getContainerChildAt(int i);
92
93     /**
94      * Remove a view from the container
95      *
96      * @param v view to remove
97      */
98     void removeContainerView(View v);
99
100     /**
101      * Add a view to the container
102      *
103      * @param v view to add
104      */
105     void addContainerView(View v);
106
107     /**
108      * Sets the maximum number of notifications to display.
109      *
110      * @param maxNotifications max number of notifications to display
111      */
112     void setMaxDisplayedNotifications(int maxNotifications);
113
114     /**
115      * Get the view parent for a notification entry. For example, NotificationStackScrollLayout.
116      *
117      * @param entry entry to get the view parent for
118      * @return the view parent for entry
119      */
120     ViewGroup getViewParentForNotification(NotificationEntry entry);
121
122     /**
123      * Resets the currently exposed menu view.
124      *
125      * @param animate whether to animate the closing/change of menu view
126      * @param force reset the menu view even if it looks like it is already reset
127      */
128     void resetExposedMenuView(boolean animate, boolean force);
129
130     /**
131      * Returns the NotificationSwipeActionHelper for the NotificationListContainer.
132      *
133      * @return swipe action helper for the list container
134      */
135     NotificationSwipeActionHelper getSwipeActionHelper();
136
137     /**
138      * Called when a notification is removed from the shade. This cleans up the state for a
139      * given view.
140      *
141      * @param entry the entry whose view's view state needs to be cleaned up (say that 5 times fast)
142      */
143     void cleanUpViewStateForEntry(NotificationEntry entry);
144
145
146     /**
147      * Sets a listener to listen for changes in notification locations.
148      *
149      * @param listener listener to set
150      */
151     void setChildLocationsChangedListener(
152             NotificationLogger.OnChildLocationsChangedListener listener);
153
154     /**
155      * Called when an update to the notification view hierarchy is completed.
156      */
157     default void onNotificationViewUpdateFinished() {}
158
159     /**
160      * Returns true if there are pulsing notifications.
161      *
162      * @return true if has pulsing notifications
163      */
164     boolean hasPulsingNotifications();
165
166     /**
167      * Apply parameters of the expand animation to the layout
168      */
169     default void applyExpandAnimationParams(ExpandAnimationParameters params) {}
170
171     default void setExpandingNotification(ExpandableNotificationRow row) {}
172
173     /**
174      * Bind a newly created row.
175      *
176      * @param row The notification to bind.
177      */
178     default void bindRow(ExpandableNotificationRow row) {}
179
180     /**
181      * Does this list contain a given view. True by default is fine, since we only ask this if the
182      * view has a parent.
183      */
184     default boolean containsView(View v) {
185         return true;
186     }
187
188     default void setWillExpand(boolean willExpand) {};
189 }