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

Unified Diff: ui/app_list/views/search_result_list_view.cc

Issue 645853013: Remove some platform specific stuff from views. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/app_list/views/search_result_list_view.h ('k') | ui/app_list/views/search_result_list_view_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/app_list/views/search_result_list_view.cc
diff --git a/ui/app_list/views/search_result_list_view.cc b/ui/app_list/views/search_result_list_view.cc
deleted file mode 100644
index 76e7898a536092801cd0c3291005f54d698bf45f..0000000000000000000000000000000000000000
--- a/ui/app_list/views/search_result_list_view.cc
+++ /dev/null
@@ -1,298 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ui/app_list/views/search_result_list_view.h"
-
-#include <algorithm>
-
-#include "base/bind.h"
-#include "base/message_loop/message_loop.h"
-#include "base/time/time.h"
-#include "third_party/skia/include/core/SkColor.h"
-#include "ui/app_list/app_list_switches.h"
-#include "ui/app_list/app_list_view_delegate.h"
-#include "ui/app_list/search_result.h"
-#include "ui/app_list/views/search_result_list_view_delegate.h"
-#include "ui/app_list/views/search_result_view.h"
-#include "ui/events/event.h"
-#include "ui/gfx/animation/linear_animation.h"
-#include "ui/views/background.h"
-#include "ui/views/layout/box_layout.h"
-
-namespace {
-
-const int kMaxResults = 6;
-const int kExperimentAppListMaxResults = 3;
-const int kTimeoutIndicatorHeight = 2;
-const int kTimeoutFramerate = 60;
-const SkColor kTimeoutIndicatorColor = SkColorSetRGB(30, 144, 255);
-
-} // namespace
-
-namespace app_list {
-
-SearchResultListView::SearchResultListView(
- SearchResultListViewDelegate* delegate,
- AppListViewDelegate* view_delegate)
- : delegate_(delegate),
- view_delegate_(view_delegate),
- results_(NULL),
- results_container_(new views::View),
- auto_launch_indicator_(new views::View),
- last_visible_index_(0),
- selected_index_(-1),
- update_factory_(this) {
- results_container_->SetLayoutManager(
- new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0));
-
- int max_results = kMaxResults;
- if (app_list::switches::IsExperimentalAppListEnabled())
- max_results = kExperimentAppListMaxResults;
-
- for (int i = 0; i < max_results; ++i)
- results_container_->AddChildView(new SearchResultView(this));
- AddChildView(results_container_);
-
- auto_launch_indicator_->set_background(
- views::Background::CreateSolidBackground(kTimeoutIndicatorColor));
- auto_launch_indicator_->SetVisible(false);
-
- AddChildView(auto_launch_indicator_);
-}
-
-SearchResultListView::~SearchResultListView() {
- if (results_)
- results_->RemoveObserver(this);
-}
-
-void SearchResultListView::SetResults(AppListModel::SearchResults* results) {
- if (results_)
- results_->RemoveObserver(this);
-
- results_ = results;
- if (results_)
- results_->AddObserver(this);
-
- Update();
-}
-
-void SearchResultListView::SetSelectedIndex(int selected_index) {
- if (selected_index_ == selected_index)
- return;
-
- if (selected_index_ >= 0) {
- SearchResultView* selected_view = GetResultViewAt(selected_index_);
- selected_view->ClearSelectedAction();
- selected_view->SchedulePaint();
- }
-
- selected_index_ = selected_index;
-
- if (selected_index_ >= 0) {
- SearchResultView* selected_view = GetResultViewAt(selected_index_);
- selected_view->ClearSelectedAction();
- selected_view->SchedulePaint();
- selected_view->NotifyAccessibilityEvent(ui::AX_EVENT_FOCUS,
- true);
- }
- if (auto_launch_animation_)
- CancelAutoLaunchTimeout();
-}
-
-bool SearchResultListView::IsResultViewSelected(
- const SearchResultView* result_view) const {
- if (selected_index_ < 0)
- return false;
-
- return static_cast<const SearchResultView*>(
- results_container_->child_at(selected_index_)) == result_view;
-}
-
-void SearchResultListView::UpdateAutoLaunchState() {
- SetAutoLaunchTimeout(view_delegate_->GetAutoLaunchTimeout());
-}
-
-bool SearchResultListView::OnKeyPressed(const ui::KeyEvent& event) {
- if (selected_index_ >= 0 &&
- results_container_->child_at(selected_index_)->OnKeyPressed(event)) {
- return true;
- }
-
- switch (event.key_code()) {
- case ui::VKEY_TAB:
- if (event.IsShiftDown())
- SetSelectedIndex(std::max(selected_index_ - 1, 0));
- else
- SetSelectedIndex(std::min(selected_index_ + 1, last_visible_index_));
- return true;
- case ui::VKEY_UP:
- SetSelectedIndex(std::max(selected_index_ - 1, 0));
- return true;
- case ui::VKEY_DOWN:
- SetSelectedIndex(std::min(selected_index_ + 1, last_visible_index_));
- return true;
- default:
- break;
- }
-
- return false;
-}
-
-void SearchResultListView::SetAutoLaunchTimeout(
- const base::TimeDelta& timeout) {
- if (timeout > base::TimeDelta()) {
- auto_launch_indicator_->SetVisible(true);
- auto_launch_indicator_->SetBounds(0, 0, 0, kTimeoutIndicatorHeight);
- auto_launch_animation_.reset(new gfx::LinearAnimation(
- timeout.InMilliseconds(), kTimeoutFramerate, this));
- auto_launch_animation_->Start();
- } else {
- auto_launch_indicator_->SetVisible(false);
- auto_launch_animation_.reset();
- }
-}
-
-void SearchResultListView::CancelAutoLaunchTimeout() {
- SetAutoLaunchTimeout(base::TimeDelta());
- view_delegate_->AutoLaunchCanceled();
-}
-
-SearchResultView* SearchResultListView::GetResultViewAt(int index) {
- DCHECK(index >= 0 && index < results_container_->child_count());
- return static_cast<SearchResultView*>(results_container_->child_at(index));
-}
-
-void SearchResultListView::Update() {
- std::vector<SearchResult*> display_results =
- AppListModel::FilterSearchResultsByDisplayType(
- results_,
- SearchResult::DISPLAY_LIST,
- results_container_->child_count());
- last_visible_index_ = display_results.size() - 1;
-
- for (size_t i = 0; i < static_cast<size_t>(results_container_->child_count());
- ++i) {
- SearchResultView* result_view = GetResultViewAt(i);
- if (i < display_results.size()) {
- result_view->SetResult(display_results[i]);
- result_view->SetVisible(true);
- } else {
- result_view->SetResult(NULL);
- result_view->SetVisible(false);
- }
- }
- if (selected_index_ > last_visible_index_)
- SetSelectedIndex(last_visible_index_);
-
- Layout();
- update_factory_.InvalidateWeakPtrs();
- UpdateAutoLaunchState();
-}
-
-void SearchResultListView::ScheduleUpdate() {
- // When search results are added one by one, each addition generates an update
- // request. Consolidates those update requests into one Update call.
- if (!update_factory_.HasWeakPtrs()) {
- base::MessageLoop::current()->PostTask(
- FROM_HERE,
- base::Bind(&SearchResultListView::Update,
- update_factory_.GetWeakPtr()));
- }
-}
-
-void SearchResultListView::ForceAutoLaunchForTest() {
- if (auto_launch_animation_)
- AnimationEnded(auto_launch_animation_.get());
-}
-
-void SearchResultListView::Layout() {
- results_container_->SetBoundsRect(GetLocalBounds());
-}
-
-gfx::Size SearchResultListView::GetPreferredSize() const {
- return results_container_->GetPreferredSize();
-}
-
-int SearchResultListView::GetHeightForWidth(int w) const {
- return results_container_->GetHeightForWidth(w);
-}
-
-void SearchResultListView::VisibilityChanged(views::View* starting_from,
- bool is_visible) {
- if (is_visible)
- UpdateAutoLaunchState();
- else
- CancelAutoLaunchTimeout();
-}
-
-void SearchResultListView::AnimationEnded(const gfx::Animation* animation) {
- DCHECK_EQ(auto_launch_animation_.get(), animation);
- view_delegate_->OpenSearchResult(results_->GetItemAt(0), true, ui::EF_NONE);
-
- // The auto-launch has to be canceled explicitly. Think that one of searcher
- // is extremely slow. Sometimes the events would happen in the following
- // order:
- // 1. The search results arrive, auto-launch is dispatched
- // 2. Timed out and auto-launch the first search result
- // 3. Then another searcher adds search results more
- // At the step 3, we shouldn't dispatch the auto-launch again.
- CancelAutoLaunchTimeout();
-}
-
-void SearchResultListView::AnimationProgressed(
- const gfx::Animation* animation) {
- DCHECK_EQ(auto_launch_animation_.get(), animation);
- int indicator_width = auto_launch_animation_->CurrentValueBetween(0, width());
- auto_launch_indicator_->SetBounds(
- 0, 0, indicator_width, kTimeoutIndicatorHeight);
-}
-
-void SearchResultListView::ListItemsAdded(size_t start, size_t count) {
- ScheduleUpdate();
-}
-
-void SearchResultListView::ListItemsRemoved(size_t start, size_t count) {
- size_t last = std::min(
- start + count,
- static_cast<size_t>(results_container_->child_count()));
- for (size_t i = start; i < last; ++i)
- GetResultViewAt(i)->ClearResultNoRepaint();
-
- ScheduleUpdate();
-}
-
-void SearchResultListView::ListItemMoved(size_t index, size_t target_index) {
- NOTREACHED();
-}
-
-void SearchResultListView::ListItemsChanged(size_t start, size_t count) {
- NOTREACHED();
-}
-
-void SearchResultListView::SearchResultActivated(SearchResultView* view,
- int event_flags) {
- if (view_delegate_ && view->result())
- view_delegate_->OpenSearchResult(view->result(), false, event_flags);
-}
-
-void SearchResultListView::SearchResultActionActivated(SearchResultView* view,
- size_t action_index,
- int event_flags) {
- if (view_delegate_ && view->result()) {
- view_delegate_->InvokeSearchResultAction(
- view->result(), action_index, event_flags);
- }
-}
-
-void SearchResultListView::OnSearchResultInstalled(SearchResultView* view) {
- if (delegate_ && view->result())
- delegate_->OnResultInstalled(view->result());
-}
-
-void SearchResultListView::OnSearchResultUninstalled(SearchResultView* view) {
- if (delegate_ && view->result())
- delegate_->OnResultUninstalled(view->result());
-}
-
-} // namespace app_list
« no previous file with comments | « ui/app_list/views/search_result_list_view.h ('k') | ui/app_list/views/search_result_list_view_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698