Index: ui/base/models/list_model.h |
=================================================================== |
--- ui/base/models/list_model.h (revision 115517) |
+++ ui/base/models/list_model.h (working copy) |
@@ -1,116 +0,0 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef UI_BASE_MODELS_LIST_MODEL_H_ |
-#define UI_BASE_MODELS_LIST_MODEL_H_ |
-#pragma once |
- |
-#include "base/basictypes.h" |
-#include "base/logging.h" |
-#include "base/observer_list.h" |
-#include "base/memory/scoped_vector.h" |
-#include "ui/base/models/list_model_observer.h" |
- |
-namespace ui { |
- |
-// A list model that manages a list of ItemType pointers. Items added to the |
-// model are owned by the model. An item can be taken out of the model by |
-// RemoveAt. |
-template <class ItemType> |
-class ListModel { |
- public: |
- typedef std::vector<ItemType*> Items; |
- |
- ListModel() {} |
- virtual ~ListModel() {} |
- |
- // Adds |item| to the model at given |index|. |
- virtual void AddAt(int index, ItemType* item) { |
- DCHECK(index >= 0 && index <= item_count()); |
- items_->insert(items_.begin() + index, item); |
- NotifyItemsAdded(index, 1); |
- } |
- |
- // Removes an item at given |index| from the model. Note the removed item |
- // is NOT deleted and it's up to the caller to delete it. |
- virtual ItemType* RemoveAt(int index) { |
- DCHECK(index >= 0 && index < item_count()); |
- ItemType* item = items_[index]; |
- items_->erase(items_.begin() + index); |
- NotifyItemsRemoved(index, 1); |
- return item; |
- } |
- |
- // Removes all items from the model. This does NOT delete the items. |
- virtual void RemoveAll() { |
- int count = item_count(); |
- items_->clear(); |
- NotifyItemsRemoved(0, count); |
- } |
- |
- // Removes an item at given |index| from the model and deletes it. |
- virtual void DeleteAt(int index) { |
- delete RemoveAt(index); |
- } |
- |
- // Removes and deletes all items from the model. |
- virtual void DeleteAll() { |
- int count = item_count(); |
- items_.reset(); |
- NotifyItemsRemoved(0, count); |
- } |
- |
- // Convenience function to append an item to the model. |
- void Add(ItemType* item) { |
- AddAt(item_count(), item); |
- } |
- |
- void AddObserver(ListModelObserver* observer) { |
- observers_.AddObserver(observer); |
- } |
- |
- void RemoveObserver(ListModelObserver* observer) { |
- observers_.RemoveObserver(observer); |
- } |
- |
- void NotifyItemsAdded(int start, int count) { |
- FOR_EACH_OBSERVER(ListModelObserver, |
- observers_, |
- ListItemsAdded(start, count)); |
- } |
- |
- void NotifyItemsRemoved(int start, int count) { |
- FOR_EACH_OBSERVER(ListModelObserver, |
- observers_, |
- ListItemsRemoved(start, count)); |
- } |
- |
- void NotifyItemsChanged(int start, int count) { |
- FOR_EACH_OBSERVER(ListModelObserver, |
- observers_, |
- ListItemsChanged(start, count)); |
- } |
- |
- int item_count() const { return static_cast<int>(items_.size()); } |
- const Items& items() const { return items_.get(); } |
- |
- const ItemType* item_at(int index) const { |
- DCHECK(index >= 0 && index < item_count()); |
- return items_[index]; |
- } |
- ItemType* item_at(int index) { |
- return const_cast<ItemType*>( |
- const_cast<const ListModel<ItemType>*>(this)->item_at(index)); |
- } |
- |
- private: |
- ScopedVector<ItemType> items_; |
- ObserverList<ListModelObserver> observers_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ListModel<ItemType>); |
-}; |
- |
-} // namespace ui |
- |
-#endif // UI_BASE_MODELS_LIST_MODEL_H_ |