From: Shane Jaroch Date: Wed, 21 Jan 2026 19:04:43 +0000 (-0500) Subject: don't allow re-opening same DB (weird loop) X-Git-Url: https://git.nutra.tk/v1?a=commitdiff_plain;h=cb8142a5d2dea96bca950d3141cca6a16ff5e5b4;p=nutratech%2Fgui.git don't allow re-opening same DB (weird loop) --- diff --git a/src/db/databasemanager.cpp b/src/db/databasemanager.cpp index de731d4..3d27bed 100644 --- a/src/db/databasemanager.cpp +++ b/src/db/databasemanager.cpp @@ -31,7 +31,10 @@ bool DatabaseManager::isValidNutraDatabase(const QSqlDatabase& db) { bool DatabaseManager::connect(const QString& path) { if (m_db.isOpen()) { - return true; + if (m_db.databaseName() == path) { + return true; + } + m_db.close(); } if (!QFileInfo::exists(path)) { diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 4779b98..9b8bdee 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -107,6 +107,12 @@ void MainWindow::onOpenDatabase() { "SQLite Databases (*.sqlite3 *.db)"); if (!fileName.isEmpty()) { + if (DatabaseManager::instance().isOpen() && + DatabaseManager::instance().database().databaseName() == fileName) { + QMessageBox::information(this, "Already Open", "This database is already loaded."); + return; + } + if (DatabaseManager::instance().connect(fileName)) { qDebug() << "Switched to database:" << fileName; addToRecentFiles(fileName); @@ -124,6 +130,13 @@ void MainWindow::onRecentFileClick() { auto* action = qobject_cast(sender()); if (action != nullptr) { QString fileName = action->data().toString(); + + if (DatabaseManager::instance().isOpen() && + DatabaseManager::instance().database().databaseName() == fileName) { + QMessageBox::information(this, "Already Open", "This database is already loaded."); + return; + } + if (DatabaseManager::instance().connect(fileName)) { qDebug() << "Switched to database (recent):" << fileName; addToRecentFiles(fileName);