From 1e01c684c4a14c92dd2a32a0481274b8bfdd604e Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Sat, 19 Apr 2025 01:25:39 +0200 Subject: [PATCH] Display cards as set variants if only a single set is selected. (#5854) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Lukas BrĂ¼bach --- .../visual_database_display_widget.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_widget.cpp b/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_widget.cpp index d1e4b2db5..18369224b 100644 --- a/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_widget.cpp @@ -195,13 +195,30 @@ void VisualDatabaseDisplayWidget::populateCards() databaseDisplayModel->fetchMore(QModelIndex()); } + QList setFilters = filterModel->getFiltersOfType(CardFilter::AttrSet); + const CardFilter *setFilter = nullptr; + if (setFilters.length() == 1) { + setFilter = setFilters.at(0); + } + for (int row = start; row < end; ++row) { qCDebug(VisualDatabaseDisplayLog) << "Adding " << row; QModelIndex index = databaseDisplayModel->index(row, CardDatabaseModel::NameColumn); QVariant name = databaseDisplayModel->data(index, Qt::DisplayRole); qCDebug(VisualDatabaseDisplayLog) << name.toString(); + if (CardInfoPtr info = CardDatabaseManager::getInstance()->getCard(name.toString())) { - addCard(info); + if (setFilter) { + CardInfoPerSetMap setMap = info->getSets(); + if (setMap.contains(setFilter->term())) { + for (CardInfoPerSet cardSetInstance : setMap[setFilter->term()]) { + addCard(CardDatabaseManager::getInstance()->getCardByNameAndProviderId( + name.toString(), cardSetInstance.getProperty("uuid"))); + } + } + } else { + addCard(info); + } } else { qCDebug(VisualDatabaseDisplayLog) << "Card not found in database!"; }