Add delete of FeedNode objects when closing Larss

Leonardo Robol [2012-04-23 20:11]
Add delete of FeedNode objects when closing Larss
Filename
include/feedmodel.h
larss/feedmodel.cpp
diff --git a/include/feedmodel.h b/include/feedmodel.h
index ae37145..17c346c 100644
--- a/include/feedmodel.h
+++ b/include/feedmodel.h
@@ -81,6 +81,8 @@ private:

     FeedNode *rootNode;

+    void destroySubtree(QModelIndex subtreeRoot);
+

 };

diff --git a/larss/feedmodel.cpp b/larss/feedmodel.cpp
index 143e196..9afe0b3 100644
--- a/larss/feedmodel.cpp
+++ b/larss/feedmodel.cpp
@@ -35,6 +35,24 @@ FeedModel::FeedModel(QSqlDatabase db, QObject *parent) : QStandardItemModel (par

 FeedModel::~FeedModel()
 {
+    destroySubtree(index(0, 0));
+}
+
+void
+FeedModel::destroySubtree(QModelIndex subtreeRoot) {
+    if (rowCount(subtreeRoot) == 0) {
+        FeedNode * ptr = itemFromIndex(subtreeRoot);
+        delete ptr;
+    }
+    else {
+        for (int i = 0; i < rowCount(subtreeRoot); i++) {
+            QModelIndex child = index(i, 0, subtreeRoot);
+            destroySubtree(child);
+
+            FeedNode* ptr = itemFromIndex(child);
+            delete ptr;
+        }
+    }
 }

 void
ViewGit