[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:07 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-common-internals.git;a=commitdiff;h=47e109e

The following commit has been merged in the master branch:
commit 47e109e51f011f3c6ce92f7894bd8013bab327bc
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