| Index: ui/app_list/app_list_folder_item.cc
|
| diff --git a/ui/app_list/app_list_folder_item.cc b/ui/app_list/app_list_folder_item.cc
|
| deleted file mode 100644
|
| index 120d48e219e10ef82365500fefdb69295dcb6314..0000000000000000000000000000000000000000
|
| --- a/ui/app_list/app_list_folder_item.cc
|
| +++ /dev/null
|
| @@ -1,246 +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/app_list_folder_item.h"
|
| -
|
| -#include "base/guid.h"
|
| -#include "ui/app_list/app_list_constants.h"
|
| -#include "ui/app_list/app_list_item_list.h"
|
| -#include "ui/gfx/canvas.h"
|
| -#include "ui/gfx/image/canvas_image_source.h"
|
| -#include "ui/gfx/image/image_skia_operations.h"
|
| -
|
| -namespace app_list {
|
| -
|
| -namespace {
|
| -
|
| -const int kItemIconDimension = 16;
|
| -
|
| -// Generates the folder icon with the top 4 child item icons laid in 2x2 tile.
|
| -class FolderImageSource : public gfx::CanvasImageSource {
|
| - public:
|
| - typedef std::vector<gfx::ImageSkia> Icons;
|
| -
|
| - FolderImageSource(const Icons& icons, const gfx::Size& size)
|
| - : gfx::CanvasImageSource(size, false),
|
| - icons_(icons),
|
| - size_(size) {
|
| - DCHECK(icons.size() <= kNumFolderTopItems);
|
| - }
|
| -
|
| - ~FolderImageSource() override {}
|
| -
|
| - private:
|
| - void DrawIcon(gfx::Canvas* canvas,
|
| - const gfx::ImageSkia& icon,
|
| - const gfx::Size icon_size,
|
| - int x, int y) {
|
| - if (icon.isNull())
|
| - return;
|
| -
|
| - gfx::ImageSkia resized(
|
| - gfx::ImageSkiaOperations::CreateResizedImage(
|
| - icon, skia::ImageOperations::RESIZE_BEST, icon_size));
|
| - canvas->DrawImageInt(resized, 0, 0, resized.width(), resized.height(),
|
| - x, y, resized.width(), resized.height(), true);
|
| - }
|
| -
|
| - // gfx::CanvasImageSource overrides:
|
| - void Draw(gfx::Canvas* canvas) override {
|
| - // Draw folder circle.
|
| - gfx::Point center = gfx::Point(size().width() / 2 , size().height() / 2);
|
| - SkPaint paint;
|
| - paint.setStyle(SkPaint::kFill_Style);
|
| - paint.setAntiAlias(true);
|
| - paint.setColor(kFolderBubbleColor);
|
| - canvas->DrawCircle(center, size().width() / 2, paint);
|
| -
|
| - if (icons_.size() == 0)
|
| - return;
|
| -
|
| - // Draw top items' icons.
|
| - const gfx::Size item_icon_size =
|
| - gfx::Size(kItemIconDimension, kItemIconDimension);
|
| - Rects top_icon_bounds =
|
| - AppListFolderItem::GetTopIconsBounds(gfx::Rect(size()));
|
| -
|
| - for (size_t i= 0; i < kNumFolderTopItems && i < icons_.size(); ++i) {
|
| - DrawIcon(canvas, icons_[i], item_icon_size,
|
| - top_icon_bounds[i].x(), top_icon_bounds[i].y());
|
| - }
|
| - }
|
| -
|
| - Icons icons_;
|
| - gfx::Size size_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(FolderImageSource);
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -AppListFolderItem::AppListFolderItem(const std::string& id,
|
| - FolderType folder_type)
|
| - : AppListItem(id),
|
| - folder_type_(folder_type),
|
| - item_list_(new AppListItemList) {
|
| - item_list_->AddObserver(this);
|
| -}
|
| -
|
| -AppListFolderItem::~AppListFolderItem() {
|
| - for (size_t i = 0; i < top_items_.size(); ++i)
|
| - top_items_[i]->RemoveObserver(this);
|
| - item_list_->RemoveObserver(this);
|
| -}
|
| -
|
| -void AppListFolderItem::UpdateIcon() {
|
| - FolderImageSource::Icons top_icons;
|
| - for (size_t i = 0; i < top_items_.size(); ++i)
|
| - top_icons.push_back(top_items_[i]->icon());
|
| -
|
| - const gfx::Size icon_size = gfx::Size(kGridIconDimension, kGridIconDimension);
|
| - gfx::ImageSkia icon = gfx::ImageSkia(
|
| - new FolderImageSource(top_icons, icon_size),
|
| - icon_size);
|
| - SetIcon(icon, false);
|
| -}
|
| -
|
| -const gfx::ImageSkia& AppListFolderItem::GetTopIcon(size_t item_index) {
|
| - DCHECK(item_index <= top_items_.size());
|
| - return top_items_[item_index]->icon();
|
| -}
|
| -
|
| -gfx::Rect AppListFolderItem::GetTargetIconRectInFolderForItem(
|
| - AppListItem* item,
|
| - const gfx::Rect& folder_icon_bounds) {
|
| - for (size_t i = 0; i < top_items_.size(); ++i) {
|
| - if (item->id() == top_items_[i]->id()) {
|
| - Rects rects = AppListFolderItem::GetTopIconsBounds(folder_icon_bounds);
|
| - return rects[i];
|
| - }
|
| - }
|
| -
|
| - gfx::Rect target_rect(folder_icon_bounds);
|
| - target_rect.ClampToCenteredSize(
|
| - gfx::Size(kItemIconDimension, kItemIconDimension));
|
| - return target_rect;
|
| -}
|
| -
|
| -void AppListFolderItem::Activate(int event_flags) {
|
| - // Folder handling is implemented by the View, so do nothing.
|
| -}
|
| -
|
| -// static
|
| -const char AppListFolderItem::kItemType[] = "FolderItem";
|
| -
|
| -// static
|
| -Rects AppListFolderItem::GetTopIconsBounds(
|
| - const gfx::Rect& folder_icon_bounds) {
|
| - const int delta_to_center = 1;
|
| - gfx::Point icon_center = folder_icon_bounds.CenterPoint();
|
| - Rects top_icon_bounds;
|
| -
|
| - // Get the top left icon bounds.
|
| - int left_x = icon_center.x() - kItemIconDimension - delta_to_center;
|
| - int top_y = icon_center.y() - kItemIconDimension - delta_to_center;
|
| - gfx::Rect top_left(left_x, top_y, kItemIconDimension, kItemIconDimension);
|
| - top_icon_bounds.push_back(top_left);
|
| -
|
| - // Get the top right icon bounds.
|
| - int right_x = icon_center.x() + delta_to_center;
|
| - gfx::Rect top_right(right_x, top_y, kItemIconDimension, kItemIconDimension);
|
| - top_icon_bounds.push_back(top_right);
|
| -
|
| - // Get the bottom left icon bounds.
|
| - int bottom_y = icon_center.y() + delta_to_center;
|
| - gfx::Rect bottom_left(
|
| - left_x, bottom_y, kItemIconDimension, kItemIconDimension);
|
| - top_icon_bounds.push_back(bottom_left);
|
| -
|
| - // Get the bottom right icon bounds.
|
| - gfx::Rect bottom_right(
|
| - right_x, bottom_y, kItemIconDimension, kItemIconDimension);
|
| - top_icon_bounds.push_back(bottom_right);
|
| -
|
| - return top_icon_bounds;
|
| -}
|
| -
|
| -const char* AppListFolderItem::GetItemType() const {
|
| - return AppListFolderItem::kItemType;
|
| -}
|
| -
|
| -ui::MenuModel* AppListFolderItem::GetContextMenuModel() {
|
| - // TODO(stevenjb/jennyz): Implement.
|
| - return NULL;
|
| -}
|
| -
|
| -AppListItem* AppListFolderItem::FindChildItem(const std::string& id) {
|
| - return item_list_->FindItem(id);
|
| -}
|
| -
|
| -size_t AppListFolderItem::ChildItemCount() const {
|
| - return item_list_->item_count();
|
| -}
|
| -
|
| -void AppListFolderItem::OnExtensionPreferenceChanged() {
|
| - for (size_t i = 0; i < item_list_->item_count(); ++i)
|
| - item_list_->item_at(i)->OnExtensionPreferenceChanged();
|
| -}
|
| -
|
| -bool AppListFolderItem::CompareForTest(const AppListItem* other) const {
|
| - if (!AppListItem::CompareForTest(other))
|
| - return false;
|
| - const AppListFolderItem* other_folder =
|
| - static_cast<const AppListFolderItem*>(other);
|
| - if (other_folder->item_list()->item_count() != item_list_->item_count())
|
| - return false;
|
| - for (size_t i = 0; i < item_list_->item_count(); ++i) {
|
| - if (!item_list()->item_at(i)->CompareForTest(
|
| - other_folder->item_list()->item_at(i)))
|
| - return false;
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -std::string AppListFolderItem::GenerateId() {
|
| - return base::GenerateGUID();
|
| -}
|
| -
|
| -void AppListFolderItem::ItemIconChanged() {
|
| - UpdateIcon();
|
| -}
|
| -
|
| -void AppListFolderItem::OnListItemAdded(size_t index,
|
| - AppListItem* item) {
|
| - if (index <= kNumFolderTopItems)
|
| - UpdateTopItems();
|
| -}
|
| -
|
| -void AppListFolderItem::OnListItemRemoved(size_t index,
|
| - AppListItem* item) {
|
| - if (index <= kNumFolderTopItems)
|
| - UpdateTopItems();
|
| -}
|
| -
|
| -void AppListFolderItem::OnListItemMoved(size_t from_index,
|
| - size_t to_index,
|
| - AppListItem* item) {
|
| - if (from_index <= kNumFolderTopItems || to_index <= kNumFolderTopItems)
|
| - UpdateTopItems();
|
| -}
|
| -
|
| -void AppListFolderItem::UpdateTopItems() {
|
| - for (size_t i = 0; i < top_items_.size(); ++i)
|
| - top_items_[i]->RemoveObserver(this);
|
| - top_items_.clear();
|
| -
|
| - for (size_t i = 0;
|
| - i < kNumFolderTopItems && i < item_list_->item_count(); ++i) {
|
| - AppListItem* item = item_list_->item_at(i);
|
| - item->AddObserver(this);
|
| - top_items_.push_back(item);
|
| - }
|
| - UpdateIcon();
|
| -}
|
| -
|
| -} // namespace app_list
|
|
|