From ca13ad8d254339a13f094b49932703f216793bbf Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Fri, 29 Jun 2012 23:40:51 +0200 Subject: [PATCH] Delete open databases when DatabaseTabWidget is destructed. --- src/gui/DatabaseTabWidget.cpp | 20 +++++++++++++++++++- src/gui/DatabaseTabWidget.h | 2 ++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/gui/DatabaseTabWidget.cpp b/src/gui/DatabaseTabWidget.cpp index 6a73e0c1..f32ce0da 100644 --- a/src/gui/DatabaseTabWidget.cpp +++ b/src/gui/DatabaseTabWidget.cpp @@ -53,6 +53,15 @@ DatabaseTabWidget::DatabaseTabWidget(QWidget* parent) connect(this, SIGNAL(currentChanged(int)), SLOT(emitEntrySelectionChanged())); } +DatabaseTabWidget::~DatabaseTabWidget() +{ + QHashIterator i(m_dbList); + while (i.hasNext()) { + i.next(); + deleteDatabase(i.key()); + } +} + void DatabaseTabWidget::toggleTabbar() { if (count() > 1) { if (!tabBar()->isVisible()) { @@ -201,13 +210,22 @@ bool DatabaseTabWidget::closeDatabase(Database* db) } } + deleteDatabase(db); + + return true; +} + +void DatabaseTabWidget::deleteDatabase(Database* db) +{ + const DatabaseManagerStruct dbStruct = m_dbList.value(db); + int index = databaseIndex(db); + removeTab(index); toggleTabbar(); m_dbList.remove(db); delete dbStruct.file; delete dbStruct.dbWidget; delete db; - return true; } bool DatabaseTabWidget::closeAllDatabases() { diff --git a/src/gui/DatabaseTabWidget.h b/src/gui/DatabaseTabWidget.h index af7ab315..843fecc6 100644 --- a/src/gui/DatabaseTabWidget.h +++ b/src/gui/DatabaseTabWidget.h @@ -47,6 +47,7 @@ class DatabaseTabWidget : public QTabWidget public: explicit DatabaseTabWidget(QWidget* parent); + ~DatabaseTabWidget(); void openDatabase(const QString& fileName, const QString& pw = QString(), const QString& keyFile = QString()); DatabaseWidget* currentDatabaseWidget(); @@ -93,6 +94,7 @@ private: void saveDatabase(Database* db); void saveDatabaseAs(Database* db); bool closeDatabase(Database* db); + void deleteDatabase(Database* db); int databaseIndex(Database* db); Database* indexDatabase(int index); DatabaseManagerStruct indexDatabaseManagerStruct(int index);