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 #include "ui/app_list/views/apps_grid_view.h" | 5 #include "ui/app_list/views/apps_grid_view.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <set> | 8 #include <set> |
9 #include <string> | 9 #include <string> |
10 | 10 |
11 #include "base/guid.h" | 11 #include "base/guid.h" |
12 #include "content/public/browser/web_contents.h" | 12 #include "content/public/browser/web_contents.h" |
13 #include "ui/app_list/app_list_constants.h" | 13 #include "ui/app_list/app_list_constants.h" |
14 #include "ui/app_list/app_list_folder_item.h" | 14 #include "ui/app_list/app_list_folder_item.h" |
15 #include "ui/app_list/app_list_item.h" | 15 #include "ui/app_list/app_list_item.h" |
16 #include "ui/app_list/app_list_switches.h" | 16 #include "ui/app_list/app_list_switches.h" |
17 #include "ui/app_list/pagination_model.h" | 17 #include "ui/app_list/pagination_model.h" |
18 #include "ui/app_list/views/app_list_drag_and_drop_host.h" | 18 #include "ui/app_list/views/app_list_drag_and_drop_host.h" |
19 #include "ui/app_list/views/app_list_folder_view.h" | 19 //#include "ui/app_list/views/app_list_folder_view.h" |
20 #include "ui/app_list/views/app_list_item_view.h" | 20 #include "ui/app_list/views/app_list_item_view.h" |
21 #include "ui/app_list/views/apps_grid_view_delegate.h" | 21 #include "ui/app_list/views/apps_grid_view_delegate.h" |
| 22 #include "ui/app_list/views/apps_grid_view_folder_delegate.h" |
22 #include "ui/app_list/views/page_switcher.h" | 23 #include "ui/app_list/views/page_switcher.h" |
23 #include "ui/app_list/views/pulsing_block_view.h" | 24 //#include "ui/app_list/views/pulsing_block_view.h" |
24 #include "ui/app_list/views/top_icon_animation_view.h" | 25 #include "ui/app_list/views/top_icon_animation_view.h" |
25 #include "ui/compositor/scoped_layer_animation_settings.h" | 26 #include "ui/compositor/scoped_layer_animation_settings.h" |
26 #include "ui/events/event.h" | 27 #include "ui/events/event.h" |
27 #include "ui/gfx/animation/animation.h" | 28 #include "ui/gfx/animation/animation.h" |
28 #include "ui/views/border.h" | 29 #include "ui/views/border.h" |
29 #include "ui/views/controls/webview/webview.h" | 30 #include "ui/views/controls/webview/webview.h" |
30 #include "ui/views/view_model_utils.h" | 31 #include "ui/views/view_model_utils.h" |
31 #include "ui/views/widget/widget.h" | 32 #include "ui/views/widget/widget.h" |
32 | 33 |
33 #if defined(USE_AURA) | 34 #if defined(USE_AURA) |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
304 gfx::Point drag_view_offset_; | 305 gfx::Point drag_view_offset_; |
305 bool has_shortcut_path_; | 306 bool has_shortcut_path_; |
306 base::FilePath shortcut_path_; | 307 base::FilePath shortcut_path_; |
307 bool running_; | 308 bool running_; |
308 bool canceled_; | 309 bool canceled_; |
309 | 310 |
310 DISALLOW_COPY_AND_ASSIGN(SynchronousDrag); | 311 DISALLOW_COPY_AND_ASSIGN(SynchronousDrag); |
311 }; | 312 }; |
312 #endif // defined(OS_WIN) | 313 #endif // defined(OS_WIN) |
313 | 314 |
| 315 const char AppsGridView::kViewClassName[] = "AppsGridView"; |
| 316 |
314 AppsGridView::AppsGridView(AppsGridViewDelegate* delegate, | 317 AppsGridView::AppsGridView(AppsGridViewDelegate* delegate, |
315 PaginationModel* pagination_model) | 318 PaginationModel* pagination_model) |
316 : model_(NULL), | 319 : model_(NULL), |
317 item_list_(NULL), | 320 item_list_(NULL), |
318 delegate_(delegate), | 321 delegate_(delegate), |
319 folder_delegate_(NULL), | 322 folder_delegate_(NULL), |
320 pagination_model_(pagination_model), | 323 pagination_model_(pagination_model), |
321 page_switcher_view_(new PageSwitcher(pagination_model)), | 324 page_switcher_view_(new PageSwitcher(pagination_model)), |
322 cols_(0), | 325 cols_(0), |
323 rows_per_page_(0), | 326 rows_per_page_(0), |
324 selected_view_(NULL), | 327 selected_view_(NULL), |
325 drag_view_(NULL), | 328 drag_view_(NULL), |
326 drag_start_page_(-1), | 329 drag_start_page_(-1), |
327 drag_pointer_(NONE), | 330 drag_pointer_(NONE), |
328 drop_attempt_(DROP_FOR_NONE), | 331 drop_attempt_(DROP_FOR_NONE), |
329 drag_and_drop_host_(NULL), | 332 drag_and_drop_host_(NULL), |
330 forward_events_to_drag_and_drop_host_(false), | 333 forward_events_to_drag_and_drop_host_(false), |
331 page_flip_target_(-1), | 334 page_flip_target_(-1), |
332 page_flip_delay_in_ms_(kPageFlipDelayInMs), | 335 page_flip_delay_in_ms_(kPageFlipDelayInMs), |
333 bounds_animator_(this), | 336 bounds_animator_(this), |
334 activated_item_view_(NULL), | 337 activated_item_view_(NULL), |
335 dragging_for_reparent_item_(false) { | 338 dragging_for_reparent_item_(false) { |
| 339 #if defined(USE_AURA) |
336 SetPaintToLayer(true); | 340 SetPaintToLayer(true); |
| 341 #endif |
337 SetFillsBoundsOpaquely(false); | 342 SetFillsBoundsOpaquely(false); |
338 | 343 |
339 pagination_model_->AddObserver(this); | 344 pagination_model_->AddObserver(this); |
340 AddChildView(page_switcher_view_); | 345 AddChildView(page_switcher_view_); |
341 } | 346 } |
342 | 347 |
343 AppsGridView::~AppsGridView() { | 348 AppsGridView::~AppsGridView() { |
344 // Coming here |drag_view_| should already be canceled since otherwise the | 349 // Coming here |drag_view_| should already be canceled since otherwise the |
345 // drag would disappear after the app list got animated away and closed, | 350 // drag would disappear after the app list got animated away and closed, |
346 // which would look odd. | 351 // which would look odd. |
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
764 Layout(); | 769 Layout(); |
765 int start = std::max(0, (page_index - kPrerenderPages) * tiles_per_page()); | 770 int start = std::max(0, (page_index - kPrerenderPages) * tiles_per_page()); |
766 int end = std::min(view_model_.view_size(), | 771 int end = std::min(view_model_.view_size(), |
767 (page_index + 1 + kPrerenderPages) * tiles_per_page()); | 772 (page_index + 1 + kPrerenderPages) * tiles_per_page()); |
768 for (int i = start; i < end; i++) { | 773 for (int i = start; i < end; i++) { |
769 AppListItemView* v = static_cast<AppListItemView*>(view_model_.view_at(i)); | 774 AppListItemView* v = static_cast<AppListItemView*>(view_model_.view_at(i)); |
770 v->Prerender(); | 775 v->Prerender(); |
771 } | 776 } |
772 } | 777 } |
773 | 778 |
| 779 const char* AppsGridView::GetClassName() const { |
| 780 return kViewClassName; |
| 781 } |
| 782 |
774 gfx::Size AppsGridView::GetPreferredSize() { | 783 gfx::Size AppsGridView::GetPreferredSize() { |
775 const gfx::Insets insets(GetInsets()); | 784 const gfx::Insets insets(GetInsets()); |
776 const gfx::Size tile_size = gfx::Size(kPreferredTileWidth, | 785 const gfx::Size tile_size = gfx::Size(kPreferredTileWidth, |
777 kPreferredTileHeight); | 786 kPreferredTileHeight); |
778 const int page_switcher_height = | 787 const int page_switcher_height = |
779 page_switcher_view_->GetPreferredSize().height(); | 788 page_switcher_view_->GetPreferredSize().height(); |
780 return gfx::Size( | 789 return gfx::Size( |
781 tile_size.width() * cols_ + insets.width(), | 790 tile_size.width() * cols_ + insets.width(), |
782 tile_size.height() * rows_per_page_ + | 791 tile_size.height() * rows_per_page_ + |
783 page_switcher_height + insets.height()); | 792 page_switcher_height + insets.height()); |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
874 | 883 |
875 bounds_animator_.StopAnimatingView(details.child); | 884 bounds_animator_.StopAnimatingView(details.child); |
876 } | 885 } |
877 } | 886 } |
878 | 887 |
879 void AppsGridView::Update() { | 888 void AppsGridView::Update() { |
880 DCHECK(!selected_view_ && !drag_view_); | 889 DCHECK(!selected_view_ && !drag_view_); |
881 view_model_.Clear(); | 890 view_model_.Clear(); |
882 if (!item_list_ || !item_list_->item_count()) | 891 if (!item_list_ || !item_list_->item_count()) |
883 return; | 892 return; |
| 893 DLOG(INFO) << "AppsGridView::Update(n=" << item_list_->item_count() << ")"; |
884 for (size_t i = 0; i < item_list_->item_count(); ++i) { | 894 for (size_t i = 0; i < item_list_->item_count(); ++i) { |
885 views::View* view = CreateViewForItemAtIndex(i); | 895 views::View* view = CreateViewForItemAtIndex(i); |
886 view_model_.Add(view, i); | 896 view_model_.Add(view, i); |
887 AddChildView(view); | 897 AddChildView(view); |
888 } | 898 } |
889 UpdatePaging(); | 899 UpdatePaging(); |
890 UpdatePulsingBlockViews(); | 900 UpdatePulsingBlockViews(); |
891 Layout(); | 901 Layout(); |
892 SchedulePaint(); | 902 SchedulePaint(); |
893 } | 903 } |
(...skipping 16 matching lines...) Expand all Loading... |
910 if (pulsing_blocks_model_.view_size() == desired) | 920 if (pulsing_blocks_model_.view_size() == desired) |
911 return; | 921 return; |
912 | 922 |
913 while (pulsing_blocks_model_.view_size() > desired) { | 923 while (pulsing_blocks_model_.view_size() > desired) { |
914 views::View* view = pulsing_blocks_model_.view_at(0); | 924 views::View* view = pulsing_blocks_model_.view_at(0); |
915 pulsing_blocks_model_.Remove(0); | 925 pulsing_blocks_model_.Remove(0); |
916 delete view; | 926 delete view; |
917 } | 927 } |
918 | 928 |
919 while (pulsing_blocks_model_.view_size() < desired) { | 929 while (pulsing_blocks_model_.view_size() < desired) { |
| 930 NOTREACHED(); |
| 931 #ifdef FIXME |
920 views::View* view = new PulsingBlockView( | 932 views::View* view = new PulsingBlockView( |
921 gfx::Size(kPreferredTileWidth, kPreferredTileHeight), true); | 933 gfx::Size(kPreferredTileWidth, kPreferredTileHeight), true); |
922 pulsing_blocks_model_.Add(view, 0); | 934 pulsing_blocks_model_.Add(view, 0); |
923 AddChildView(view); | 935 AddChildView(view); |
| 936 #endif |
924 } | 937 } |
925 } | 938 } |
926 | 939 |
927 views::View* AppsGridView::CreateViewForItemAtIndex(size_t index) { | 940 views::View* AppsGridView::CreateViewForItemAtIndex(size_t index) { |
928 // The drag_view_ might be pending for deletion, therefore view_model_ | 941 // The drag_view_ might be pending for deletion, therefore view_model_ |
929 // may have one more item than item_list_. | 942 // may have one more item than item_list_. |
930 DCHECK_LE(index, item_list_->item_count()); | 943 DCHECK_LE(index, item_list_->item_count()); |
931 AppListItemView* view = new AppListItemView(this, | 944 AppListItemView* view = new AppListItemView(this, |
932 item_list_->item_at(index)); | 945 item_list_->item_at(index)); |
933 view->SetIconSize(icon_size_); | 946 view->SetIconSize(icon_size_); |
(...skipping 1152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2086 void AppsGridView::SetAsFolderDroppingTarget(const Index& target_index, | 2099 void AppsGridView::SetAsFolderDroppingTarget(const Index& target_index, |
2087 bool is_target_folder) { | 2100 bool is_target_folder) { |
2088 AppListItemView* target_view = | 2101 AppListItemView* target_view = |
2089 static_cast<AppListItemView*>( | 2102 static_cast<AppListItemView*>( |
2090 GetViewAtSlotOnCurrentPage(target_index.slot)); | 2103 GetViewAtSlotOnCurrentPage(target_index.slot)); |
2091 if (target_view) | 2104 if (target_view) |
2092 target_view->SetAsAttemptedFolderTarget(is_target_folder); | 2105 target_view->SetAsAttemptedFolderTarget(is_target_folder); |
2093 } | 2106 } |
2094 | 2107 |
2095 } // namespace app_list | 2108 } // namespace app_list |
OLD | NEW |