From 808f51a61bd5b50e583c5dc9972fd793671331fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Thu, 30 Apr 2026 08:54:09 +0200 Subject: [PATCH] Extract to method, also notify on "Reload db" and "new sets found" Took 3 minutes Took 4 seconds --- .../interface/widgets/dialogs/dlg_manage_sets.cpp | 10 ++-------- cockatrice/src/interface/window_main.cpp | 5 +++-- .../libcockatrice/card/database/card_database.cpp | 12 ++++++++++++ .../libcockatrice/card/database/card_database.h | 1 + 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_manage_sets.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_manage_sets.cpp index 28091585c..6c46c7faf 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_manage_sets.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_manage_sets.cpp @@ -254,15 +254,9 @@ void WndSets::actSave() model->save(CardDatabaseManager::getInstance()); SettingsCache::instance().setIncludeRebalancedCards(includeRebalancedCards); CardPictureLoader::clearPixmapCache(); - const auto reloadOk1 = QtConcurrent::run([this] { - CardDatabaseManager::getInstance()->loadCardDatabases(); - QMetaObject::Connection conn; + const auto reloadOk1 = QtConcurrent::run([] { + CardDatabaseManager::getInstance()->reloadCardDatabasesAndNotify(); - conn = connect(CardDatabaseManager::getInstance(), &CardDatabase::cardDatabaseLoadingFinished, this, - [conn]() mutable { - CardDatabaseManager::getInstance()->notifyEnabledSetsChanged(); - QObject::disconnect(conn); - }); SettingsCache::instance().downloads().sync(); }); close(); diff --git a/cockatrice/src/interface/window_main.cpp b/cockatrice/src/interface/window_main.cpp index 86e6c1534..49f1b9f50 100644 --- a/cockatrice/src/interface/window_main.cpp +++ b/cockatrice/src/interface/window_main.cpp @@ -1191,7 +1191,8 @@ void MainWindow::cardDatabaseNewSetsFound(int numUnknownSets, QStringList unknow if (msgBox.clickedButton() == yesButton) { CardDatabaseManager::getInstance()->enableAllUnknownSets(); - const auto reloadOk1 = QtConcurrent::run([] { CardDatabaseManager::getInstance()->loadCardDatabases(); }); + const auto reloadOk1 = + QtConcurrent::run([] { CardDatabaseManager::getInstance()->reloadCardDatabasesAndNotify(); }); } else if (msgBox.clickedButton() == noButton) { CardDatabaseManager::getInstance()->markAllSetsAsKnown(); } else if (msgBox.clickedButton() == settingsButton) { @@ -1473,7 +1474,7 @@ int MainWindow::getNextCustomSetPrefix(QDir dataDir) void MainWindow::actReloadCardDatabase() { const auto reloadOk1 = QtConcurrent::run([] { - CardDatabaseManager::getInstance()->loadCardDatabases(); + CardDatabaseManager::getInstance()->reloadCardDatabasesAndNotify(); SettingsCache::instance().downloads().sync(); }); } diff --git a/libcockatrice_card/libcockatrice/card/database/card_database.cpp b/libcockatrice_card/libcockatrice/card/database/card_database.cpp index 5c4b408b3..493b8915f 100644 --- a/libcockatrice_card/libcockatrice/card/database/card_database.cpp +++ b/libcockatrice_card/libcockatrice/card/database/card_database.cpp @@ -1,6 +1,7 @@ #include "card_database.h" #include "../relation/card_relation.h" +#include "card_database_manager.h" #include "parser/cockatrice_xml_4.h" #include @@ -60,6 +61,17 @@ void CardDatabase::loadCardDatabases() loadStatus = loader->loadCardDatabases(); } +void CardDatabase::reloadCardDatabasesAndNotify() +{ + loadCardDatabases(); + + QMetaObject::Connection conn; + conn = connect(this, &CardDatabase::cardDatabaseLoadingFinished, this, [conn, this]() mutable { + notifyEnabledSetsChanged(); + QObject::disconnect(conn); + }); +} + bool CardDatabase::saveCustomTokensToFile() { return loader->saveCustomTokensToFile(); diff --git a/libcockatrice_card/libcockatrice/card/database/card_database.h b/libcockatrice_card/libcockatrice/card/database/card_database.h index 7f8fc39db..fc6958525 100644 --- a/libcockatrice_card/libcockatrice/card/database/card_database.h +++ b/libcockatrice_card/libcockatrice/card/database/card_database.h @@ -147,6 +147,7 @@ public slots: /** @brief Loads card databases from configured paths. */ void loadCardDatabases(); + void reloadCardDatabasesAndNotify(); /** @brief Saves custom tokens to file. * @return True if successful.