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

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

Issue 312213005: Refactor app list ContentsView to use pointer members to find views. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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 | Annotate | Revision Log
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/contents_view.h" 5 #include "ui/app_list/views/contents_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "ui/app_list/app_list_constants.h" 10 #include "ui/app_list/app_list_constants.h"
(...skipping 19 matching lines...) Expand all
30 const int kIndexAppsContainer = 0; 30 const int kIndexAppsContainer = 0;
31 const int kIndexSearchResults = 1; 31 const int kIndexSearchResults = 1;
32 const int kIndexStartPage = 2; 32 const int kIndexStartPage = 2;
33 33
34 const int kMinMouseWheelToSwitchPage = 20; 34 const int kMinMouseWheelToSwitchPage = 20;
35 const int kMinScrollToSwitchPage = 20; 35 const int kMinScrollToSwitchPage = 20;
36 const int kMinHorizVelocityToSwitchPage = 800; 36 const int kMinHorizVelocityToSwitchPage = 800;
37 37
38 const double kFinishTransitionThreshold = 0.33; 38 const double kFinishTransitionThreshold = 0.33;
39 39
40 AppsContainerView* GetAppsContainerView(views::ViewModel* model) {
41 return static_cast<AppsContainerView*>(model->view_at(kIndexAppsContainer));
42 }
43
44 SearchResultListView* GetSearchResultListView(views::ViewModel* model) {
45 return static_cast<SearchResultListView*>(
46 model->view_at(kIndexSearchResults));
47 }
48
49 StartPageView* GetStartPageView(views::ViewModel* model) {
50 return static_cast<StartPageView*>(model->view_at(kIndexStartPage));
51 }
52
53 } // namespace 40 } // namespace
54 41
55 ContentsView::ContentsView(AppListMainView* app_list_main_view, 42 ContentsView::ContentsView(AppListMainView* app_list_main_view,
56 AppListModel* model, 43 AppListModel* model,
57 AppListViewDelegate* view_delegate) 44 AppListViewDelegate* view_delegate)
58 : show_state_(SHOW_APPS), 45 : show_state_(SHOW_APPS),
59 start_page_view_(NULL), 46 start_page_view_(NULL),
60 app_list_main_view_(app_list_main_view), 47 app_list_main_view_(app_list_main_view),
61 view_model_(new views::ViewModel), 48 view_model_(new views::ViewModel),
62 bounds_animator_(new views::BoundsAnimator(this)) { 49 bounds_animator_(new views::BoundsAnimator(this)) {
63 DCHECK(model); 50 DCHECK(model);
64 51
65 apps_container_view_ = new AppsContainerView(app_list_main_view, model); 52 apps_container_view_ = new AppsContainerView(app_list_main_view, model);
66 AddChildView(apps_container_view_); 53 AddChildView(apps_container_view_);
67 view_model_->Add(apps_container_view_, kIndexAppsContainer); 54 view_model_->Add(apps_container_view_, kIndexAppsContainer);
68 55
69 SearchResultListView* search_results_view = new SearchResultListView( 56 search_results_view_ =
70 app_list_main_view, view_delegate); 57 new SearchResultListView(app_list_main_view, view_delegate);
71 AddChildView(search_results_view); 58 AddChildView(search_results_view_);
72 view_model_->Add(search_results_view, kIndexSearchResults); 59 view_model_->Add(search_results_view_, kIndexSearchResults);
73 60
74 if (app_list::switches::IsExperimentalAppListEnabled()) { 61 if (app_list::switches::IsExperimentalAppListEnabled()) {
75 start_page_view_ = new StartPageView(app_list_main_view, view_delegate); 62 start_page_view_ = new StartPageView(app_list_main_view, view_delegate);
76 AddChildView(start_page_view_); 63 AddChildView(start_page_view_);
77 view_model_->Add(start_page_view_, kIndexStartPage); 64 view_model_->Add(start_page_view_, kIndexStartPage);
78 } 65 }
79 66
80 GetSearchResultListView(view_model_.get())->SetResults(model->results()); 67 search_results_view_->SetResults(model->results());
81 } 68 }
82 69
83 ContentsView::~ContentsView() { 70 ContentsView::~ContentsView() {
84 } 71 }
85 72
86 void ContentsView::CancelDrag() { 73 void ContentsView::CancelDrag() {
87 if (apps_container_view_->apps_grid_view()->has_dragged_view()) 74 if (apps_container_view_->apps_grid_view()->has_dragged_view())
88 apps_container_view_->apps_grid_view()->EndDrag(true); 75 apps_container_view_->apps_grid_view()->EndDrag(true);
89 if (apps_container_view_->app_list_folder_view() 76 if (apps_container_view_->app_list_folder_view()
90 ->items_grid_view() 77 ->items_grid_view()
(...skipping 10 matching lines...) Expand all
101 88
102 void ContentsView::SetShowState(ShowState show_state) { 89 void ContentsView::SetShowState(ShowState show_state) {
103 if (show_state_ == show_state) 90 if (show_state_ == show_state)
104 return; 91 return;
105 92
106 show_state_ = show_state; 93 show_state_ = show_state;
107 ShowStateChanged(); 94 ShowStateChanged();
108 } 95 }
109 96
110 void ContentsView::ShowStateChanged() { 97 void ContentsView::ShowStateChanged() {
111 SearchResultListView* results_view =
112 GetSearchResultListView(view_model_.get());
113 // TODO(xiyuan): Highlight default match instead of the first. 98 // TODO(xiyuan): Highlight default match instead of the first.
114 if (show_state_ == SHOW_SEARCH_RESULTS && results_view->visible()) 99 if (show_state_ == SHOW_SEARCH_RESULTS && search_results_view_->visible())
115 results_view->SetSelectedIndex(0); 100 search_results_view_->SetSelectedIndex(0);
116 results_view->UpdateAutoLaunchState(); 101 search_results_view_->UpdateAutoLaunchState();
117 102
118 // Notify parent AppListMainView of show state change. 103 // Notify parent AppListMainView of show state change.
119 app_list_main_view_->OnContentsViewShowStateChanged(); 104 app_list_main_view_->OnContentsViewShowStateChanged();
120 105
121 if (show_state_ == SHOW_START_PAGE) 106 if (show_state_ == SHOW_START_PAGE)
122 GetStartPageView(view_model_.get())->Reset(); 107 start_page_view_->Reset();
123 108
124 AnimateToIdealBounds(); 109 AnimateToIdealBounds();
125 } 110 }
126 111
127 void ContentsView::CalculateIdealBounds() { 112 void ContentsView::CalculateIdealBounds() {
128 gfx::Rect rect(GetContentsBounds()); 113 gfx::Rect rect(GetContentsBounds());
129 if (rect.IsEmpty()) 114 if (rect.IsEmpty())
130 return; 115 return;
131 116
132 if (app_list::switches::IsExperimentalAppListEnabled()) { 117 if (app_list::switches::IsExperimentalAppListEnabled()) {
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 apps_container_view_->ShowActiveFolder(item); 185 apps_container_view_->ShowActiveFolder(item);
201 } 186 }
202 187
203 void ContentsView::Prerender() { 188 void ContentsView::Prerender() {
204 const int selected_page = 189 const int selected_page =
205 std::max(0, GetAppsPaginationModel()->selected_page()); 190 std::max(0, GetAppsPaginationModel()->selected_page());
206 apps_container_view_->apps_grid_view()->Prerender(selected_page); 191 apps_container_view_->apps_grid_view()->Prerender(selected_page);
207 } 192 }
208 193
209 gfx::Size ContentsView::GetPreferredSize() const { 194 gfx::Size ContentsView::GetPreferredSize() const {
210 const gfx::Size container_size = GetAppsContainerView(view_model_.get())-> 195 const gfx::Size container_size =
211 apps_grid_view()->GetPreferredSize(); 196 apps_container_view_->apps_grid_view()->GetPreferredSize();
212 const gfx::Size results_size = 197 const gfx::Size results_size = search_results_view_->GetPreferredSize();
213 GetSearchResultListView(view_model_.get())->GetPreferredSize();
214 198
215 int width = std::max(container_size.width(), results_size.width()); 199 int width = std::max(container_size.width(), results_size.width());
216 int height = std::max(container_size.height(), results_size.height()); 200 int height = std::max(container_size.height(), results_size.height());
217 return gfx::Size(width, height); 201 return gfx::Size(width, height);
218 } 202 }
219 203
220 void ContentsView::Layout() { 204 void ContentsView::Layout() {
221 CalculateIdealBounds(); 205 CalculateIdealBounds();
222 views::ViewModelUtils::SetViewBoundsToIdealBounds(*view_model_); 206 views::ViewModelUtils::SetViewBoundsToIdealBounds(*view_model_);
223 } 207 }
224 208
225 bool ContentsView::OnKeyPressed(const ui::KeyEvent& event) { 209 bool ContentsView::OnKeyPressed(const ui::KeyEvent& event) {
226 switch (show_state_) { 210 switch (show_state_) {
227 case SHOW_APPS: 211 case SHOW_APPS:
228 return GetAppsContainerView(view_model_.get())->OnKeyPressed(event); 212 return apps_container_view_->OnKeyPressed(event);
229 case SHOW_SEARCH_RESULTS: 213 case SHOW_SEARCH_RESULTS:
230 return GetSearchResultListView(view_model_.get())->OnKeyPressed(event); 214 return search_results_view_->OnKeyPressed(event);
231 case SHOW_START_PAGE: 215 case SHOW_START_PAGE:
232 return GetStartPageView(view_model_.get())->OnKeyPressed(event); 216 return start_page_view_->OnKeyPressed(event);
233 default: 217 default:
234 NOTREACHED() << "Unknown show state " << show_state_; 218 NOTREACHED() << "Unknown show state " << show_state_;
235 } 219 }
236 return false; 220 return false;
237 } 221 }
238 222
239 bool ContentsView::OnMouseWheel(const ui::MouseWheelEvent& event) { 223 bool ContentsView::OnMouseWheel(const ui::MouseWheelEvent& event) {
240 if (show_state_ != SHOW_APPS) 224 if (show_state_ != SHOW_APPS)
241 return false; 225 return false;
242 226
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 if (std::abs(offset) > kMinScrollToSwitchPage) { 291 if (std::abs(offset) > kMinScrollToSwitchPage) {
308 if (!GetAppsPaginationModel()->has_transition()) { 292 if (!GetAppsPaginationModel()->has_transition()) {
309 GetAppsPaginationModel()->SelectPageRelative(offset > 0 ? -1 : 1, true); 293 GetAppsPaginationModel()->SelectPageRelative(offset > 0 ? -1 : 1, true);
310 } 294 }
311 event->SetHandled(); 295 event->SetHandled();
312 event->StopPropagation(); 296 event->StopPropagation();
313 } 297 }
314 } 298 }
315 299
316 } // namespace app_list 300 } // namespace app_list
OLDNEW
« ui/app_list/views/contents_view.h ('K') | « ui/app_list/views/contents_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698