[SCM] ktp-common-internals packaging branch, master, updated. debian/15.12.1-2-1839-gf0635e9
Maximiliano Curia
maxy at moszumanska.debian.org
Mon May 9 09:06:02 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-common-internals.git;a=commitdiff;h=c2adedc
The following commit has been merged in the master branch:
commit c2adedce23b19ee16ead4bbb0def4194eb0882c4
Author: David Edmundson <kde at davidedmundson.co.uk>
Date: Sun Dec 30 19:18:59 2012 +0000
Remove empty groups in AbstractGroupingModel
---
KTp/Models/abstract-grouping-proxy-model.cpp | 28 +++++++++++++++++++++-------
KTp/Models/abstract-grouping-proxy-model.h | 2 ++
2 files changed, 23 insertions(+), 7 deletions(-)
diff --git a/KTp/Models/abstract-grouping-proxy-model.cpp b/KTp/Models/abstract-grouping-proxy-model.cpp
index 506b9b9..a324119 100644
--- a/KTp/Models/abstract-grouping-proxy-model.cpp
+++ b/KTp/Models/abstract-grouping-proxy-model.cpp
@@ -145,6 +145,22 @@ void AbstractGroupingProxyModel::addProxyNode(const QModelIndex &sourceIndex, QS
parent->appendRow(proxyNode);
}
+void AbstractGroupingProxyModel::removeProxyNodes(const QModelIndex &sourceIndex, const QList<ProxyNode *> &removedItems)
+{
+ Q_FOREACH(ProxyNode *proxy, removedItems) {
+ QStandardItem *parentItem = proxy->parent();
+ parentItem->removeRow(proxy->row());
+ m_proxyMap.remove(sourceIndex, proxy);
+
+ //if the parent item to this proxy node is now empty, and is a top level item
+ if (parentItem->rowCount() == 0 && parentItem->parent() == 0) {
+ GroupNode* groupNode = dynamic_cast<GroupNode*>(parentItem);
+ takeRow(groupNode->row());
+ m_groupMap.remove(groupNode->group());
+ }
+ }
+}
+
/*
* Called when a row is remove from the source model model
* Find all existing proxy models and delete thems
@@ -153,14 +169,16 @@ void AbstractGroupingProxyModel::onRowsRemoved(const QModelIndex &sourceParent,
{
for (int i = start; i<=end; i++) {
QPersistentModelIndex index = m_source->index(i, 0, sourceParent);
+ QList<ProxyNode *> itemsToRemove;
QHash<QPersistentModelIndex, ProxyNode*>::const_iterator it = m_proxyMap.find(index);
while (it != m_proxyMap.end() && it.key() == index) {
kDebug() << "removing row" << index.data();
- it.value()->parent()->removeRow(it.value()->row());
+ itemsToRemove.append(it.value());
++it;
}
- m_proxyMap.remove(index);
+ m_groupCache.remove(index);
+ removeProxyNodes(index, itemsToRemove);
}
}
@@ -199,11 +217,7 @@ void AbstractGroupingProxyModel::onDataChanged(const QModelIndex &sourceTopLeft,
++it;
}
- //do the actual removing
- Q_FOREACH(ProxyNode *proxy, removedItems) {
- proxy->parent()->removeRow(proxy->row());
- m_proxyMap.remove(index, proxy);
- }
+ removeProxyNodes(index, removedItems);
//remaining items in itemGroups are now the new groups
Q_FOREACH(const QString &group, itemGroups) {
diff --git a/KTp/Models/abstract-grouping-proxy-model.h b/KTp/Models/abstract-grouping-proxy-model.h
index 4fae5d2..a70e0b3 100644
--- a/KTp/Models/abstract-grouping-proxy-model.h
+++ b/KTp/Models/abstract-grouping-proxy-model.h
@@ -52,6 +52,8 @@ private:
/** Create a new proxyNode appended to the given parent in this model*/
void addProxyNode(const QModelIndex &sourceIndex, QStandardItem *parent);
+ void removeProxyNodes(const QModelIndex &sourceIndex, const QList<ProxyNode *> &removedItems);
+
/** Returns the standard Item belonging to a particular group name. Creating one if needed*/
QStandardItem *itemForGroup(const QString &group);
--
ktp-common-internals packaging
More information about the pkg-kde-commits
mailing list