Mailbox support for texture layers.
[chromium-blink-merge.git] / ui / app_list / app_list_model.h
blob4c46a0123297d05aed9d25ece397e5506475c711
1 // Copyright (c) 2012 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.
5 #ifndef UI_APP_LIST_APP_LIST_MODEL_H_
6 #define UI_APP_LIST_APP_LIST_MODEL_H_
8 #include "base/basictypes.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "base/observer_list.h"
11 #include "ui/app_list/app_list_export.h"
12 #include "ui/base/models/list_model.h"
14 namespace app_list {
16 class AppListItemModel;
17 class AppListModelObserver;
18 class SearchBoxModel;
19 class SearchResult;
21 // Master model of app list that consists of three sub models: Apps,
22 // SearchBoxModel and SearchResults. The Apps sub model owns a list of
23 // AppListItemModel and is displayed in the grid view. SearchBoxModel is
24 // the model for SearchBoxView. SearchResults owns a list of SearchResult.
25 class APP_LIST_EXPORT AppListModel {
26 public:
27 enum Status {
28 STATUS_NORMAL,
29 STATUS_SYNCING, // Syncing apps or installing synced apps.
32 typedef ui::ListModel<AppListItemModel> Apps;
33 typedef ui::ListModel<SearchResult> SearchResults;
35 AppListModel();
36 ~AppListModel();
38 void AddObserver(AppListModelObserver* observer);
39 void RemoveObserver(AppListModelObserver* observer);
41 void SetStatus(Status status);
43 Apps* apps() { return apps_.get(); }
44 SearchBoxModel* search_box() { return search_box_.get(); }
45 SearchResults* results() { return results_.get(); }
46 Status status() const { return status_; }
48 private:
49 scoped_ptr<Apps> apps_;
51 scoped_ptr<SearchBoxModel> search_box_;
52 scoped_ptr<SearchResults> results_;
54 Status status_;
55 ObserverList<AppListModelObserver> observers_;
57 DISALLOW_COPY_AND_ASSIGN(AppListModel);
60 } // namespace app_list
62 #endif // UI_APP_LIST_APP_LIST_MODEL_H_