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

Unified Diff: ui/app_list/views/apps_container_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/apps_container_view.h ('k') | ui/app_list/views/apps_grid_view.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « ui/app_list/views/apps_container_view.h ('k') | ui/app_list/views/apps_grid_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698