Home | History | Annotate | Download | only in app_list
      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