Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(442)

Side by Side Diff: ash/common/shelf/shelf_model.h

Issue 2627533002: Replace ShelfItemDelegate::GetTitle() with ShelfItem::title. (Closed)
Patch Set: Address comments. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ash/common/shelf/shelf_item_types.h ('k') | ash/common/shelf/shelf_model.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef ASH_COMMON_SHELF_SHELF_MODEL_H_ 5 #ifndef ASH_COMMON_SHELF_SHELF_MODEL_H_
6 #define ASH_COMMON_SHELF_SHELF_MODEL_H_ 6 #define ASH_COMMON_SHELF_SHELF_MODEL_H_
7 7
8 #include <map> 8 #include <map>
9 #include <memory> 9 #include <memory>
10 10
11 #include "ash/ash_export.h" 11 #include "ash/ash_export.h"
12 #include "ash/common/shelf/shelf_item_types.h" 12 #include "ash/common/shelf/shelf_item_types.h"
13 #include "base/macros.h" 13 #include "base/macros.h"
14 #include "base/observer_list.h" 14 #include "base/observer_list.h"
15 15
16 namespace ash { 16 namespace ash {
17 17
18 class ShelfItemDelegate; 18 class ShelfItemDelegate;
19 class ShelfModelObserver; 19 class ShelfModelObserver;
20 20
21 // Model used for shelf items. Owns ShelfItemDelegates, but does not create 21 // Model used for shelf items. Owns ShelfItemDelegates but does not create them.
22 // them.
23 class ASH_EXPORT ShelfModel { 22 class ASH_EXPORT ShelfModel {
24 public: 23 public:
25 enum Status {
26 STATUS_NORMAL,
27 // A status that indicates apps are syncing/loading.
28 STATUS_LOADING,
29 };
30
31 ShelfModel(); 24 ShelfModel();
32 ~ShelfModel(); 25 ~ShelfModel();
33 26
34 // Cleans up the ShelfItemDelegates. 27 // Cleans up the ShelfItemDelegates.
35 void DestroyItemDelegates(); 28 void DestroyItemDelegates();
36 29
37 // Adds a new item to the model. Returns the resulting index. 30 // Adds a new item to the model. Returns the resulting index.
38 int Add(const ShelfItem& item); 31 int Add(const ShelfItem& item);
39 32
40 // Adds the item. |index| is the requested insertion index, which may be 33 // Adds the item. |index| is the requested insertion index, which may be
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 // Returns a reserved id which will not be used by the |ShelfModel|. 68 // Returns a reserved id which will not be used by the |ShelfModel|.
76 ShelfID reserve_external_id() { return next_id_++; } 69 ShelfID reserve_external_id() { return next_id_++; }
77 70
78 // Returns an iterator into items() for the item with the specified id, or 71 // Returns an iterator into items() for the item with the specified id, or
79 // items().end() if there is no item with the specified id. 72 // items().end() if there is no item with the specified id.
80 ShelfItems::const_iterator ItemByID(ShelfID id) const; 73 ShelfItems::const_iterator ItemByID(ShelfID id) const;
81 74
82 const ShelfItems& items() const { return items_; } 75 const ShelfItems& items() const { return items_; }
83 int item_count() const { return static_cast<int>(items_.size()); } 76 int item_count() const { return static_cast<int>(items_.size()); }
84 77
85 void set_status(Status status) { status_ = status; }
86 Status status() const { return status_; }
87
88 // Set |item_delegate| for |id| and takes ownership. 78 // Set |item_delegate| for |id| and takes ownership.
89 void SetShelfItemDelegate(ShelfID id, 79 void SetShelfItemDelegate(ShelfID id,
90 std::unique_ptr<ShelfItemDelegate> item_delegate); 80 std::unique_ptr<ShelfItemDelegate> item_delegate);
91 81
92 // Returns ShelfItemDelegate for |id|, or null if none exists. 82 // Returns ShelfItemDelegate for |id|, or null if none exists.
93 ShelfItemDelegate* GetShelfItemDelegate(ShelfID id); 83 ShelfItemDelegate* GetShelfItemDelegate(ShelfID id);
94 84
95 void AddObserver(ShelfModelObserver* observer); 85 void AddObserver(ShelfModelObserver* observer);
96 void RemoveObserver(ShelfModelObserver* observer); 86 void RemoveObserver(ShelfModelObserver* observer);
97 87
98 private: 88 private:
99 // Makes sure |index| is in line with the type-based order of items. If that 89 // Makes sure |index| is in line with the type-based order of items. If that
100 // is not the case, adjusts index by shifting it to the valid range and 90 // is not the case, adjusts index by shifting it to the valid range and
101 // returns the new value. 91 // returns the new value.
102 int ValidateInsertionIndex(ShelfItemType type, int index) const; 92 int ValidateInsertionIndex(ShelfItemType type, int index) const;
103 93
104 // Remove and destroy ShelfItemDelegate for |id|. 94 // Remove and destroy ShelfItemDelegate for |id|.
105 void RemoveShelfItemDelegate(ShelfID id); 95 void RemoveShelfItemDelegate(ShelfID id);
106 96
107 // ID assigned to the next item. 97 // ID assigned to the next item.
108 ShelfID next_id_; 98 ShelfID next_id_;
109 99
110 ShelfItems items_; 100 ShelfItems items_;
111 Status status_;
112 base::ObserverList<ShelfModelObserver> observers_; 101 base::ObserverList<ShelfModelObserver> observers_;
113 102
114 std::map<ShelfID, std::unique_ptr<ShelfItemDelegate>> 103 std::map<ShelfID, std::unique_ptr<ShelfItemDelegate>>
115 id_to_item_delegate_map_; 104 id_to_item_delegate_map_;
116 105
117 DISALLOW_COPY_AND_ASSIGN(ShelfModel); 106 DISALLOW_COPY_AND_ASSIGN(ShelfModel);
118 }; 107 };
119 108
120 } // namespace ash 109 } // namespace ash
121 110
122 #endif // ASH_COMMON_SHELF_SHELF_MODEL_H_ 111 #endif // ASH_COMMON_SHELF_SHELF_MODEL_H_
OLDNEW
« no previous file with comments | « ash/common/shelf/shelf_item_types.h ('k') | ash/common/shelf/shelf_model.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698