Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(154)

Side by Side Diff: ui/app_list/views/apps_grid_view.cc

Issue 231883003: [stash] 20140404-crbug-312961-mac-views-bridge-C-wholegrid Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/app_list/views/apps_grid_view.h ('k') | ui/app_list/views/contents_switcher_view.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "base/message_loop/message_loop.h" 12 #include "base/message_loop/message_loop.h"
13 #include "content/public/browser/web_contents.h" 13 #include "content/public/browser/web_contents.h"
14 #include "ui/app_list/app_list_constants.h" 14 #include "ui/app_list/app_list_constants.h"
15 #include "ui/app_list/app_list_folder_item.h" 15 #include "ui/app_list/app_list_folder_item.h"
16 #include "ui/app_list/app_list_item.h" 16 #include "ui/app_list/app_list_item.h"
17 #include "ui/app_list/app_list_switches.h" 17 #include "ui/app_list/app_list_switches.h"
18 #include "ui/app_list/pagination_model.h" 18 #include "ui/app_list/pagination_model.h"
19 #include "ui/app_list/views/app_list_drag_and_drop_host.h" 19 #include "ui/app_list/views/app_list_drag_and_drop_host.h"
20 #include "ui/app_list/views/app_list_folder_view.h" 20 //#include "ui/app_list/views/app_list_folder_view.h"
21 #include "ui/app_list/views/app_list_item_view.h" 21 #include "ui/app_list/views/app_list_item_view.h"
22 #include "ui/app_list/views/apps_grid_view_delegate.h" 22 #include "ui/app_list/views/apps_grid_view_delegate.h"
23 #include "ui/app_list/views/apps_grid_view_folder_delegate.h"
23 #include "ui/app_list/views/page_switcher.h" 24 #include "ui/app_list/views/page_switcher.h"
24 #include "ui/app_list/views/pulsing_block_view.h" 25 //#include "ui/app_list/views/pulsing_block_view.h"
25 #include "ui/app_list/views/top_icon_animation_view.h" 26 #include "ui/app_list/views/top_icon_animation_view.h"
26 #include "ui/compositor/scoped_layer_animation_settings.h" 27 #include "ui/compositor/scoped_layer_animation_settings.h"
27 #include "ui/events/event.h" 28 #include "ui/events/event.h"
28 #include "ui/gfx/animation/animation.h" 29 #include "ui/gfx/animation/animation.h"
29 #include "ui/views/border.h" 30 #include "ui/views/border.h"
30 #include "ui/views/controls/webview/webview.h" 31 #include "ui/views/controls/webview/webview.h"
31 #include "ui/views/view_model_utils.h" 32 #include "ui/views/view_model_utils.h"
32 #include "ui/views/widget/widget.h" 33 #include "ui/views/widget/widget.h"
33 34
34 #if defined(USE_AURA) 35 #if defined(USE_AURA)
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 gfx::Point drag_view_offset_; 306 gfx::Point drag_view_offset_;
306 bool has_shortcut_path_; 307 bool has_shortcut_path_;
307 base::FilePath shortcut_path_; 308 base::FilePath shortcut_path_;
308 bool running_; 309 bool running_;
309 bool canceled_; 310 bool canceled_;
310 311
311 DISALLOW_COPY_AND_ASSIGN(SynchronousDrag); 312 DISALLOW_COPY_AND_ASSIGN(SynchronousDrag);
312 }; 313 };
313 #endif // defined(OS_WIN) 314 #endif // defined(OS_WIN)
314 315
316 const char AppsGridView::kViewClassName[] = "AppsGridView";
317
315 AppsGridView::AppsGridView(AppsGridViewDelegate* delegate, 318 AppsGridView::AppsGridView(AppsGridViewDelegate* delegate,
316 PaginationModel* pagination_model) 319 PaginationModel* pagination_model)
317 : model_(NULL), 320 : model_(NULL),
318 item_list_(NULL), 321 item_list_(NULL),
319 delegate_(delegate), 322 delegate_(delegate),
320 folder_delegate_(NULL), 323 folder_delegate_(NULL),
321 pagination_model_(pagination_model), 324 pagination_model_(pagination_model),
322 page_switcher_view_(new PageSwitcher(pagination_model)), 325 page_switcher_view_(new PageSwitcher(pagination_model)),
323 cols_(0), 326 cols_(0),
324 rows_per_page_(0), 327 rows_per_page_(0),
325 selected_view_(NULL), 328 selected_view_(NULL),
326 drag_view_(NULL), 329 drag_view_(NULL),
327 drag_start_page_(-1), 330 drag_start_page_(-1),
328 drag_pointer_(NONE), 331 drag_pointer_(NONE),
329 drop_attempt_(DROP_FOR_NONE), 332 drop_attempt_(DROP_FOR_NONE),
330 drag_and_drop_host_(NULL), 333 drag_and_drop_host_(NULL),
331 forward_events_to_drag_and_drop_host_(false), 334 forward_events_to_drag_and_drop_host_(false),
332 page_flip_target_(-1), 335 page_flip_target_(-1),
333 page_flip_delay_in_ms_(kPageFlipDelayInMs), 336 page_flip_delay_in_ms_(kPageFlipDelayInMs),
334 bounds_animator_(this), 337 bounds_animator_(this),
335 activated_item_view_(NULL), 338 activated_item_view_(NULL),
336 dragging_for_reparent_item_(false), 339 dragging_for_reparent_item_(false),
337 weak_factory_(this) { 340 weak_factory_(this) {
341 #if defined(USE_AURA)
338 SetPaintToLayer(true); 342 SetPaintToLayer(true);
343 #endif
339 SetFillsBoundsOpaquely(false); 344 SetFillsBoundsOpaquely(false);
340 345
341 pagination_model_->AddObserver(this); 346 pagination_model_->AddObserver(this);
342 AddChildView(page_switcher_view_); 347 AddChildView(page_switcher_view_);
343 } 348 }
344 349
345 AppsGridView::~AppsGridView() { 350 AppsGridView::~AppsGridView() {
346 // Coming here |drag_view_| should already be canceled since otherwise the 351 // Coming here |drag_view_| should already be canceled since otherwise the
347 // drag would disappear after the app list got animated away and closed, 352 // drag would disappear after the app list got animated away and closed,
348 // which would look odd. 353 // which would look odd.
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after
766 Layout(); 771 Layout();
767 int start = std::max(0, (page_index - kPrerenderPages) * tiles_per_page()); 772 int start = std::max(0, (page_index - kPrerenderPages) * tiles_per_page());
768 int end = std::min(view_model_.view_size(), 773 int end = std::min(view_model_.view_size(),
769 (page_index + 1 + kPrerenderPages) * tiles_per_page()); 774 (page_index + 1 + kPrerenderPages) * tiles_per_page());
770 for (int i = start; i < end; i++) { 775 for (int i = start; i < end; i++) {
771 AppListItemView* v = static_cast<AppListItemView*>(view_model_.view_at(i)); 776 AppListItemView* v = static_cast<AppListItemView*>(view_model_.view_at(i));
772 v->Prerender(); 777 v->Prerender();
773 } 778 }
774 } 779 }
775 780
781 const char* AppsGridView::GetClassName() const {
782 return kViewClassName;
783 }
784
776 gfx::Size AppsGridView::GetPreferredSize() { 785 gfx::Size AppsGridView::GetPreferredSize() {
777 const gfx::Insets insets(GetInsets()); 786 const gfx::Insets insets(GetInsets());
778 const gfx::Size tile_size = gfx::Size(kPreferredTileWidth, 787 const gfx::Size tile_size = gfx::Size(kPreferredTileWidth,
779 kPreferredTileHeight); 788 kPreferredTileHeight);
780 const int page_switcher_height = 789 const int page_switcher_height =
781 page_switcher_view_->GetPreferredSize().height(); 790 page_switcher_view_->GetPreferredSize().height();
782 return gfx::Size( 791 return gfx::Size(
783 tile_size.width() * cols_ + insets.width(), 792 tile_size.width() * cols_ + insets.width(),
784 tile_size.height() * rows_per_page_ + 793 tile_size.height() * rows_per_page_ +
785 page_switcher_height + insets.height()); 794 page_switcher_height + insets.height());
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
876 885
877 bounds_animator_.StopAnimatingView(details.child); 886 bounds_animator_.StopAnimatingView(details.child);
878 } 887 }
879 } 888 }
880 889
881 void AppsGridView::Update() { 890 void AppsGridView::Update() {
882 DCHECK(!selected_view_ && !drag_view_); 891 DCHECK(!selected_view_ && !drag_view_);
883 view_model_.Clear(); 892 view_model_.Clear();
884 if (!item_list_ || !item_list_->item_count()) 893 if (!item_list_ || !item_list_->item_count())
885 return; 894 return;
895 DLOG(INFO) << "AppsGridView::Update(n=" << item_list_->item_count() << ")";
886 for (size_t i = 0; i < item_list_->item_count(); ++i) { 896 for (size_t i = 0; i < item_list_->item_count(); ++i) {
887 views::View* view = CreateViewForItemAtIndex(i); 897 views::View* view = CreateViewForItemAtIndex(i);
888 view_model_.Add(view, i); 898 view_model_.Add(view, i);
889 AddChildView(view); 899 AddChildView(view);
890 } 900 }
891 UpdatePaging(); 901 UpdatePaging();
892 UpdatePulsingBlockViews(); 902 UpdatePulsingBlockViews();
893 Layout(); 903 Layout();
894 SchedulePaint(); 904 SchedulePaint();
895 } 905 }
(...skipping 16 matching lines...) Expand all
912 if (pulsing_blocks_model_.view_size() == desired) 922 if (pulsing_blocks_model_.view_size() == desired)
913 return; 923 return;
914 924
915 while (pulsing_blocks_model_.view_size() > desired) { 925 while (pulsing_blocks_model_.view_size() > desired) {
916 views::View* view = pulsing_blocks_model_.view_at(0); 926 views::View* view = pulsing_blocks_model_.view_at(0);
917 pulsing_blocks_model_.Remove(0); 927 pulsing_blocks_model_.Remove(0);
918 delete view; 928 delete view;
919 } 929 }
920 930
921 while (pulsing_blocks_model_.view_size() < desired) { 931 while (pulsing_blocks_model_.view_size() < desired) {
932 NOTREACHED();
933 #ifdef FIXME
922 views::View* view = new PulsingBlockView( 934 views::View* view = new PulsingBlockView(
923 gfx::Size(kPreferredTileWidth, kPreferredTileHeight), true); 935 gfx::Size(kPreferredTileWidth, kPreferredTileHeight), true);
924 pulsing_blocks_model_.Add(view, 0); 936 pulsing_blocks_model_.Add(view, 0);
925 AddChildView(view); 937 AddChildView(view);
938 #endif
926 } 939 }
927 } 940 }
928 941
929 views::View* AppsGridView::CreateViewForItemAtIndex(size_t index) { 942 views::View* AppsGridView::CreateViewForItemAtIndex(size_t index) {
930 // The drag_view_ might be pending for deletion, therefore view_model_ 943 // The drag_view_ might be pending for deletion, therefore view_model_
931 // may have one more item than item_list_. 944 // may have one more item than item_list_.
932 DCHECK_LE(index, item_list_->item_count()); 945 DCHECK_LE(index, item_list_->item_count());
933 AppListItemView* view = new AppListItemView(this, 946 AppListItemView* view = new AppListItemView(this,
934 item_list_->item_at(index)); 947 item_list_->item_at(index));
935 view->SetIconSize(icon_size_); 948 view->SetIconSize(icon_size_);
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after
1282 1295
1283 void AppsGridView::OnReorderTimer() { 1296 void AppsGridView::OnReorderTimer() {
1284 if (drop_attempt_ == DROP_FOR_REORDER) 1297 if (drop_attempt_ == DROP_FOR_REORDER)
1285 AnimateToIdealBounds(); 1298 AnimateToIdealBounds();
1286 } 1299 }
1287 1300
1288 void AppsGridView::OnFolderItemReparentTimer() { 1301 void AppsGridView::OnFolderItemReparentTimer() {
1289 DCHECK(folder_delegate_); 1302 DCHECK(folder_delegate_);
1290 if (drag_out_of_folder_container_) { 1303 if (drag_out_of_folder_container_) {
1291 folder_delegate_->ReparentItem(drag_view_, last_drag_point_); 1304 folder_delegate_->ReparentItem(drag_view_, last_drag_point_);
1292
1293 // Set the flag in the folder's grid view. 1305 // Set the flag in the folder's grid view.
1294 dragging_for_reparent_item_ = true; 1306 dragging_for_reparent_item_ = true;
1295 1307
1296 // Do not observe any data change since it is going to be hidden. 1308 // Do not observe any data change since it is going to be hidden.
1297 item_list_->RemoveObserver(this); 1309 item_list_->RemoveObserver(this);
1298 item_list_ = NULL; 1310 item_list_ = NULL;
1299 } 1311 }
1300 } 1312 }
1301 1313
1302 void AppsGridView::OnFolderDroppingTimer() { 1314 void AppsGridView::OnFolderDroppingTimer() {
(...skipping 795 matching lines...) Expand 10 before | Expand all | Expand 10 after
2098 void AppsGridView::SetAsFolderDroppingTarget(const Index& target_index, 2110 void AppsGridView::SetAsFolderDroppingTarget(const Index& target_index,
2099 bool is_target_folder) { 2111 bool is_target_folder) {
2100 AppListItemView* target_view = 2112 AppListItemView* target_view =
2101 static_cast<AppListItemView*>( 2113 static_cast<AppListItemView*>(
2102 GetViewAtSlotOnCurrentPage(target_index.slot)); 2114 GetViewAtSlotOnCurrentPage(target_index.slot));
2103 if (target_view) 2115 if (target_view)
2104 target_view->SetAsAttemptedFolderTarget(is_target_folder); 2116 target_view->SetAsAttemptedFolderTarget(is_target_folder);
2105 } 2117 }
2106 2118
2107 } // namespace app_list 2119 } // namespace app_list
OLDNEW
« no previous file with comments | « ui/app_list/views/apps_grid_view.h ('k') | ui/app_list/views/contents_switcher_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698