diff options
Diffstat (limited to 'chromium/ui/app_list/views/contents_view.cc')
-rw-r--r-- | chromium/ui/app_list/views/contents_view.cc | 263 |
1 files changed, 0 insertions, 263 deletions
diff --git a/chromium/ui/app_list/views/contents_view.cc b/chromium/ui/app_list/views/contents_view.cc deleted file mode 100644 index 225c119729c..00000000000 --- a/chromium/ui/app_list/views/contents_view.cc +++ /dev/null @@ -1,263 +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/contents_view.h" - -#include <algorithm> - -#include "base/logging.h" -#include "ui/app_list/app_list_constants.h" -#include "ui/app_list/app_list_view_delegate.h" -#include "ui/app_list/pagination_model.h" -#include "ui/app_list/views/app_list_main_view.h" -#include "ui/app_list/views/apps_container_view.h" -#include "ui/app_list/views/apps_grid_view.h" -#include "ui/app_list/views/search_result_list_view.h" -#include "ui/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 { - -// Indexes of interesting views in ViewModel of ContentsView. -const int kIndexAppsContainer = 0; -const int kIndexSearchResults = 1; - -const int kMinMouseWheelToSwitchPage = 20; -const int kMinScrollToSwitchPage = 20; -const int kMinHorizVelocityToSwitchPage = 800; - -const double kFinishTransitionThreshold = 0.33; - -AppsContainerView* GetAppsContainerView(views::ViewModel* model) { - return static_cast<AppsContainerView*>(model->view_at(kIndexAppsContainer)); -} - -SearchResultListView* GetSearchResultListView(views::ViewModel* model) { - return static_cast<SearchResultListView*>( - model->view_at(kIndexSearchResults)); -} - -} // namespace - -ContentsView::ContentsView(AppListMainView* app_list_main_view, - PaginationModel* pagination_model, - AppListModel* model, - content::WebContents* start_page_contents) - : show_state_(SHOW_APPS), - pagination_model_(pagination_model), - view_model_(new views::ViewModel), - bounds_animator_(new views::BoundsAnimator(this)) { - DCHECK(model); - pagination_model_->SetTransitionDurations( - kPageTransitionDurationInMs, - kOverscrollPageTransitionDurationMs); - - apps_container_view_ = new AppsContainerView( - app_list_main_view, pagination_model, model, start_page_contents); - AddChildView(apps_container_view_); - view_model_->Add(apps_container_view_, kIndexAppsContainer); - - SearchResultListView* search_results_view = new SearchResultListView( - app_list_main_view); - AddChildView(search_results_view); - view_model_->Add(search_results_view, kIndexSearchResults); - - GetSearchResultListView(view_model_.get())->SetResults(model->results()); -} - -ContentsView::~ContentsView() { -} - -void ContentsView::CancelDrag() { - if (apps_container_view_->apps_grid_view()->has_dragged_view()) - apps_container_view_->apps_grid_view()->EndDrag(true); -} - -void ContentsView::SetDragAndDropHostOfCurrentAppList( - ApplicationDragAndDropHost* drag_and_drop_host) { - apps_container_view_->apps_grid_view()-> - SetDragAndDropHostOfCurrentAppList(drag_and_drop_host); -} - -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 container_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: - container_frame.Offset(0, contents_area_height); - break; - default: - NOTREACHED() << "Unknown show_state_ " << show_state_; - break; - } - - view_model_->set_ideal_bounds(kIndexAppsContainer, container_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); -} - -void ContentsView::ShowFolderContent(AppListFolderItem* item) { - apps_container_view_->ShowActiveFolder(item); -} - -void ContentsView::Prerender() { - const int selected_page = std::max(0, pagination_model_->selected_page()); - apps_container_view_->apps_grid_view()->Prerender(selected_page); -} - -gfx::Size ContentsView::GetPreferredSize() { - const gfx::Size container_size = GetAppsContainerView(view_model_.get())-> - apps_grid_view()->GetPreferredSize(); - const gfx::Size results_size = - GetSearchResultListView(view_model_.get())->GetPreferredSize(); - - int width = std::max(container_size.width(), results_size.width()); - int height = std::max(container_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 GetAppsContainerView(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; - - int offset; - if (abs(event.x_offset()) > abs(event.y_offset())) - offset = event.x_offset(); - else - offset = event.y_offset(); - - if (abs(offset) > kMinMouseWheelToSwitchPage) { - if (!pagination_model_->has_transition()) { - pagination_model_->SelectPageRelative( - 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) { - return; - } - - float offset; - if (abs(event->x_offset()) > abs(event->y_offset())) - offset = event->x_offset(); - else - offset = event->y_offset(); - - if (abs(offset) > kMinScrollToSwitchPage) { - if (!pagination_model_->has_transition()) { - pagination_model_->SelectPageRelative(offset > 0 ? -1 : 1, - true); - } - event->SetHandled(); - event->StopPropagation(); - } -} - -} // namespace app_list |