Chromium Code Reviews| 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/search_result_list_view.h" | 5 #include "ui/app_list/views/search_result_list_view.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| 11 #include "base/time/time.h" | 11 #include "base/time/time.h" |
| 12 #include "third_party/skia/include/core/SkColor.h" | 12 #include "third_party/skia/include/core/SkColor.h" |
| 13 #include "ui/app_list/app_list_switches.h" | 13 #include "ui/app_list/app_list_switches.h" |
| 14 #include "ui/app_list/app_list_view_delegate.h" | 14 #include "ui/app_list/app_list_view_delegate.h" |
| 15 #include "ui/app_list/search_result.h" | |
| 15 #include "ui/app_list/views/search_result_list_view_delegate.h" | 16 #include "ui/app_list/views/search_result_list_view_delegate.h" |
| 16 #include "ui/app_list/views/search_result_view.h" | 17 #include "ui/app_list/views/search_result_view.h" |
| 17 #include "ui/events/event.h" | 18 #include "ui/events/event.h" |
| 18 #include "ui/gfx/animation/linear_animation.h" | 19 #include "ui/gfx/animation/linear_animation.h" |
| 19 #include "ui/views/background.h" | 20 #include "ui/views/background.h" |
| 20 #include "ui/views/layout/box_layout.h" | 21 #include "ui/views/layout/box_layout.h" |
| 21 | 22 |
| 22 namespace { | 23 namespace { |
| 23 | 24 |
| 24 const int kMaxResults = 6; | 25 const int kMaxResults = 6; |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 156 SetAutoLaunchTimeout(base::TimeDelta()); | 157 SetAutoLaunchTimeout(base::TimeDelta()); |
| 157 view_delegate_->AutoLaunchCanceled(); | 158 view_delegate_->AutoLaunchCanceled(); |
| 158 } | 159 } |
| 159 | 160 |
| 160 SearchResultView* SearchResultListView::GetResultViewAt(int index) { | 161 SearchResultView* SearchResultListView::GetResultViewAt(int index) { |
| 161 DCHECK(index >= 0 && index < results_container_->child_count()); | 162 DCHECK(index >= 0 && index < results_container_->child_count()); |
| 162 return static_cast<SearchResultView*>(results_container_->child_at(index)); | 163 return static_cast<SearchResultView*>(results_container_->child_at(index)); |
| 163 } | 164 } |
| 164 | 165 |
| 165 void SearchResultListView::Update() { | 166 void SearchResultListView::Update() { |
| 166 last_visible_index_ = 0; | 167 std::vector<SearchResult*> display_results = |
| 168 AppListModel::GetSearchResultsForDisplayType( | |
| 169 results_, | |
| 170 SearchResult::DISPLAY_LIST, | |
| 171 results_container_->child_count()); | |
| 172 last_visible_index_ = display_results.size() - 1; | |
| 173 | |
| 167 for (size_t i = 0; i < static_cast<size_t>(results_container_->child_count()); | 174 for (size_t i = 0; i < static_cast<size_t>(results_container_->child_count()); |
| 168 ++i) { | 175 ++i) { |
| 169 SearchResultView* result_view = GetResultViewAt(i); | 176 SearchResultView* result_view = GetResultViewAt(i); |
| 170 if (i < results_->item_count()) { | 177 SearchResult* item = NULL; |
| 171 result_view->SetResult(results_->GetItemAt(i)); | 178 if (i < display_results.size()) |
|
Matt Giuca
2014/08/06 08:54:53
I think I prefer the old formulation of:
if (i <
calamity
2014/08/12 05:03:37
Done.
| |
| 172 result_view->SetVisible(true); | 179 item = display_results[i]; |
| 173 last_visible_index_ = i; | 180 |
| 174 } else { | 181 result_view->SetResult(item); |
| 175 result_view->SetResult(NULL); | 182 result_view->SetVisible(item != NULL); |
| 176 result_view->SetVisible(false); | |
| 177 } | |
| 178 } | 183 } |
| 179 if (selected_index_ > last_visible_index_) | 184 if (selected_index_ > last_visible_index_) |
| 180 SetSelectedIndex(last_visible_index_); | 185 SetSelectedIndex(last_visible_index_); |
| 181 | 186 |
| 182 Layout(); | 187 Layout(); |
| 183 update_factory_.InvalidateWeakPtrs(); | 188 update_factory_.InvalidateWeakPtrs(); |
| 184 UpdateAutoLaunchState(); | 189 UpdateAutoLaunchState(); |
| 185 } | 190 } |
| 186 | 191 |
| 187 void SearchResultListView::ScheduleUpdate() { | 192 void SearchResultListView::ScheduleUpdate() { |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 283 if (delegate_ && view->result()) | 288 if (delegate_ && view->result()) |
| 284 delegate_->OnResultInstalled(view->result()); | 289 delegate_->OnResultInstalled(view->result()); |
| 285 } | 290 } |
| 286 | 291 |
| 287 void SearchResultListView::OnSearchResultUninstalled(SearchResultView* view) { | 292 void SearchResultListView::OnSearchResultUninstalled(SearchResultView* view) { |
| 288 if (delegate_ && view->result()) | 293 if (delegate_ && view->result()) |
| 289 delegate_->OnResultUninstalled(view->result()); | 294 delegate_->OnResultUninstalled(view->result()); |
| 290 } | 295 } |
| 291 | 296 |
| 292 } // namespace app_list | 297 } // namespace app_list |
| OLD | NEW |