// 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/geometry/rect.h" #include "ui/gfx/image/image_skia.h" namespace app_list { AppListFolderItem::AppListFolderItem(const std::string& id, FolderType folder_type) : AppListItem(id), folder_type_(folder_type), item_list_(new AppListItemList), folder_image_(item_list_.get()) { folder_image_.AddObserver(this); } AppListFolderItem::~AppListFolderItem() { folder_image_.RemoveObserver(this); } const gfx::ImageSkia& AppListFolderItem::GetTopIcon(size_t item_index) { return folder_image_.GetTopIcon(item_index); } gfx::Rect AppListFolderItem::GetTargetIconRectInFolderForItem( AppListItem* item, const gfx::Rect& folder_icon_bounds) { return folder_image_.GetTargetIconRectInFolderForItem(item, folder_icon_bounds); } void AppListFolderItem::Activate(int event_flags) { // Folder handling is implemented by the View, so do nothing. } // static const char AppListFolderItem::kItemType[] = "FolderItem"; 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(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::OnFolderImageUpdated() { SetIcon(folder_image_.icon(), false); } } // namespace app_list