diff --git a/cockatrice/src/database/card_database_querier.cpp b/cockatrice/src/database/card_database_querier.cpp index 68cc39c9d..32869e21c 100644 --- a/cockatrice/src/database/card_database_querier.cpp +++ b/cockatrice/src/database/card_database_querier.cpp @@ -1,5 +1,6 @@ #include "card_database_querier.h" +#include "../settings/cache_settings.h" #include "../utility/card_set_comparator.h" #include "card_database.h" @@ -202,6 +203,17 @@ PrintingInfo CardDatabaseQuerier::getSpecificPrinting(const QString &cardName, return PrintingInfo(nullptr); } +/** + * Gets the card representing the preferred printing of the cardInfo + * + * @param cardName The cardName to find the preferred card and printing for + * @return A specific printing of a card + */ +ExactCard CardDatabaseQuerier::getPreferredCard(const QString &cardName) const +{ + return getPreferredCard(getCardInfo(cardName)); +} + /** * Gets the card representing the preferred printing of the cardInfo * @@ -234,6 +246,13 @@ PrintingInfo CardDatabaseQuerier::getPreferredPrinting(const CardInfoPtr &cardIn return PrintingInfo(nullptr); } + const auto &pinnedPrintingProviderId = + SettingsCache::instance().cardOverrides().getCardPreferenceOverride(cardInfo->getName()); + + if (!pinnedPrintingProviderId.isEmpty()) { + return getSpecificPrinting({cardInfo->getName(), pinnedPrintingProviderId}); + } + SetToPrintingsMap setMap = cardInfo->getSets(); if (setMap.empty()) { return PrintingInfo(nullptr); diff --git a/cockatrice/src/database/card_database_querier.h b/cockatrice/src/database/card_database_querier.h index 26c601333..73987cc88 100644 --- a/cockatrice/src/database/card_database_querier.h +++ b/cockatrice/src/database/card_database_querier.h @@ -39,6 +39,7 @@ public: [[nodiscard]] PrintingInfo getSpecificPrinting(const CardRef &cardRef) const; [[nodiscard]] PrintingInfo getSpecificPrinting(const QString &cardName, const QString &setCode, const QString &collectorNumber) const; + ExactCard getPreferredCard(const QString &cardName) const; [[nodiscard]] PrintingInfo findPrintingWithId(const CardInfoPtr &card, const QString &providerId) const; [[nodiscard]] QStringList getAllMainCardTypes() const; diff --git a/cockatrice/src/game/dialogs/dlg_create_token.cpp b/cockatrice/src/game/dialogs/dlg_create_token.cpp index 88eed6b41..87b738b27 100644 --- a/cockatrice/src/game/dialogs/dlg_create_token.cpp +++ b/cockatrice/src/game/dialogs/dlg_create_token.cpp @@ -199,7 +199,7 @@ void DlgCreateToken::tokenSelectionChanged(const QModelIndex ¤t, const QMo annotationEdit->setText(""); } - pic->setCard(CardDatabaseManager::getInstance()->getPreferredCard(cardInfo)); + pic->setCard(CardDatabaseManager::query()->getPreferredCard(cardInfo)); } void DlgCreateToken::updateSearchFieldWithoutUpdatingFilter(const QString &newValue) const diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_editor_database_display_widget.cpp b/cockatrice/src/interface/widgets/deck_editor/deck_editor_database_display_widget.cpp index bee131f00..71eb96c39 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_editor_database_display_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_editor/deck_editor_database_display_widget.cpp @@ -175,21 +175,7 @@ ExactCard DeckEditorDatabaseDisplayWidget::currentCard() const const QString cardName = currentIndex.sibling(currentIndex.row(), 0).data().toString(); - return getCardOrPinnedPrinting(cardName); -} - -ExactCard DeckEditorDatabaseDisplayWidget::getCardOrPinnedPrinting(QString cardName) const -{ - const auto &cardProviderId = SettingsCache::instance().cardOverrides().getCardPreferenceOverride(cardName); - - ExactCard card = CardDatabaseManager::query()->getCard({cardName}); - - if (cardProviderId != "") { - return ExactCard(card.getCardPtr(), - CardDatabaseManager::query()->getSpecificPrinting({cardName, cardProviderId})); - } - - return card; + return CardDatabaseManager::query()->getPreferredCard(cardName); } void DeckEditorDatabaseDisplayWidget::databaseCustomMenu(QPoint point)