| Index: ui/app_list/views/apps_container_view.cc
|
| diff --git a/ui/app_list/views/apps_container_view.cc b/ui/app_list/views/apps_container_view.cc
|
| deleted file mode 100644
|
| index b026a3ed4ed728d8774e4f7f04a88ae5066a6b8f..0000000000000000000000000000000000000000
|
| --- a/ui/app_list/views/apps_container_view.cc
|
| +++ /dev/null
|
| @@ -1,244 +0,0 @@
|
| -// Copyright 2013 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/apps_container_view.h"
|
| -
|
| -#include <algorithm>
|
| -#include <vector>
|
| -
|
| -#include "base/command_line.h"
|
| -#include "ui/app_list/app_list_constants.h"
|
| -#include "ui/app_list/app_list_folder_item.h"
|
| -#include "ui/app_list/app_list_switches.h"
|
| -#include "ui/app_list/views/app_list_folder_view.h"
|
| -#include "ui/app_list/views/app_list_item_view.h"
|
| -#include "ui/app_list/views/app_list_main_view.h"
|
| -#include "ui/app_list/views/apps_grid_view.h"
|
| -#include "ui/app_list/views/folder_background_view.h"
|
| -#include "ui/events/event.h"
|
| -
|
| -namespace app_list {
|
| -
|
| -AppsContainerView::AppsContainerView(AppListMainView* app_list_main_view,
|
| - AppListModel* model)
|
| - : model_(model),
|
| - show_state_(SHOW_NONE),
|
| - top_icon_animation_pending_count_(0) {
|
| - apps_grid_view_ = new AppsGridView(app_list_main_view);
|
| - int cols;
|
| - int rows;
|
| - if (switches::IsExperimentalAppListEnabled()) {
|
| - cols = kExperimentalPreferredCols;
|
| - rows = kExperimentalPreferredRows;
|
| - } else if (app_list_main_view->ShouldCenterWindow()) {
|
| - cols = kCenteredPreferredCols;
|
| - rows = kCenteredPreferredRows;
|
| - } else {
|
| - cols = kPreferredCols;
|
| - rows = kPreferredRows;
|
| - }
|
| - apps_grid_view_->SetLayout(cols, rows);
|
| - AddChildView(apps_grid_view_);
|
| -
|
| - folder_background_view_ = new FolderBackgroundView();
|
| - AddChildView(folder_background_view_);
|
| -
|
| - app_list_folder_view_ =
|
| - new AppListFolderView(this, model, app_list_main_view);
|
| - // The folder view is initially hidden.
|
| - app_list_folder_view_->SetVisible(false);
|
| - AddChildView(app_list_folder_view_);
|
| -
|
| - apps_grid_view_->SetModel(model_);
|
| - apps_grid_view_->SetItemList(model_->top_level_item_list());
|
| - SetShowState(SHOW_APPS,
|
| - false); /* show apps without animation */
|
| -}
|
| -
|
| -AppsContainerView::~AppsContainerView() {
|
| -}
|
| -
|
| -void AppsContainerView::ShowActiveFolder(AppListFolderItem* folder_item) {
|
| - // Prevent new animations from starting if there are currently animations
|
| - // pending. This fixes crbug.com/357099.
|
| - if (top_icon_animation_pending_count_)
|
| - return;
|
| -
|
| - app_list_folder_view_->SetAppListFolderItem(folder_item);
|
| - SetShowState(SHOW_ACTIVE_FOLDER, false);
|
| -
|
| - CreateViewsForFolderTopItemsAnimation(folder_item, true);
|
| -}
|
| -
|
| -void AppsContainerView::ShowApps(AppListFolderItem* folder_item) {
|
| - if (top_icon_animation_pending_count_)
|
| - return;
|
| -
|
| - PrepareToShowApps(folder_item);
|
| - SetShowState(SHOW_APPS,
|
| - true); /* show apps with animation */
|
| -}
|
| -
|
| -void AppsContainerView::ResetForShowApps() {
|
| - SetShowState(SHOW_APPS, false /* show apps without animation */);
|
| - folder_background_view_->UpdateFolderContainerBubble(
|
| - FolderBackgroundView::NO_BUBBLE);
|
| -}
|
| -
|
| -void AppsContainerView::SetDragAndDropHostOfCurrentAppList(
|
| - ApplicationDragAndDropHost* drag_and_drop_host) {
|
| - apps_grid_view()->SetDragAndDropHostOfCurrentAppList(drag_and_drop_host);
|
| - app_list_folder_view()->items_grid_view()->
|
| - SetDragAndDropHostOfCurrentAppList(drag_and_drop_host);
|
| -}
|
| -
|
| -void AppsContainerView::ReparentFolderItemTransit(
|
| - AppListFolderItem* folder_item) {
|
| - if (top_icon_animation_pending_count_)
|
| - return;
|
| -
|
| - PrepareToShowApps(folder_item);
|
| - SetShowState(SHOW_ITEM_REPARENT, false);
|
| -}
|
| -
|
| -bool AppsContainerView::IsInFolderView() const {
|
| - return show_state_ == SHOW_ACTIVE_FOLDER;
|
| -}
|
| -
|
| -gfx::Size AppsContainerView::GetPreferredSize() const {
|
| - const gfx::Size grid_size = apps_grid_view_->GetPreferredSize();
|
| - const gfx::Size folder_view_size = app_list_folder_view_->GetPreferredSize();
|
| -
|
| - int width = std::max(grid_size.width(), folder_view_size.width());
|
| - int height = std::max(grid_size.height(), folder_view_size.height());
|
| - return gfx::Size(width, height);
|
| -}
|
| -
|
| -void AppsContainerView::Layout() {
|
| - gfx::Rect rect(GetContentsBounds());
|
| - if (rect.IsEmpty())
|
| - return;
|
| -
|
| - switch (show_state_) {
|
| - case SHOW_APPS:
|
| - apps_grid_view_->SetBoundsRect(rect);
|
| - break;
|
| - case SHOW_ACTIVE_FOLDER:
|
| - folder_background_view_->SetBoundsRect(rect);
|
| - app_list_folder_view_->SetBoundsRect(rect);
|
| - break;
|
| - case SHOW_ITEM_REPARENT:
|
| - break;
|
| - default:
|
| - NOTREACHED();
|
| - }
|
| -}
|
| -
|
| -bool AppsContainerView::OnKeyPressed(const ui::KeyEvent& event) {
|
| - if (show_state_ == SHOW_APPS)
|
| - return apps_grid_view_->OnKeyPressed(event);
|
| - else
|
| - return app_list_folder_view_->OnKeyPressed(event);
|
| -}
|
| -
|
| -void AppsContainerView::OnTopIconAnimationsComplete() {
|
| - --top_icon_animation_pending_count_;
|
| -
|
| - if (!top_icon_animation_pending_count_) {
|
| - // Clean up the transitional views used for top item icon animation.
|
| - top_icon_views_.clear();
|
| -
|
| - // Show the folder icon when closing the folder.
|
| - if ((show_state_ == SHOW_APPS || show_state_ == SHOW_ITEM_REPARENT) &&
|
| - apps_grid_view_->activated_folder_item_view()) {
|
| - apps_grid_view_->activated_folder_item_view()->SetVisible(true);
|
| - }
|
| - }
|
| -}
|
| -
|
| -void AppsContainerView::SetShowState(ShowState show_state,
|
| - bool show_apps_with_animation) {
|
| - if (show_state_ == show_state)
|
| - return;
|
| -
|
| - show_state_ = show_state;
|
| -
|
| - switch (show_state_) {
|
| - case SHOW_APPS:
|
| - folder_background_view_->SetVisible(false);
|
| - if (show_apps_with_animation) {
|
| - app_list_folder_view_->ScheduleShowHideAnimation(false, false);
|
| - apps_grid_view_->ScheduleShowHideAnimation(true);
|
| - } else {
|
| - app_list_folder_view_->HideViewImmediately();
|
| - apps_grid_view_->ResetForShowApps();
|
| - }
|
| - break;
|
| - case SHOW_ACTIVE_FOLDER:
|
| - folder_background_view_->SetVisible(true);
|
| - apps_grid_view_->ScheduleShowHideAnimation(false);
|
| - app_list_folder_view_->ScheduleShowHideAnimation(true, false);
|
| - break;
|
| - case SHOW_ITEM_REPARENT:
|
| - folder_background_view_->SetVisible(false);
|
| - folder_background_view_->UpdateFolderContainerBubble(
|
| - FolderBackgroundView::NO_BUBBLE);
|
| - app_list_folder_view_->ScheduleShowHideAnimation(false, true);
|
| - apps_grid_view_->ScheduleShowHideAnimation(true);
|
| - break;
|
| - default:
|
| - NOTREACHED();
|
| - }
|
| -
|
| - Layout();
|
| -}
|
| -
|
| -Rects AppsContainerView::GetTopItemIconBoundsInActiveFolder() {
|
| - // Get the active folder's icon bounds relative to AppsContainerView.
|
| - AppListItemView* folder_item_view =
|
| - apps_grid_view_->activated_folder_item_view();
|
| - gfx::Rect to_grid_view = folder_item_view->ConvertRectToParent(
|
| - folder_item_view->GetIconBounds());
|
| - gfx::Rect to_container = apps_grid_view_->ConvertRectToParent(to_grid_view);
|
| -
|
| - return AppListFolderItem::GetTopIconsBounds(to_container);
|
| -}
|
| -
|
| -void AppsContainerView::CreateViewsForFolderTopItemsAnimation(
|
| - AppListFolderItem* active_folder,
|
| - bool open_folder) {
|
| - top_icon_views_.clear();
|
| - std::vector<gfx::Rect> top_items_bounds =
|
| - GetTopItemIconBoundsInActiveFolder();
|
| - top_icon_animation_pending_count_ =
|
| - std::min(kNumFolderTopItems, active_folder->item_list()->item_count());
|
| - for (size_t i = 0; i < top_icon_animation_pending_count_; ++i) {
|
| - if (active_folder->GetTopIcon(i).isNull())
|
| - continue;
|
| -
|
| - TopIconAnimationView* icon_view = new TopIconAnimationView(
|
| - active_folder->GetTopIcon(i), top_items_bounds[i], open_folder);
|
| - icon_view->AddObserver(this);
|
| - top_icon_views_.push_back(icon_view);
|
| -
|
| - // Add the transitional views into child views, and set its bounds to the
|
| - // same location of the item in the folder list view.
|
| - AddChildView(top_icon_views_[i]);
|
| - top_icon_views_[i]->SetBoundsRect(
|
| - app_list_folder_view_->ConvertRectToParent(
|
| - app_list_folder_view_->GetItemIconBoundsAt(i)));
|
| - static_cast<TopIconAnimationView*>(top_icon_views_[i])->TransformView();
|
| - }
|
| -}
|
| -
|
| -void AppsContainerView::PrepareToShowApps(AppListFolderItem* folder_item) {
|
| - if (folder_item)
|
| - CreateViewsForFolderTopItemsAnimation(folder_item, false);
|
| -
|
| - // Hide the active folder item until the animation completes.
|
| - if (apps_grid_view_->activated_folder_item_view())
|
| - apps_grid_view_->activated_folder_item_view()->SetVisible(false);
|
| -}
|
| -
|
| -} // namespace app_list
|
|
|