- add sources.
[platform/framework/web/crosswalk.git] / src / ui / app_list / app_list_folder_item.h
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 "ui/app_list/app_list_export.h"
9 #include "ui/app_list/app_list_item_list_observer.h"
10 #include "ui/app_list/app_list_item_model.h"
11 #include "ui/app_list/app_list_item_model_observer.h"
12 #include "ui/base/models/list_model.h"
13
14 namespace app_list {
15
16 class AppListItemList;
17
18 // AppListFolderItem implements the model/controller for folders.
19 class APP_LIST_EXPORT AppListFolderItem : public AppListItemModel,
20                                           public AppListItemListObserver,
21                                           public AppListItemModelObserver {
22  public:
23   explicit AppListFolderItem(const std::string& id);
24   virtual ~AppListFolderItem();
25
26   // Updates the folder's icon.
27   void UpdateIcon();
28
29   AppListItemList* item_list() { return item_list_.get(); }
30
31   static const char kAppType[];
32
33  private:
34   // AppListItemModel
35   virtual void Activate(int event_flags) OVERRIDE;
36   virtual const char* GetAppType() const OVERRIDE;
37   virtual ui::MenuModel* GetContextMenuModel() OVERRIDE;
38
39   // AppListItemModelObserver
40   virtual void ItemIconChanged() OVERRIDE;
41   virtual void ItemTitleChanged() OVERRIDE;
42   virtual void ItemHighlightedChanged() OVERRIDE;
43   virtual void ItemIsInstallingChanged() OVERRIDE;
44   virtual void ItemPercentDownloadedChanged() OVERRIDE;
45
46   // AppListItemListObserver
47   virtual void OnListItemAdded(size_t index, AppListItemModel* item) OVERRIDE;
48   virtual void OnListItemRemoved(size_t index,
49                                  AppListItemModel* item) OVERRIDE;;
50   virtual void OnListItemMoved(size_t from_index,
51                                size_t to_index,
52                                AppListItemModel* item) OVERRIDE;
53
54   void UpdateTopItems();
55
56   scoped_ptr<AppListItemList> item_list_;
57   // Top items for generating folder icon.
58   std::vector<AppListItemModel*> top_items_;
59
60   DISALLOW_COPY_AND_ASSIGN(AppListFolderItem);
61 };
62
63 }  // namespace app_list
64
65 #endif  // UI_APP_LIST_APP_LIST_FOLDER_ITEM_H_