| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 UI_BASE_MODELS_LIST_MODEL_H_ | 5 #ifndef UI_BASE_MODELS_LIST_MODEL_H_ |
| 6 #define UI_BASE_MODELS_LIST_MODEL_H_ | 6 #define UI_BASE_MODELS_LIST_MODEL_H_ |
| 7 | 7 |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 | 9 |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 | 93 |
| 94 void AddObserver(ListModelObserver* observer) { | 94 void AddObserver(ListModelObserver* observer) { |
| 95 observers_.AddObserver(observer); | 95 observers_.AddObserver(observer); |
| 96 } | 96 } |
| 97 | 97 |
| 98 void RemoveObserver(ListModelObserver* observer) { | 98 void RemoveObserver(ListModelObserver* observer) { |
| 99 observers_.RemoveObserver(observer); | 99 observers_.RemoveObserver(observer); |
| 100 } | 100 } |
| 101 | 101 |
| 102 void NotifyItemsAdded(size_t start, size_t count) { | 102 void NotifyItemsAdded(size_t start, size_t count) { |
| 103 FOR_EACH_OBSERVER(ListModelObserver, | 103 for (ListModelObserver& observer : observers_) |
| 104 observers_, | 104 observer.ListItemsAdded(start, count); |
| 105 ListItemsAdded(start, count)); | |
| 106 } | 105 } |
| 107 | 106 |
| 108 void NotifyItemsRemoved(size_t start, size_t count) { | 107 void NotifyItemsRemoved(size_t start, size_t count) { |
| 109 FOR_EACH_OBSERVER(ListModelObserver, | 108 for (ListModelObserver& observer : observers_) |
| 110 observers_, | 109 observer.ListItemsRemoved(start, count); |
| 111 ListItemsRemoved(start, count)); | |
| 112 } | 110 } |
| 113 | 111 |
| 114 void NotifyItemMoved(size_t index, size_t target_index) { | 112 void NotifyItemMoved(size_t index, size_t target_index) { |
| 115 FOR_EACH_OBSERVER(ListModelObserver, | 113 for (ListModelObserver& observer : observers_) |
| 116 observers_, | 114 observer.ListItemMoved(index, target_index); |
| 117 ListItemMoved(index, target_index)); | |
| 118 } | 115 } |
| 119 | 116 |
| 120 void NotifyItemsChanged(size_t start, size_t count) { | 117 void NotifyItemsChanged(size_t start, size_t count) { |
| 121 FOR_EACH_OBSERVER(ListModelObserver, | 118 for (ListModelObserver& observer : observers_) |
| 122 observers_, | 119 observer.ListItemsChanged(start, count); |
| 123 ListItemsChanged(start, count)); | |
| 124 } | 120 } |
| 125 | 121 |
| 126 size_t item_count() const { return items_.size(); } | 122 size_t item_count() const { return items_.size(); } |
| 127 | 123 |
| 128 const ItemType* GetItemAt(size_t index) const { | 124 const ItemType* GetItemAt(size_t index) const { |
| 129 DCHECK_LT(index, item_count()); | 125 DCHECK_LT(index, item_count()); |
| 130 return items_[index].get(); | 126 return items_[index].get(); |
| 131 } | 127 } |
| 132 ItemType* GetItemAt(size_t index) { | 128 ItemType* GetItemAt(size_t index) { |
| 133 return const_cast<ItemType*>( | 129 return const_cast<ItemType*>( |
| 134 const_cast<const ListModel<ItemType>*>(this)->GetItemAt(index)); | 130 const_cast<const ListModel<ItemType>*>(this)->GetItemAt(index)); |
| 135 } | 131 } |
| 136 | 132 |
| 137 // Iteration interface. | 133 // Iteration interface. |
| 138 typename ItemList::iterator begin() { return items_.begin(); } | 134 typename ItemList::iterator begin() { return items_.begin(); } |
| 139 typename ItemList::const_iterator begin() const { return items_.begin(); } | 135 typename ItemList::const_iterator begin() const { return items_.begin(); } |
| 140 typename ItemList::iterator end() { return items_.end(); } | 136 typename ItemList::iterator end() { return items_.end(); } |
| 141 typename ItemList::const_iterator end() const { return items_.end(); } | 137 typename ItemList::const_iterator end() const { return items_.end(); } |
| 142 | 138 |
| 143 private: | 139 private: |
| 144 ItemList items_; | 140 ItemList items_; |
| 145 base::ObserverList<ListModelObserver> observers_; | 141 base::ObserverList<ListModelObserver> observers_; |
| 146 | 142 |
| 147 DISALLOW_COPY_AND_ASSIGN(ListModel<ItemType>); | 143 DISALLOW_COPY_AND_ASSIGN(ListModel<ItemType>); |
| 148 }; | 144 }; |
| 149 | 145 |
| 150 } // namespace ui | 146 } // namespace ui |
| 151 | 147 |
| 152 #endif // UI_BASE_MODELS_LIST_MODEL_H_ | 148 #endif // UI_BASE_MODELS_LIST_MODEL_H_ |
| OLD | NEW |