┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2012-05-17 21:59:51 +0200
committerPeter Penz <[email protected]>2012-05-17 22:00:39 +0200
commit727fd64e121f97b32d645e2fb26c4e93c413a849 (patch)
tree8a8263cfd7ffa618605ad2d480cc63dc87c6e7d4 /src/kitemviews
parentbd02faa982c263205b5cc21d6ceb4225a83c76b5 (diff)
Create unit-test for KStandardItemModel
Diffstat (limited to 'src/kitemviews')
-rw-r--r--src/kitemviews/kfileitemmodel.h4
-rw-r--r--src/kitemviews/kstandarditemmodel.cpp58
-rw-r--r--src/kitemviews/kstandarditemmodel.h7
3 files changed, 38 insertions, 31 deletions
diff --git a/src/kitemviews/kfileitemmodel.h b/src/kitemviews/kfileitemmodel.h
index 2bbdfc797..783a0fecb 100644
--- a/src/kitemviews/kfileitemmodel.h
+++ b/src/kitemviews/kfileitemmodel.h
@@ -459,8 +459,8 @@ private:
friend class KFileItemModelSortAlgorithm; // Accesses lessThan() method
friend class KFileItemModelRolesUpdater; // Accesses emitSortProgress() method
- friend class KFileItemModelTest; // For unit testing (accesses m_dirLister)
- friend class KFileItemListViewTest; // For unit testing (accesses m_dirLister)
+ friend class KFileItemModelTest; // For unit testing
+ friend class KFileItemListViewTest; // For unit testing
};
inline bool KFileItemModel::isChildItem(int index) const
diff --git a/src/kitemviews/kstandarditemmodel.cpp b/src/kitemviews/kstandarditemmodel.cpp
index 11d72a4ac..cde86af49 100644
--- a/src/kitemviews/kstandarditemmodel.cpp
+++ b/src/kitemviews/kstandarditemmodel.cpp
@@ -38,6 +38,11 @@ KStandardItemModel::~KStandardItemModel()
void KStandardItemModel::insertItem(int index, KStandardItem* item)
{
+ if (index < 0 || index > count() || !item) {
+ delete item;
+ return;
+ }
+
if (item && !m_indexesForItems.contains(item)) {
item->m_model = this;
m_items.insert(index, item);
@@ -58,40 +63,39 @@ void KStandardItemModel::insertItem(int index, KStandardItem* item)
void KStandardItemModel::changeItem(int index, KStandardItem* item)
{
- if (item && index >= 0 && index < count()) {
- item->m_model = this;
+ if (index < 0 || index > count() || !item) {
+ delete item;
+ return;
+ }
- QSet<QByteArray> changedRoles;
+ item->m_model = this;
- KStandardItem* oldItem = m_items[index];
- const QHash<QByteArray, QVariant> oldData = oldItem->data();
- const QHash<QByteArray, QVariant> newData = item->data();
+ QSet<QByteArray> changedRoles;
- // Determine which roles have been changed
- QHashIterator<QByteArray, QVariant> it(oldData);
- while (it.hasNext()) {
- it.next();
- const QByteArray role = it.key();
- const QVariant oldValue = it.value();
- if (newData.contains(role) && newData.value(role) != oldValue) {
- changedRoles.insert(role);
- }
+ KStandardItem* oldItem = m_items[index];
+ const QHash<QByteArray, QVariant> oldData = oldItem->data();
+ const QHash<QByteArray, QVariant> newData = item->data();
+
+ // Determine which roles have been changed
+ QHashIterator<QByteArray, QVariant> it(oldData);
+ while (it.hasNext()) {
+ it.next();
+ const QByteArray role = it.key();
+ const QVariant oldValue = it.value();
+ if (newData.contains(role) && newData.value(role) != oldValue) {
+ changedRoles.insert(role);
}
+ }
- m_indexesForItems.remove(oldItem);
- delete oldItem;
- oldItem = 0;
+ m_indexesForItems.remove(oldItem);
+ delete oldItem;
+ oldItem = 0;
- m_items[index] = item;
- m_indexesForItems.insert(item, index);
+ m_items[index] = item;
+ m_indexesForItems.insert(item, index);
- onItemChanged(index, changedRoles);
- emit itemsChanged(KItemRangeList() << KItemRange(index, 1), changedRoles);
- } else {
- kWarning() << "No item available to replace on the given index" << index;
- delete item;
- item = 0;
- }
+ onItemChanged(index, changedRoles);
+ emit itemsChanged(KItemRangeList() << KItemRange(index, 1), changedRoles);
}
void KStandardItemModel::removeItem(int index)
diff --git a/src/kitemviews/kstandarditemmodel.h b/src/kitemviews/kstandarditemmodel.h
index 047c1e9b6..34032bf07 100644
--- a/src/kitemviews/kstandarditemmodel.h
+++ b/src/kitemviews/kstandarditemmodel.h
@@ -47,14 +47,16 @@ public:
* Inserts the item \a item at the index \a index. If the index
* is equal to the number of items of the model, the item
* gets appended as last element. KStandardItemModel takes
- * the ownership of the item.
+ * the ownership of the item. If the index is invalid, the item
+ * gets deleted.
*/
void insertItem(int index, KStandardItem* item);
/**
* Changes the item on the index \a index to \a item.
* KStandardItemModel takes the ownership of the item. The
- * old item gets deleted.
+ * old item gets deleted. If the index is invalid, the item
+ * gets deleted.
*/
void changeItem(int index, KStandardItem* item);
@@ -102,6 +104,7 @@ private:
QHash<const KStandardItem*, int> m_indexesForItems;
friend class KStandardItem;
+ friend class KStandardItemModelTest; // For unit testing
};
#endif