Reload card db and notify enabled sets change on "Manage Sets" dialog save

Took 1 hour 18 minutes

Took 6 seconds
This commit is contained in:
Lukas Brübach 2026-04-29 09:18:15 +02:00
parent b1fe4c85d3
commit 3f030fe2dc
3 changed files with 31 additions and 0 deletions

View file

@ -16,6 +16,7 @@
#include <QPushButton> #include <QPushButton>
#include <QToolBar> #include <QToolBar>
#include <QTreeView> #include <QTreeView>
#include <QtConcurrentRun>
#include <algorithm> #include <algorithm>
#include <libcockatrice/card/database/card_database_manager.h> #include <libcockatrice/card/database/card_database_manager.h>
#include <libcockatrice/models/database/card_set/card_sets_model.h> #include <libcockatrice/models/database/card_set/card_sets_model.h>
@ -253,6 +254,17 @@ void WndSets::actSave()
model->save(CardDatabaseManager::getInstance()); model->save(CardDatabaseManager::getInstance());
SettingsCache::instance().setIncludeRebalancedCards(includeRebalancedCards); SettingsCache::instance().setIncludeRebalancedCards(includeRebalancedCards);
CardPictureLoader::clearPixmapCache(); CardPictureLoader::clearPixmapCache();
const auto reloadOk1 = QtConcurrent::run([this] {
CardDatabaseManager::getInstance()->loadCardDatabases();
QMetaObject::Connection conn;
conn = connect(CardDatabaseManager::getInstance(), &CardDatabase::cardDatabaseLoadingFinished, this,
[conn]() mutable {
CardDatabaseManager::getInstance()->notifyEnabledSetsChanged();
QObject::disconnect(conn);
});
SettingsCache::instance().downloads().sync();
});
close(); close();
} }

View file

@ -15,6 +15,24 @@ CardDatabaseDisplayModel::CardDatabaseDisplayModel(QObject *parent)
loadedRowCount = 0; loadedRowCount = 0;
} }
void CardDatabaseDisplayModel::setSourceModel(QAbstractItemModel *model)
{
QSortFilterProxyModel::setSourceModel(model);
connect(model, &QAbstractItemModel::rowsInserted, this, [this]() {
dirty();
});
connect(model, &QAbstractItemModel::rowsRemoved, this, [this]() {
dirty();
});
connect(model, &QAbstractItemModel::modelReset, this, [this]() {
loadedRowCount = 0;
dirty();
});
}
QMap<wchar_t, wchar_t> CardDatabaseDisplayModel::characterTranslation = {{L'', L'\"'}, QMap<wchar_t, wchar_t> CardDatabaseDisplayModel::characterTranslation = {{L'', L'\"'},
{L'', L'\"'}, {L'', L'\"'},
{L'', L'\''}, {L'', L'\''},

View file

@ -38,6 +38,7 @@ private:
public: public:
explicit CardDatabaseDisplayModel(QObject *parent = nullptr); explicit CardDatabaseDisplayModel(QObject *parent = nullptr);
void setSourceModel(QAbstractItemModel *model) override;
void setFilterTree(FilterTree *_filterTree); void setFilterTree(FilterTree *_filterTree);
void setIsToken(FilterBool _isToken) void setIsToken(FilterBool _isToken)
{ {