From ac91d05f3480cafd283ace45047963c18740b150 Mon Sep 17 00:00:00 2001 From: Leonardo Robol Date: Mon, 23 Apr 2012 22:11:28 +0200 Subject: [PATCH] Add delete of FeedNode objects when closing Larss --- include/feedmodel.h | 2 ++ larss/feedmodel.cpp | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) 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 -- 2.1.4