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

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

Issue 675053002: Move ContentsView::NamedPage to AppListModel::ShowState. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git/+/ares_move_search_box_up
Patch Set: rebase Created 6 years, 1 month 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/contents_view.h ('k') | no next file » | 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/contents_view.h" 5 #include "ui/app_list/views/contents_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 27 matching lines...) Expand all
38 kOverscrollPageTransitionDurationMs); 38 kOverscrollPageTransitionDurationMs);
39 pagination_model_.AddObserver(this); 39 pagination_model_.AddObserver(this);
40 } 40 }
41 41
42 ContentsView::~ContentsView() { 42 ContentsView::~ContentsView() {
43 pagination_model_.RemoveObserver(this); 43 pagination_model_.RemoveObserver(this);
44 if (contents_switcher_view_) 44 if (contents_switcher_view_)
45 pagination_model_.RemoveObserver(contents_switcher_view_); 45 pagination_model_.RemoveObserver(contents_switcher_view_);
46 } 46 }
47 47
48 void ContentsView::InitNamedPages(AppListModel* model, 48 void ContentsView::Init(AppListModel* model,
49 AppListViewDelegate* view_delegate) { 49 AppListViewDelegate* view_delegate) {
50 DCHECK(model); 50 DCHECK(model);
51 51
52 if (app_list::switches::IsExperimentalAppListEnabled()) { 52 if (app_list::switches::IsExperimentalAppListEnabled()) {
53 std::vector<views::View*> custom_page_views = 53 std::vector<views::View*> custom_page_views =
54 view_delegate->CreateCustomPageWebViews(GetLocalBounds().size()); 54 view_delegate->CreateCustomPageWebViews(GetLocalBounds().size());
55 for (std::vector<views::View*>::const_iterator it = 55 for (std::vector<views::View*>::const_iterator it =
56 custom_page_views.begin(); 56 custom_page_views.begin();
57 it != custom_page_views.end(); 57 it != custom_page_views.end();
58 ++it) { 58 ++it) {
59 AddLauncherPage(*it, IDR_APP_LIST_NOTIFICATIONS_ICON); 59 AddLauncherPage(*it, IDR_APP_LIST_NOTIFICATIONS_ICON);
60 } 60 }
61 61
62 start_page_view_ = new StartPageView(app_list_main_view_, view_delegate); 62 start_page_view_ = new StartPageView(app_list_main_view_, view_delegate);
63 AddLauncherPage( 63 AddLauncherPage(
64 start_page_view_, IDR_APP_LIST_SEARCH_ICON, NAMED_PAGE_START); 64 start_page_view_, IDR_APP_LIST_SEARCH_ICON, AppListModel::STATE_START);
65 } else { 65 } else {
66 search_results_view_ = 66 search_results_view_ =
67 new SearchResultListView(app_list_main_view_, view_delegate); 67 new SearchResultListView(app_list_main_view_, view_delegate);
68 AddLauncherPage(search_results_view_, 0, NAMED_PAGE_SEARCH_RESULTS); 68 AddLauncherPage(
69 search_results_view_, 0, AppListModel::STATE_SEARCH_RESULTS);
69 search_results_view_->SetResults(model->results()); 70 search_results_view_->SetResults(model->results());
70 } 71 }
71 72
72 apps_container_view_ = new AppsContainerView(app_list_main_view_, model); 73 apps_container_view_ = new AppsContainerView(app_list_main_view_, model);
73 74
74 AddLauncherPage( 75 AddLauncherPage(
75 apps_container_view_, IDR_APP_LIST_APPS_ICON, NAMED_PAGE_APPS); 76 apps_container_view_, IDR_APP_LIST_APPS_ICON, AppListModel::STATE_APPS);
76 77
77 int initial_page_index = app_list::switches::IsExperimentalAppListEnabled() 78 int initial_page_index = app_list::switches::IsExperimentalAppListEnabled()
78 ? GetPageIndexForNamedPage(NAMED_PAGE_START) 79 ? GetPageIndexForState(AppListModel::STATE_START)
79 : GetPageIndexForNamedPage(NAMED_PAGE_APPS); 80 : GetPageIndexForState(AppListModel::STATE_APPS);
80 DCHECK_GE(initial_page_index, 0); 81 DCHECK_GE(initial_page_index, 0);
81 82
82 page_before_search_ = initial_page_index; 83 page_before_search_ = initial_page_index;
83 pagination_model_.SelectPage(initial_page_index, false); 84 pagination_model_.SelectPage(initial_page_index, false);
84 } 85 }
85 86
86 void ContentsView::CancelDrag() { 87 void ContentsView::CancelDrag() {
87 if (apps_container_view_->apps_grid_view()->has_dragged_view()) 88 if (apps_container_view_->apps_grid_view()->has_dragged_view())
88 apps_container_view_->apps_grid_view()->EndDrag(true); 89 apps_container_view_->apps_grid_view()->EndDrag(true);
89 if (apps_container_view_->app_list_folder_view() 90 if (apps_container_view_->app_list_folder_view()
(...skipping 22 matching lines...) Expand all
112 return; 113 return;
113 114
114 SetActivePageInternal(page_index, false); 115 SetActivePageInternal(page_index, false);
115 } 116 }
116 117
117 int ContentsView::GetActivePageIndex() const { 118 int ContentsView::GetActivePageIndex() const {
118 // The active page is changed at the beginning of an animation, not the end. 119 // The active page is changed at the beginning of an animation, not the end.
119 return pagination_model_.SelectedTargetPage(); 120 return pagination_model_.SelectedTargetPage();
120 } 121 }
121 122
122 bool ContentsView::IsNamedPageActive(NamedPage named_page) const { 123 bool ContentsView::IsStateActive(AppListModel::State state) const {
123 int active_page_index = GetActivePageIndex(); 124 int active_page_index = GetActivePageIndex();
124 return active_page_index >= 0 && 125 return active_page_index >= 0 &&
125 GetPageIndexForNamedPage(named_page) == active_page_index; 126 GetPageIndexForState(state) == active_page_index;
126 } 127 }
127 128
128 int ContentsView::GetPageIndexForNamedPage(NamedPage named_page) const { 129 int ContentsView::GetPageIndexForState(AppListModel::State state) const {
129 // Find the index of the view corresponding to the given named_page. 130 // Find the index of the view corresponding to the given state.
130 std::map<NamedPage, int>::const_iterator it = 131 std::map<AppListModel::State, int>::const_iterator it =
131 named_page_to_view_.find(named_page); 132 state_to_view_.find(state);
132 if (it == named_page_to_view_.end()) 133 if (it == state_to_view_.end())
133 return -1; 134 return -1;
134 135
135 return it->second; 136 return it->second;
136 } 137 }
137 138
138 int ContentsView::NumLauncherPages() const { 139 int ContentsView::NumLauncherPages() const {
139 return pagination_model_.total_pages(); 140 return pagination_model_.total_pages();
140 } 141 }
141 142
142 void ContentsView::SetActivePageInternal(int page_index, 143 void ContentsView::SetActivePageInternal(int page_index,
143 bool show_search_results) { 144 bool show_search_results) {
144 if (!show_search_results) 145 if (!show_search_results)
145 page_before_search_ = page_index; 146 page_before_search_ = page_index;
146 // Start animating to the new page. 147 // Start animating to the new page.
147 pagination_model_.SelectPage(page_index, true); 148 pagination_model_.SelectPage(page_index, true);
148 ActivePageChanged(show_search_results); 149 ActivePageChanged(show_search_results);
149 } 150 }
150 151
151 void ContentsView::ActivePageChanged(bool show_search_results) { 152 void ContentsView::ActivePageChanged(bool show_search_results) {
152 // TODO(xiyuan): Highlight default match instead of the first. 153 // TODO(xiyuan): Highlight default match instead of the first.
153 if (IsNamedPageActive(NAMED_PAGE_SEARCH_RESULTS) && 154 if (IsStateActive(AppListModel::STATE_SEARCH_RESULTS) &&
154 search_results_view_->visible()) { 155 search_results_view_->visible()) {
155 search_results_view_->SetSelectedIndex(0); 156 search_results_view_->SetSelectedIndex(0);
156 } 157 }
157 if (search_results_view_) 158 if (search_results_view_)
158 search_results_view_->UpdateAutoLaunchState(); 159 search_results_view_->UpdateAutoLaunchState();
159 160
160 if (IsNamedPageActive(NAMED_PAGE_START)) { 161 if (IsStateActive(AppListModel::STATE_START)) {
161 if (show_search_results) 162 if (show_search_results)
162 start_page_view_->ShowSearchResults(); 163 start_page_view_->ShowSearchResults();
163 else 164 else
164 start_page_view_->Reset(); 165 start_page_view_->Reset();
165 } 166 }
166 167
167 // Notify parent AppListMainView of the page change. 168 // Notify parent AppListMainView of the page change.
168 app_list_main_view_->UpdateSearchBoxVisibility(); 169 app_list_main_view_->UpdateSearchBoxVisibility();
169 } 170 }
170 171
171 void ContentsView::ShowSearchResults(bool show) { 172 void ContentsView::ShowSearchResults(bool show) {
172 int search_page = GetPageIndexForNamedPage( 173 int search_page =
173 app_list::switches::IsExperimentalAppListEnabled() 174 GetPageIndexForState(app_list::switches::IsExperimentalAppListEnabled()
174 ? NAMED_PAGE_START 175 ? AppListModel::STATE_START
175 : NAMED_PAGE_SEARCH_RESULTS); 176 : AppListModel::STATE_SEARCH_RESULTS);
176 DCHECK_GE(search_page, 0); 177 DCHECK_GE(search_page, 0);
177 178
178 SetActivePageInternal(show ? search_page : page_before_search_, show); 179 SetActivePageInternal(show ? search_page : page_before_search_, show);
179 } 180 }
180 181
181 bool ContentsView::IsShowingSearchResults() const { 182 bool ContentsView::IsShowingSearchResults() const {
182 return app_list::switches::IsExperimentalAppListEnabled() 183 return app_list::switches::IsExperimentalAppListEnabled()
183 ? IsNamedPageActive(NAMED_PAGE_START) && 184 ? IsStateActive(AppListModel::STATE_START) &&
184 start_page_view_->IsShowingSearchResults() 185 start_page_view_->IsShowingSearchResults()
185 : IsNamedPageActive(NAMED_PAGE_SEARCH_RESULTS); 186 : IsStateActive(AppListModel::STATE_SEARCH_RESULTS);
186 } 187 }
187 188
188 gfx::Rect ContentsView::GetOffscreenPageBounds(int page_index) const { 189 gfx::Rect ContentsView::GetOffscreenPageBounds(int page_index) const {
189 gfx::Rect bounds(GetContentsBounds()); 190 gfx::Rect bounds(GetContentsBounds());
190 // The start page and search page origins are above; all other pages' origins 191 // The start page and search page origins are above; all other pages' origins
191 // are below. 192 // are below.
192 int page_height = bounds.height(); 193 int page_height = bounds.height();
193 bool origin_above = 194 bool origin_above =
194 GetPageIndexForNamedPage(NAMED_PAGE_START) == page_index || 195 GetPageIndexForState(AppListModel::STATE_START) == page_index ||
195 GetPageIndexForNamedPage(NAMED_PAGE_SEARCH_RESULTS) == page_index; 196 GetPageIndexForState(AppListModel::STATE_SEARCH_RESULTS) == page_index;
196 bounds.set_y(origin_above ? -page_height : page_height); 197 bounds.set_y(origin_above ? -page_height : page_height);
197 return bounds; 198 return bounds;
198 } 199 }
199 200
200 void ContentsView::UpdatePageBounds() { 201 void ContentsView::UpdatePageBounds() {
201 // The bounds calculations will potentially be mid-transition (depending on 202 // The bounds calculations will potentially be mid-transition (depending on
202 // the state of the PaginationModel). 203 // the state of the PaginationModel).
203 int current_page = std::max(0, pagination_model_.selected_page()); 204 int current_page = std::max(0, pagination_model_.selected_page());
204 int target_page = current_page; 205 int target_page = current_page;
205 double progress = 1; 206 double progress = 1;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 AddChildView(view); 252 AddChildView(view);
252 view_model_->Add(view, page_index); 253 view_model_->Add(view, page_index);
253 if (contents_switcher_view_ && resource_id) 254 if (contents_switcher_view_ && resource_id)
254 contents_switcher_view_->AddSwitcherButton(resource_id, page_index); 255 contents_switcher_view_->AddSwitcherButton(resource_id, page_index);
255 pagination_model_.SetTotalPages(view_model_->view_size()); 256 pagination_model_.SetTotalPages(view_model_->view_size());
256 return page_index; 257 return page_index;
257 } 258 }
258 259
259 int ContentsView::AddLauncherPage(views::View* view, 260 int ContentsView::AddLauncherPage(views::View* view,
260 int resource_id, 261 int resource_id,
261 NamedPage named_page) { 262 AppListModel::State state) {
262 int page_index = AddLauncherPage(view, resource_id); 263 int page_index = AddLauncherPage(view, resource_id);
263 named_page_to_view_.insert(std::pair<NamedPage, int>(named_page, page_index)); 264 state_to_view_.insert(std::pair<AppListModel::State, int>(state, page_index));
264 return page_index; 265 return page_index;
265 } 266 }
266 267
267 gfx::Rect ContentsView::GetDefaultSearchBoxBounds() const { 268 gfx::Rect ContentsView::GetDefaultSearchBoxBounds() const {
268 gfx::Rect search_box_bounds( 269 gfx::Rect search_box_bounds(
269 0, 270 0,
270 0, 271 0,
271 GetDefaultContentsSize().width(), 272 GetDefaultContentsSize().width(),
272 app_list_main_view_->search_box_view()->GetPreferredSize().height()); 273 app_list_main_view_->search_box_view()->GetPreferredSize().height());
273 if (switches::IsExperimentalAppListEnabled()) { 274 if (switches::IsExperimentalAppListEnabled()) {
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 } 337 }
337 338
338 void ContentsView::TransitionStarted() { 339 void ContentsView::TransitionStarted() {
339 } 340 }
340 341
341 void ContentsView::TransitionChanged() { 342 void ContentsView::TransitionChanged() {
342 UpdatePageBounds(); 343 UpdatePageBounds();
343 } 344 }
344 345
345 } // namespace app_list 346 } // namespace app_list
OLDNEW
« no previous file with comments | « 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