OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef UI_APP_LIST_VIEWS_APPS_GRID_VIEW_H_ | 5 #ifndef UI_APP_LIST_VIEWS_APPS_GRID_VIEW_H_ |
6 #define UI_APP_LIST_VIEWS_APPS_GRID_VIEW_H_ | 6 #define UI_APP_LIST_VIEWS_APPS_GRID_VIEW_H_ |
7 | 7 |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
10 #include "base/timer.h" | 10 #include "base/timer.h" |
(...skipping 10 matching lines...) Expand all Loading... |
21 namespace views { | 21 namespace views { |
22 class ButtonListener; | 22 class ButtonListener; |
23 } | 23 } |
24 | 24 |
25 namespace app_list { | 25 namespace app_list { |
26 | 26 |
27 namespace test { | 27 namespace test { |
28 class AppsGridViewTestApi; | 28 class AppsGridViewTestApi; |
29 } | 29 } |
30 | 30 |
| 31 class ApplicationDragAndDropHost; |
31 class AppListItemView; | 32 class AppListItemView; |
32 class AppsGridViewDelegate; | 33 class AppsGridViewDelegate; |
33 class PageSwitcher; | 34 class PageSwitcher; |
34 class PaginationModel; | 35 class PaginationModel; |
35 | 36 |
36 // AppsGridView displays a grid for AppListModel::Apps sub model. | 37 // AppsGridView displays a grid for AppListModel::Apps sub model. |
37 class APP_LIST_EXPORT AppsGridView : public views::View, | 38 class APP_LIST_EXPORT AppsGridView : public views::View, |
38 public views::ButtonListener, | 39 public views::ButtonListener, |
39 public ui::ListModelObserver, | 40 public ui::ListModelObserver, |
40 public PaginationModelObserver, | 41 public PaginationModelObserver, |
(...skipping 17 matching lines...) Expand all Loading... |
58 void SetModel(AppListModel* model); | 59 void SetModel(AppListModel* model); |
59 | 60 |
60 void SetSelectedView(views::View* view); | 61 void SetSelectedView(views::View* view); |
61 void ClearSelectedView(views::View* view); | 62 void ClearSelectedView(views::View* view); |
62 bool IsSelectedView(const views::View* view) const; | 63 bool IsSelectedView(const views::View* view) const; |
63 | 64 |
64 // Ensures the view is visible. Note that if there is a running page | 65 // Ensures the view is visible. Note that if there is a running page |
65 // transition, this does nothing. | 66 // transition, this does nothing. |
66 void EnsureViewVisible(const views::View* view); | 67 void EnsureViewVisible(const views::View* view); |
67 | 68 |
68 void InitiateDrag(views::View* view, | 69 void InitiateDrag(AppListItemView* view, |
69 Pointer pointer, | 70 Pointer pointer, |
70 const ui::LocatedEvent& event); | 71 const ui::LocatedEvent& event); |
71 void UpdateDrag(views::View* view, | 72 void UpdateDrag(AppListItemView* view, |
72 Pointer pointer, | 73 Pointer pointer, |
73 const ui::LocatedEvent& event); | 74 const ui::LocatedEvent& event); |
74 void EndDrag(bool cancel); | 75 void EndDrag(bool cancel); |
75 bool IsDraggedView(const views::View* view) const; | 76 bool IsDraggedView(const views::View* view) const; |
76 | 77 |
| 78 // Set the drag and drop host for application links. |
| 79 void SetDragAndDropHostOfCurrentAppList( |
| 80 ApplicationDragAndDropHost* drag_and_drop_host); |
| 81 |
77 // Prerenders the icons on and around |page_index|. | 82 // Prerenders the icons on and around |page_index|. |
78 void Prerender(int page_index); | 83 void Prerender(int page_index); |
79 | 84 |
80 bool has_dragged_view() const { return drag_view_ != NULL; } | 85 bool has_dragged_view() const { return drag_view_ != NULL; } |
81 bool dragging() const { return drag_pointer_ != NONE; } | 86 bool dragging() const { return drag_pointer_ != NONE; } |
82 | 87 |
83 // Overridden from views::View: | 88 // Overridden from views::View: |
84 virtual gfx::Size GetPreferredSize() OVERRIDE; | 89 virtual gfx::Size GetPreferredSize() OVERRIDE; |
85 virtual void Layout() OVERRIDE; | 90 virtual void Layout() OVERRIDE; |
86 virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE; | 91 virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE; |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 void ExtractDragLocation(const ui::LocatedEvent& event, | 155 void ExtractDragLocation(const ui::LocatedEvent& event, |
151 gfx::Point* drag_point); | 156 gfx::Point* drag_point); |
152 | 157 |
153 // Calculates |drop_target_| based on |drag_point|. |drag_point| is in the | 158 // Calculates |drop_target_| based on |drag_point|. |drag_point| is in the |
154 // grid view's coordinates. When |use_page_button_hovering| is true and | 159 // grid view's coordinates. When |use_page_button_hovering| is true and |
155 // |drag_point| is hovering on a page button, use the last slot on that page | 160 // |drag_point| is hovering on a page button, use the last slot on that page |
156 // as drop target. | 161 // as drop target. |
157 void CalculateDropTarget(const gfx::Point& drag_point, | 162 void CalculateDropTarget(const gfx::Point& drag_point, |
158 bool use_page_button_hovering); | 163 bool use_page_button_hovering); |
159 | 164 |
| 165 // Dispatch the drag and drop update event to the dnd host (if needed). |
| 166 void DispatchDragEventToDragAndDropHost(const ui::LocatedEvent& event); |
| 167 |
160 // Starts the page flip timer if |drag_point| is in left/right side page flip | 168 // Starts the page flip timer if |drag_point| is in left/right side page flip |
161 // zone or is over page switcher. | 169 // zone or is over page switcher. |
162 void MaybeStartPageFlipTimer(const gfx::Point& drag_point); | 170 void MaybeStartPageFlipTimer(const gfx::Point& drag_point); |
163 | 171 |
164 // Invoked when |page_flip_timer_| fires. | 172 // Invoked when |page_flip_timer_| fires. |
165 void OnPageFlipTimer(); | 173 void OnPageFlipTimer(); |
166 | 174 |
167 // Updates |model_| to move item represented by |item_view| to |target| slot. | 175 // Updates |model_| to move item represented by |item_view| to |target| slot. |
168 void MoveItemInModel(views::View* item_view, const Index& target); | 176 void MoveItemInModel(views::View* item_view, const Index& target); |
169 | 177 |
(...skipping 25 matching lines...) Expand all Loading... |
195 int rows_per_page_; | 203 int rows_per_page_; |
196 | 204 |
197 // Tracks app item views. There is a view per item in |model_|. | 205 // Tracks app item views. There is a view per item in |model_|. |
198 views::ViewModel view_model_; | 206 views::ViewModel view_model_; |
199 | 207 |
200 // Tracks pulsing block views. | 208 // Tracks pulsing block views. |
201 views::ViewModel pulsing_blocks_model_; | 209 views::ViewModel pulsing_blocks_model_; |
202 | 210 |
203 views::View* selected_view_; | 211 views::View* selected_view_; |
204 | 212 |
205 views::View* drag_view_; | 213 AppListItemView* drag_view_; |
206 gfx::Point drag_start_; | 214 gfx::Point drag_start_; |
207 Pointer drag_pointer_; | 215 Pointer drag_pointer_; |
208 Index drop_target_; | 216 Index drop_target_; |
209 | 217 |
| 218 // An application target drag and drop host which accepts dnd operations. |
| 219 ApplicationDragAndDropHost* drag_and_drop_host_; |
| 220 |
| 221 // The drag operation is currently inside the dnd host and events get |
| 222 // forwarded. |
| 223 bool forward_events_to_drag_and_drop_host_; |
| 224 |
210 // Last mouse drag location in this view's coordinates. | 225 // Last mouse drag location in this view's coordinates. |
211 gfx::Point last_drag_point_; | 226 gfx::Point last_drag_point_; |
212 | 227 |
213 // Timer to auto flip page when dragging an item near the left/right edges. | 228 // Timer to auto flip page when dragging an item near the left/right edges. |
214 base::OneShotTimer<AppsGridView> page_flip_timer_; | 229 base::OneShotTimer<AppsGridView> page_flip_timer_; |
215 | 230 |
216 // Target page to switch to when |page_flip_timer_| fires. | 231 // Target page to switch to when |page_flip_timer_| fires. |
217 int page_flip_target_; | 232 int page_flip_target_; |
218 | 233 |
219 // Delay in milliseconds of when |page_flip_timer_| should fire after user | 234 // Delay in milliseconds of when |page_flip_timer_| should fire after user |
220 // drags an item near the edges. | 235 // drags an item near the edges. |
221 int page_flip_delay_in_ms_; | 236 int page_flip_delay_in_ms_; |
222 | 237 |
223 views::BoundsAnimator bounds_animator_; | 238 views::BoundsAnimator bounds_animator_; |
224 | 239 |
225 DISALLOW_COPY_AND_ASSIGN(AppsGridView); | 240 DISALLOW_COPY_AND_ASSIGN(AppsGridView); |
226 }; | 241 }; |
227 | 242 |
228 } // namespace app_list | 243 } // namespace app_list |
229 | 244 |
230 #endif // UI_APP_LIST_VIEWS_APPS_GRID_VIEW_H_ | 245 #endif // UI_APP_LIST_VIEWS_APPS_GRID_VIEW_H_ |
OLD | NEW |