Index: ui/app_list/contents_view.cc |
diff --git a/ui/app_list/contents_view.cc b/ui/app_list/contents_view.cc |
deleted file mode 100644 |
index 28ab70697f8b0255532465073e8900232002b01d..0000000000000000000000000000000000000000 |
--- a/ui/app_list/contents_view.cc |
+++ /dev/null |
@@ -1,236 +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/contents_view.h" |
- |
-#include <algorithm> |
- |
-#include "ui/app_list/app_list_constants.h" |
-#include "ui/app_list/app_list_view.h" |
-#include "ui/app_list/apps_grid_view.h" |
-#include "ui/app_list/pagination_model.h" |
-#include "ui/app_list/search_result_list_view.h" |
-#include "ui/base/events/event.h" |
-#include "ui/views/animation/bounds_animator.h" |
-#include "ui/views/view_model.h" |
-#include "ui/views/view_model_utils.h" |
- |
-namespace app_list { |
- |
-namespace { |
- |
-const int kPreferredIconDimension = 48; |
- |
-// Indexes of interesting views in ViewModel of ContentsView. |
-const int kIndexAppsGrid = 0; |
-const int kIndexSearchResults = 1; |
- |
-const int kMinMouseWheelToSwitchPage = 20; |
-const int kMinScrollToSwitchPage = 20; |
-const int kMinHorizVelocityToSwitchPage = 800; |
- |
-const double kFinishTransitionThreshold = 0.33; |
- |
-// Helpers to get certain child view from |model|. |
-AppsGridView* GetAppsGridView(views::ViewModel* model) { |
- return static_cast<AppsGridView*>(model->view_at(kIndexAppsGrid)); |
-} |
- |
-SearchResultListView* GetSearchResultListView(views::ViewModel* model) { |
- return static_cast<SearchResultListView*>( |
- model->view_at(kIndexSearchResults)); |
-} |
- |
-} // namespace |
- |
-ContentsView::ContentsView(AppListView* app_list_view, |
- PaginationModel* pagination_model) |
- : show_state_(SHOW_APPS), |
- pagination_model_(pagination_model), |
- view_model_(new views::ViewModel), |
- ALLOW_THIS_IN_INITIALIZER_LIST( |
- bounds_animator_(new views::BoundsAnimator(this))) { |
- pagination_model_->SetTransitionDurations( |
- kPageTransitionDurationInMs, |
- kOverscrollPageTransitionDurationMs); |
- |
- AppsGridView* apps_grid_view = new AppsGridView(app_list_view, |
- pagination_model); |
- apps_grid_view->SetLayout(kPreferredIconDimension, |
- kPreferredCols, |
- kPreferredRows); |
- AddChildView(apps_grid_view); |
- view_model_->Add(apps_grid_view, kIndexAppsGrid); |
- |
- SearchResultListView* search_results_view = new SearchResultListView( |
- app_list_view); |
- AddChildView(search_results_view); |
- view_model_->Add(search_results_view, kIndexSearchResults); |
-} |
- |
-ContentsView::~ContentsView() { |
-} |
- |
-void ContentsView::SetModel(AppListModel* model) { |
- if (model) { |
- GetAppsGridView(view_model_.get())->SetModel(model); |
- GetSearchResultListView(view_model_.get())->SetResults(model->results()); |
- } else { |
- GetAppsGridView(view_model_.get())->SetModel(NULL); |
- GetSearchResultListView(view_model_.get())->SetResults(NULL); |
- } |
-} |
- |
-void ContentsView::SetShowState(ShowState show_state) { |
- if (show_state_ == show_state) |
- return; |
- |
- show_state_ = show_state; |
- ShowStateChanged(); |
-} |
- |
-void ContentsView::ShowStateChanged() { |
- if (show_state_ == SHOW_SEARCH_RESULTS) { |
- // TODO(xiyuan): Highlight default match instead of the first. |
- SearchResultListView* results_view = |
- GetSearchResultListView(view_model_.get()); |
- if (results_view->visible()) |
- results_view->SetSelectedIndex(0); |
- } |
- |
- AnimateToIdealBounds(); |
-} |
- |
-void ContentsView::CalculateIdealBounds() { |
- gfx::Rect rect(GetContentsBounds()); |
- if (rect.IsEmpty()) |
- return; |
- |
- gfx::Rect grid_frame(rect); |
- gfx::Rect results_frame(rect); |
- |
- // Offsets apps grid and result list based on |show_state_|. |
- // SearchResultListView is on top of apps grid. Visible view is left in |
- // visible area and invisible ones is put out of the visible area. |
- int contents_area_height = rect.height(); |
- switch (show_state_) { |
- case SHOW_APPS: |
- results_frame.Offset(0, -contents_area_height); |
- break; |
- case SHOW_SEARCH_RESULTS: |
- grid_frame.Offset(0, contents_area_height); |
- break; |
- default: |
- NOTREACHED() << "Unknown show_state_ " << show_state_; |
- break; |
- } |
- |
- view_model_->set_ideal_bounds(kIndexAppsGrid, grid_frame); |
- view_model_->set_ideal_bounds(kIndexSearchResults, results_frame); |
-} |
- |
-void ContentsView::AnimateToIdealBounds() { |
- CalculateIdealBounds(); |
- for (int i = 0; i < view_model_->view_size(); ++i) { |
- bounds_animator_->AnimateViewTo(view_model_->view_at(i), |
- view_model_->ideal_bounds(i)); |
- } |
-} |
- |
-void ContentsView::ShowSearchResults(bool show) { |
- SetShowState(show ? SHOW_SEARCH_RESULTS : SHOW_APPS); |
-} |
- |
-gfx::Size ContentsView::GetPreferredSize() { |
- const gfx::Size grid_size = |
- GetAppsGridView(view_model_.get())->GetPreferredSize(); |
- const gfx::Size results_size = |
- GetSearchResultListView(view_model_.get())->GetPreferredSize(); |
- |
- int width = std::max(grid_size.width(), results_size.width()); |
- int height = std::max(grid_size.height(), results_size.height()); |
- return gfx::Size(width, height); |
-} |
- |
-void ContentsView::Layout() { |
- CalculateIdealBounds(); |
- views::ViewModelUtils::SetViewBoundsToIdealBounds(*view_model_); |
-} |
- |
-bool ContentsView::OnKeyPressed(const ui::KeyEvent& event) { |
- switch (show_state_) { |
- case SHOW_APPS: |
- return GetAppsGridView(view_model_.get())->OnKeyPressed(event); |
- case SHOW_SEARCH_RESULTS: |
- return GetSearchResultListView(view_model_.get())->OnKeyPressed(event); |
- default: |
- NOTREACHED() << "Unknown show state " << show_state_; |
- } |
- return false; |
-} |
- |
-bool ContentsView::OnMouseWheel(const ui::MouseWheelEvent& event) { |
- if (show_state_ != SHOW_APPS) |
- return false; |
- |
- if (abs(event.offset()) > kMinMouseWheelToSwitchPage) { |
- if (!pagination_model_->has_transition()) |
- pagination_model_->SelectPageRelative(event.offset() > 0 ? -1 : 1, true); |
- return true; |
- } |
- |
- return false; |
-} |
- |
-void ContentsView::OnGestureEvent(ui::GestureEvent* event) { |
- if (show_state_ != SHOW_APPS) |
- return; |
- |
- switch (event->type()) { |
- case ui::ET_GESTURE_SCROLL_BEGIN: |
- pagination_model_->StartScroll(); |
- event->SetHandled(); |
- return; |
- case ui::ET_GESTURE_SCROLL_UPDATE: |
- // event->details.scroll_x() > 0 means moving contents to right. That is, |
- // transitioning to previous page. |
- pagination_model_->UpdateScroll( |
- event->details().scroll_x() / GetContentsBounds().width()); |
- event->SetHandled(); |
- return; |
- case ui::ET_GESTURE_SCROLL_END: |
- pagination_model_->EndScroll(pagination_model_-> |
- transition().progress < kFinishTransitionThreshold); |
- event->SetHandled(); |
- return; |
- case ui::ET_SCROLL_FLING_START: { |
- pagination_model_->EndScroll(true); |
- if (fabs(event->details().velocity_x()) > kMinHorizVelocityToSwitchPage) { |
- pagination_model_->SelectPageRelative( |
- event->details().velocity_x() < 0 ? 1 : -1, |
- true); |
- } |
- event->SetHandled(); |
- return; |
- } |
- default: |
- break; |
- } |
-} |
- |
-void ContentsView::OnScrollEvent(ui::ScrollEvent* event) { |
- if (show_state_ != SHOW_APPS || |
- event->type() == ui::ET_SCROLL_FLING_CANCEL || |
- abs(event->x_offset()) < kMinScrollToSwitchPage) { |
- return; |
- } |
- |
- if (!pagination_model_->has_transition()) { |
- pagination_model_->SelectPageRelative(event->x_offset() > 0 ? -1 : 1, |
- true); |
- } |
- event->SetHandled(); |
-} |
- |
-} // namespace app_list |