1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef UI_APP_LIST_APP_LIST_FOLDER_ITEM_H_ 6 #define UI_APP_LIST_APP_LIST_FOLDER_ITEM_H_ 7 8 #include <string> 9 #include <vector> 10 11 #include "ui/app_list/app_list_export.h" 12 #include "ui/app_list/app_list_item_list_observer.h" 13 #include "ui/app_list/app_list_item_model.h" 14 #include "ui/app_list/app_list_item_model_observer.h" 15 16 namespace app_list { 17 18 class AppListItemList; 19 20 // AppListFolderItem implements the model/controller for folders. 21 class APP_LIST_EXPORT AppListFolderItem : public AppListItemModel, 22 public AppListItemListObserver, 23 public AppListItemModelObserver { 24 public: 25 explicit AppListFolderItem(const std::string& id); 26 virtual ~AppListFolderItem(); 27 28 // Updates the folder's icon. 29 void UpdateIcon(); 30 31 AppListItemList* item_list() { return item_list_.get(); } 32 33 static const char kAppType[]; 34 35 private: 36 // AppListItemModel 37 virtual void Activate(int event_flags) OVERRIDE; 38 virtual const char* GetAppType() const OVERRIDE; 39 virtual ui::MenuModel* GetContextMenuModel() OVERRIDE; 40 41 // AppListItemModelObserver 42 virtual void ItemIconChanged() OVERRIDE; 43 virtual void ItemTitleChanged() OVERRIDE; 44 virtual void ItemHighlightedChanged() OVERRIDE; 45 virtual void ItemIsInstallingChanged() OVERRIDE; 46 virtual void ItemPercentDownloadedChanged() OVERRIDE; 47 48 // AppListItemListObserver 49 virtual void OnListItemAdded(size_t index, AppListItemModel* item) OVERRIDE; 50 virtual void OnListItemRemoved(size_t index, 51 AppListItemModel* item) OVERRIDE;; 52 virtual void OnListItemMoved(size_t from_index, 53 size_t to_index, 54 AppListItemModel* item) OVERRIDE; 55 56 void UpdateTopItems(); 57 58 scoped_ptr<AppListItemList> item_list_; 59 // Top items for generating folder icon. 60 std::vector<AppListItemModel*> top_items_; 61 62 DISALLOW_COPY_AND_ASSIGN(AppListFolderItem); 63 }; 64 65 } // namespace app_list 66 67 #endif // UI_APP_LIST_APP_LIST_FOLDER_ITEM_H_ 68