Fix signatures

This commit is contained in:
RickyRister 2026-11-07 20:02:16 +01:00 • committed by Lukas Brübach
parent 598da954fc
commit d8213088e4
66 changed files with 143 additions and 132 deletions

View file

@ -108,7 +108,7 @@ void DeckStatsInterface::analyzeDeck(const DeckList &deck)
void DeckStatsInterface::copyDeckWithoutTokens(const DeckList &source, DeckList &destination)
{
auto copyIfNotAToken = [&destination](const auto node, const auto card) {
CardInfoPtr dbCard = CardDatabaseManager::query()->getCardInfo(card->getName());
CardInfoPtr dbCard = CardDatabaseManager::query().getCardInfo(card->getName());
// Missing local card data is not evidence that a card is a token. Keep
// its original name and quantity so the service analyzes the whole deck.
if ((!dbCard || !dbCard->getIsToken()) && node->getName() != DECK_ZONE_MAYBEBOARD) {

View file

@ -128,7 +128,7 @@ void TappedOutInterface::analyzeDeck(const DeckList &deck)
void TappedOutInterface::copyDeckSplitMainAndSide(const DeckList &source, DeckList &mainboard, DeckList &sideboard)
{
auto copyMainOrSide = [&mainboard, &sideboard](const auto node, const auto card) {
CardInfoPtr dbCard = CardDatabaseManager::query()->getCardInfo(card->getName());
CardInfoPtr dbCard = CardDatabaseManager::query().getCardInfo(card->getName());
// Exclude confirmed tokens, but preserve cards missing from the local
// database, including newly released cards in an imported deck.
if ((dbCard && dbCard->getIsToken()) || node->getName() == DECK_ZONE_MAYBEBOARD) {

View file

@ -147,7 +147,7 @@ static void setupParserRules()
int count = 0;
auto cardNodes = data.deck->deckList.getCardNodes();
for (auto node : cardNodes) {
auto cardInfoPtr = CardDatabaseManager::query()->getCardInfo(node->getName());
auto cardInfoPtr = CardDatabaseManager::query().getCardInfo(node->getName());
if (!cardInfoPtr.isNull() && cardFilter.check(cardInfoPtr)) {
count += node->getNumber();
}

View file

@ -413,7 +413,7 @@ void DeckViewContainer::deckSelectFinished(const Response &r)
{
const Response_DeckDownload &resp = r.GetExtension(Response_DeckDownload::ext);
DeckList newDeck = DeckList(QString::fromStdString(resp.deck()));
CardPictureLoader::cacheCardPixmaps(CardDatabaseManager::query()->getCards(newDeck.getCardRefList()));
CardPictureLoader::cacheCardPixmaps(CardDatabaseManager::query().getCards(newDeck.getCardRefList()));
setDeck(newDeck);
switchToDeckLoadedView();
}

View file

@ -223,7 +223,7 @@ void DlgCreateToken::tokenSelectionChanged(const QModelIndex &current, const QMo
annotationEdit->setText("");
}
pic->setCard(CardDatabaseManager::query()->getPreferredCard(cardInfo));
pic->setCard(CardDatabaseManager::query().getPreferredCard(cardInfo));
}
void DlgCreateToken::updateSearchFieldWithoutUpdatingFilter(const QString &newValue) const

View file

@ -403,7 +403,7 @@ void CardMenu::addRelatedCardView()
bool atLeastOneGoodRelationFound = false;
QList<CardRelation *> relatedCards = exactCard.getInfo().getAllRelatedCards();
for (const CardRelation *cardRelation : relatedCards) {
CardInfoPtr relatedCard = CardDatabaseManager::query()->getCardInfo(cardRelation->getName());
CardInfoPtr relatedCard = CardDatabaseManager::query().getCardInfo(cardRelation->getName());
if (relatedCard != nullptr) {
atLeastOneGoodRelationFound = true;
break;
@ -448,9 +448,9 @@ void CardMenu::addRelatedCardActions()
QAction *createRelatedCards = nullptr;
for (const CardRelation *cardRelation : relatedCards) {
ExactCard relatedCard =
CardDatabaseManager::query()->getCardFromSameSet(cardRelation->getName(), card->getCard().getPrinting());
CardDatabaseManager::query().getCardFromSameSet(cardRelation->getName(), card->getCard().getPrinting());
if (!relatedCard) {
relatedCard = CardDatabaseManager::query()->getCard({cardRelation->getName()});
relatedCard = CardDatabaseManager::query().getCard({cardRelation->getName()});
}
if (!relatedCard) {
continue;

View file

@ -461,7 +461,7 @@ void PlayerGraphicsItem::updatePlaymat()
playmatParams = params;
scaledPlaymatKey = QSize(); // the art crop depends on the params, drop any cached scale
ExactCard card = CardDatabaseManager::query()->getCard(playmatCard);
ExactCard card = CardDatabaseManager::query().getCard(playmatCard);
if (!card) {
clearPlaymat();
return;

View file

@ -72,7 +72,7 @@ inline QString displayNameFor(const QString &cardName)
if (cardName.isEmpty()) {
return cardName;
}
const QString localizedName = displayName(CardDatabaseManager::query()->getCardInfo(cardName));
const QString localizedName = displayName(CardDatabaseManager::query().getCardInfo(cardName));
return localizedName.isEmpty() ? cardName : localizedName;
}
} // namespace CardLocalization

View file

@ -14,7 +14,7 @@
void CardNodeFunction::SetProviderIdToPreferred::operator()(const InnerDecklistNode *node, DecklistCardNode *card) const
{
Q_UNUSED(node);
PrintingInfo preferredPrinting = CardDatabaseManager::query()->getPreferredPrinting(card->getName());
PrintingInfo preferredPrinting = CardDatabaseManager::query().getPreferredPrinting(card->getName());
CardSetPtr preferredSet = preferredPrinting.getSet();
if (!preferredSet) {
return;
@ -40,7 +40,7 @@ void CardNodeFunction::ResolveProviderId::operator()(const InnerDecklistNode *no
QString providerId =
CardDatabaseManager::getInstance()
->query()
->getSpecificPrinting(card->getName(), card->getCardSetShortName(), card->getCardCollectorNumber())
.getSpecificPrinting(card->getName(), card->getCardSetShortName(), card->getCardCollectorNumber())
.getUuid();
// Set the providerId on the card

View file

@ -433,7 +433,7 @@ void DeckLoader::saveToStream_DeckZone(QTextStream &out,
continue;
}
CardInfoPtr info = CardDatabaseManager::query()->getCardInfo(card->getName());
CardInfoPtr info = CardDatabaseManager::query().getCardInfo(card->getName());
QString cardType = info ? info->getMainCardType() : "unknown";
cardsByType.insert(cardType, card);

View file

@ -264,7 +264,7 @@ Intent *IntentUrlParser::createOpenDeckIntent(const QUrlQuery &query, PendingInt
// The open deck intent owns the context and the credential lookup; once
// the chain finishes (or fails) it deletes the whole tree.
auto openDeckIntent =
new IntentOpenSharedDeck(mainWindow->getTabSupervisor(), client, CardDatabaseManager::query(), std::move(ctx));
new IntentOpenSharedDeck(mainWindow->getTabSupervisor(), client, &CardDatabaseManager::query(), std::move(ctx));
openDeckIntent->setParent(this);
chain.intents.append(openDeckIntent);
connect(openDeckIntent, &Intent::failed, this, [showError](const QString &reason) { showError(reason); });

View file

@ -10,7 +10,7 @@
#include <libcockatrice/deck_list/deck_list.h>
#include <libcockatrice/deck_list/tree/inner_deck_list_node.h>
QString getDeckColorIdentity(const DeckList &deck, const CardDatabaseQuerier *db)
QString getDeckColorIdentity(const DeckList &deck, const CardDatabaseQuerier &db)
{
const QStringList cardList = deck.getCardList({DECK_ZONE_MAIN, DECK_ZONE_SIDE});
if (cardList.isEmpty()) {
@ -20,7 +20,7 @@ QString getDeckColorIdentity(const DeckList &deck, const CardDatabaseQuerier *db
QSet<QChar> colorSet; // A set to collect unique color symbols (e.g., W, U, B, R, G)
for (const QString &cardName : cardList) {
CardInfoPtr currentCard = db->getCardInfo(cardName);
CardInfoPtr currentCard = db.getCardInfo(cardName);
if (currentCard) {
const QString colors = currentCard->getColors(); // returns something like "WUB"
for (const QChar &color : colors) {

View file

@ -15,6 +15,6 @@ class DeckList;
*
* @param db Card database used to look up card color symbols.
*/
QString getDeckColorIdentity(const DeckList &deck, const CardDatabaseQuerier *db);
QString getDeckColorIdentity(const DeckList &deck, const CardDatabaseQuerier &db);
#endif // COCKATRICE_DECK_COLOR_IDENTITY_H

View file

@ -172,7 +172,7 @@ QWidget *CardGroupDisplayWidget::constructWidgetForIndex(QPersistentModelIndex i
auto widget = new CardInfoPictureWithTextOverlayWidget(getLayoutParent(), true);
widget->setScaleFactor(cardSizeWidget->getSlider()->value());
widget->setCard(CardDatabaseManager::query()->getCard({cardName, cardProviderId}));
widget->setCard(CardDatabaseManager::query().getCard({cardName, cardProviderId}));
connect(widget, &CardInfoPictureWithTextOverlayWidget::cardClicked, this, &CardGroupDisplayWidget::cardClicked);
connect(widget, &CardInfoPictureWithTextOverlayWidget::hoveredOnCard, this, &CardGroupDisplayWidget::cardHovered);

View file

@ -68,7 +68,7 @@ void CardInfoDisplayWidget::setCard(const ExactCard &card)
void CardInfoDisplayWidget::setCard(const CardRef &cardRef)
{
setCard(CardDatabaseManager::query()->guessCard(cardRef));
setCard(CardDatabaseManager::query().guessCard(cardRef));
if (exactCard.isEmpty()) {
text->setInvalidCardName(cardRef.name);
}

View file

@ -170,12 +170,12 @@ void CardInfoFrameWidget::setCard(const ExactCard &card)
void CardInfoFrameWidget::setCard(const QString &cardName)
{
setCard(CardDatabaseManager::query()->guessCard({cardName}));
setCard(CardDatabaseManager::query().guessCard({cardName}));
}
void CardInfoFrameWidget::setCard(const CardRef &cardRef)
{
setCard(CardDatabaseManager::query()->getCard(cardRef));
setCard(CardDatabaseManager::query().getCard(cardRef));
}
void CardInfoFrameWidget::setCard(AbstractCardItem *card)

View file

@ -398,7 +398,7 @@ QMenu *CardInfoPictureWidget::createViewRelatedCardsMenu()
QList<CardRelation *> relatedCards = exactCard.getInfo().getAllRelatedCards();
auto relatedCardExists = [](const CardRelation *cardRelation) {
return CardDatabaseManager::query()->getCardInfo(cardRelation->getName()) != nullptr;
return CardDatabaseManager::query().getCardInfo(cardRelation->getName()) != nullptr;
};
bool atLeastOneGoodRelationFound = std::any_of(relatedCards.begin(), relatedCards.end(), relatedCardExists);
@ -413,7 +413,7 @@ QMenu *CardInfoPictureWidget::createViewRelatedCardsMenu()
QAction *viewCard = viewRelatedCards->addAction(relatedCardName);
connect(viewCard, &QAction::triggered, this, [this, &relatedCardName] {
emit cardChanged(
CardDatabaseManager::query()->getCard({relatedCardName, exactCard.getPrinting().getUuid()}));
CardDatabaseManager::query().getCard({relatedCardName, exactCard.getPrinting().getUuid()}));
});
viewRelatedCards->addAction(viewCard);
}

View file

@ -263,7 +263,7 @@ QList<QString> DeckCardZoneDisplayWidget::getGroupCriteriaValueList()
QList<const DecklistCardNode *> nodes = deckListModel->getCardNodesForZone(zoneName);
for (auto node : nodes) {
CardInfoPtr info = CardDatabaseManager::query()->getCardInfo(node->getName());
CardInfoPtr info = CardDatabaseManager::query().getCardInfo(node->getName());
if (info) {
groupCriteriaValues.append(info->getProperty(activeGroupCriteria));
}

View file

@ -189,7 +189,7 @@ void DrawProbabilityWidget::updateFilterOptions()
const auto nodes = analyzer->getModel()->getCardNodes();
for (auto *node : nodes) {
CardInfoPtr info = CardDatabaseManager::query()->getCardInfo(node->getName());
CardInfoPtr info = CardDatabaseManager::query().getCardInfo(node->getName());
if (!info) {
continue;
}

View file

@ -36,7 +36,7 @@ void DeckListStatisticsAnalyzer::analyze()
}
for (auto node : nodes) {
CardInfoPtr info = CardDatabaseManager::query()->getCardInfo(node->getName());
CardInfoPtr info = CardDatabaseManager::query().getCardInfo(node->getName());
if (!info) {
continue;
}

View file

@ -150,7 +150,7 @@ void CardDatabaseView::saveDbHeaderState()
void CardDatabaseView::openCustomMenu(QPoint point)
{
CardInfoPtr card = CardDatabaseManager::query()->getCardInfo(currentCardName());
CardInfoPtr card = CardDatabaseManager::query().getCardInfo(currentCardName());
if (!card) {
return;

View file

@ -125,19 +125,19 @@ void DeckEditorDatabaseDisplayWidget::actAddCardToSideboard()
void DeckEditorDatabaseDisplayWidget::addCard(const QString &cardName, const QString &zoneName)
{
highlightAllSearchEdit();
ExactCard exactCard = CardDatabaseManager::query()->getPreferredCard(cardName);
ExactCard exactCard = CardDatabaseManager::query().getPreferredCard(cardName);
emit cardAdded(exactCard, zoneName);
}
void DeckEditorDatabaseDisplayWidget::decrementCard(const QString &cardName, const QString &zoneName)
{
ExactCard exactCard = CardDatabaseManager::query()->getPreferredCard(cardName);
ExactCard exactCard = CardDatabaseManager::query().getPreferredCard(cardName);
emit cardDecremented(exactCard, zoneName);
}
void DeckEditorDatabaseDisplayWidget::updateCard(const QString &cardName)
{
ExactCard exactCard = CardDatabaseManager::query()->getPreferredCard(cardName);
ExactCard exactCard = CardDatabaseManager::query().getPreferredCard(cardName);
emit cardChanged(exactCard);
}
@ -159,6 +159,6 @@ void DeckEditorDatabaseDisplayWidget::highlightAllSearchEdit()
void DeckEditorDatabaseDisplayWidget::onRelatedCardClicked(const QString &relatedCard)
{
ExactCard exactCard = CardDatabaseManager::query()->guessCard({relatedCard});
ExactCard exactCard = CardDatabaseManager::query().guessCard({relatedCard});
emit cardInfoRequested(exactCard);
}

View file

@ -361,7 +361,7 @@ void DeckEditorDeckDockWidget::createDeckDock()
void DeckEditorDeckDockWidget::initializeFormats()
{
QStringList allFormats = CardDatabaseManager::query()->getAllFormatsWithCount().keys();
QStringList allFormats = CardDatabaseManager::query().getAllFormatsWithCount().keys();
// Rebuilding the list is a view update, not a user edit. In particular,
// clear() emits currentIndexChanged(-1), which must not clear the deck.
@ -413,7 +413,7 @@ ExactCard DeckEditorDeckDockWidget::getCurrentCard()
const QString zoneName = gparent.siblingAtColumn(DeckListModelColumns::CARD_NAME).data(Qt::EditRole).toString();
if (!current.model()->hasChildren(current.siblingAtColumn(DeckListModelColumns::CARD_AMOUNT))) {
if (ExactCard selectedCard = CardDatabaseManager::query()->getCard({cardName, cardProviderID})) {
if (ExactCard selectedCard = CardDatabaseManager::query().getCard({cardName, cardProviderID})) {
return selectedCard;
}
}
@ -466,7 +466,7 @@ void DeckEditorDeckDockWidget::updateBannerCardComboBox()
QList<CardRef> cardsInDeck = getModel()->getCardRefs();
for (auto cardRef : cardsInDeck) {
if (!CardDatabaseManager::query()->getCard(cardRef)) {
if (!CardDatabaseManager::query().getCard(cardRef)) {
continue;
}

View file

@ -280,7 +280,7 @@ static bool doSwapCard(DeckListModel *model,
return false;
}
if (ExactCard card = CardDatabaseManager::query()->getCard({cardName, providerId})) {
if (ExactCard card = CardDatabaseManager::query().getCard({cardName, providerId})) {
model->addCard(card, otherZone);
} else {
// Third argument (true) says create the card no matter what, even if not in DB
@ -367,7 +367,7 @@ bool DeckStateManager::moveCardToZone(const QModelIndex &idx, const QString &tar
}
// Tokens only live in the tokens zone and cannot be moved into decks.
CardInfoPtr info = CardDatabaseManager::query()->getCardInfo(cardName);
CardInfoPtr info = CardDatabaseManager::query().getCardInfo(cardName);
if (info && info->getIsToken()) {
return false;
}
@ -398,7 +398,7 @@ bool DeckStateManager::moveCardToZone(const QModelIndex &idx, const QString &tar
return false;
}
if (ExactCard card = CardDatabaseManager::query()->getCard({cardName, providerId})) {
if (ExactCard card = CardDatabaseManager::query().getCard({cardName, providerId})) {
for (int i = 0; i < copies; ++i) {
model->addCard(card, targetZoneName);
}

View file

@ -170,7 +170,7 @@ void DlgEditTokens::actAddToken()
if (name.isEmpty()) {
return;
}
if (databaseModel->getDatabase()->query()->getCardInfo(name)) {
if (databaseModel->getDatabase()->query().getCardInfo(name)) {
QMessageBox::critical(this, tr("Error"),
tr("The chosen name conflicts with an existing card or token.\nMake sure to enable "
"the 'Token' set in the \"Manage sets\" dialog to display them correctly."));

View file

@ -176,8 +176,8 @@ static bool swapPrinting(DeckListModel *model, const QString &modifiedSet, const
}
int amount = model->data(idx.siblingAtColumn(DeckListModelColumns::CARD_AMOUNT), Qt::DisplayRole).toInt();
model->removeCardAtIndex(idx);
CardInfoPtr cardInfo = CardDatabaseManager::query()->getCardInfo(cardName);
PrintingInfo printing = CardDatabaseManager::query()->getSpecificPrinting(cardName, modifiedSet, "");
CardInfoPtr cardInfo = CardDatabaseManager::query().getCardInfo(cardName);
PrintingInfo printing = CardDatabaseManager::query().getSpecificPrinting(cardName, modifiedSet, "");
for (int i = 0; i < amount; i++) {
model->addCard(ExactCard(cardInfo, printing), DECK_ZONE_MAIN);
}
@ -259,7 +259,7 @@ QMap<QString, int> DlgSelectSetForCards::getSetsForCards()
QList<QString> cardNames = deckStateManager->getModel()->getCardNames();
for (auto cardName : cardNames) {
CardInfoPtr infoPtr = CardDatabaseManager::query()->getCardInfo(cardName);
CardInfoPtr infoPtr = CardDatabaseManager::query().getCardInfo(cardName);
if (!infoPtr) {
continue;
}
@ -313,16 +313,16 @@ void DlgSelectSetForCards::updateCardLists()
if (!found) {
// The card was not in any selected set
ExactCard card = CardDatabaseManager::query()->getCard({cardName});
ExactCard card = CardDatabaseManager::query().getCard({cardName});
CardInfoPictureWidget *picture_widget = new CardInfoPictureWidget(uneditedCardsFlowWidget);
picture_widget->setCard(card);
uneditedCardsFlowWidget->addWidget(picture_widget);
} else {
ExactCard card =
CardDatabaseManager::query()->getCard({cardName, CardDatabaseManager::getInstance()
->query()
->getSpecificPrinting(cardName, foundSetName, "")
.getUuid()});
CardDatabaseManager::query().getCard({cardName, CardDatabaseManager::getInstance()
->query()
.getSpecificPrinting(cardName, foundSetName, "")
.getUuid()});
CardInfoPictureWidget *picture_widget = new CardInfoPictureWidget(modifiedCardsFlowWidget);
picture_widget->setCard(card);
modifiedCardsFlowWidget->addWidget(picture_widget);
@ -378,7 +378,7 @@ QMap<QString, QStringList> DlgSelectSetForCards::getCardsForSets()
QList<QString> cardNames = deckStateManager->getModel()->getCardNames();
for (auto cardName : cardNames) {
CardInfoPtr infoPtr = CardDatabaseManager::query()->getCardInfo(cardName);
CardInfoPtr infoPtr = CardDatabaseManager::query().getCardInfo(cardName);
if (!infoPtr) {
continue;
}
@ -625,15 +625,15 @@ void SetEntryWidget::updateCardDisplayWidgets()
for (const QString &cardName : possibleCards) {
CardInfoPictureWidget *picture_widget = new CardInfoPictureWidget(cardListContainer);
QString providerId = CardDatabaseManager::query()->getSpecificPrinting(cardName, setName, nullptr).getUuid();
picture_widget->setCard(CardDatabaseManager::query()->getCard({cardName, providerId}));
QString providerId = CardDatabaseManager::query().getSpecificPrinting(cardName, setName, nullptr).getUuid();
picture_widget->setCard(CardDatabaseManager::query().getCard({cardName, providerId}));
cardListContainer->addWidget(picture_widget);
}
for (const QString &cardName : unusedCards) {
CardInfoPictureWidget *picture_widget = new CardInfoPictureWidget(alreadySelectedCardListContainer);
QString providerId = CardDatabaseManager::query()->getSpecificPrinting(cardName, setName, nullptr).getUuid();
picture_widget->setCard(CardDatabaseManager::query()->getCard({cardName, providerId}));
QString providerId = CardDatabaseManager::query().getSpecificPrinting(cardName, setName, nullptr).getUuid();
picture_widget->setCard(CardDatabaseManager::query().getCard({cardName, providerId}));
alreadySelectedCardListContainer->addWidget(picture_widget);
}
}

View file

@ -215,7 +215,7 @@ void HomeWidget::setRandomCard(ExactCard &newCard)
{
static constexpr int ATTEMPTS = 10;
for (int i = 0; i < ATTEMPTS; ++i) {
ExactCard tmpCard = CardDatabaseManager::query()->getRandomCard();
ExactCard tmpCard = CardDatabaseManager::query().getRandomCard();
if (tmpCard != backgroundSourceCard->getCard() && tmpCard.getCardPtr()->getProperty("layout") == "normal" &&
tmpCard.getPrinting().getSet() != nullptr) {
newCard = tmpCard;
@ -244,17 +244,17 @@ void HomeWidget::updateRandomCard()
if (!cardRefs.empty()) {
if (cardRefs.size() == 1) {
newCard = CardDatabaseManager::query()->getCard(cardRefs.first());
newCard = CardDatabaseManager::query().getCard(cardRefs.first());
} else {
// Keep picking until different
do {
int idx = QRandomGenerator::global()->bounded(cardRefs.size());
newCard = CardDatabaseManager::query()->getCard(cardRefs.at(idx));
newCard = CardDatabaseManager::query().getCard(cardRefs.at(idx));
} while (newCard == oldCard);
}
} else {
do {
newCard = CardDatabaseManager::query()->getRandomCard();
newCard = CardDatabaseManager::query().getRandomCard();
} while (newCard == oldCard);
}
break;

View file

@ -211,7 +211,7 @@ void PlaymatSettingsDialog::populateProviderCombo(const QString &cardName)
{
providerComboBox->clear();
auto card = CardDatabaseManager::query()->getCard({cardName});
auto card = CardDatabaseManager::query().getCard({cardName});
const auto &sets = card.getInfo().getSets();
@ -239,7 +239,7 @@ void PlaymatSettingsDialog::onCardNameChanged(const QString &name)
return;
}
const ExactCard card = CardDatabaseManager::query()->getCard({name});
const ExactCard card = CardDatabaseManager::query().getCard({name});
if (!card) {
currentPixmap = QPixmap();
preview->setPixmap(currentPixmap);
@ -268,7 +268,7 @@ void PlaymatSettingsDialog::reloadPreview()
return;
}
ExactCard card = CardDatabaseManager::query()->getCard({currentCard.name, currentCard.providerId});
ExactCard card = CardDatabaseManager::query().getCard({currentCard.name, currentCard.providerId});
if (!card) {
return;
}

View file

@ -398,7 +398,7 @@ void PrintingSelectorCardOverlayWidget::customMenu(QPoint point)
const QString &relatedCardName = rel->getName();
QAction *relatedCard = relatedMenu->addAction(relatedCardName);
connect(relatedCard, &QAction::triggered, deckEditor, [this, relatedCardName] {
deckEditor->updateCard(CardDatabaseManager::query()->getCard({relatedCardName}));
deckEditor->updateCard(CardDatabaseManager::query().getCard({relatedCardName}));
deckEditor->showPrintingSelector();
});
}

View file

@ -230,7 +230,7 @@ void ChatView::appendCardTag(QTextCursor &cursor, const QString &cardName)
QTextCharFormat cardFormat = oldFormat;
cardFormat.setFontItalic(true);
const CardInfoPtr card = CardDatabaseManager::query()->lookupCardByName(cardName);
const CardInfoPtr card = CardDatabaseManager::query().lookupCardByName(cardName);
if (card.isNull()) {
cardFormat.setForeground(unresolvedCardTagColor);
cursor.setCharFormat(cardFormat);

View file

@ -100,7 +100,7 @@ void UserCardArtProvider::processQueue()
const QString cardName = parts.at(1);
const QString providerId = parts.at(2);
ExactCard card = CardDatabaseManager::query()->getCard({cardName, providerId});
ExactCard card = CardDatabaseManager::query().getCard({cardName, providerId});
if (!card) {
pending.remove(key);

View file

@ -487,7 +487,7 @@ void UserCardArtSettingsDialog::populateProviderCombo(const QString &cardName)
{
providerComboBox->clear();
auto card = CardDatabaseManager::query()->getCard({cardName});
auto card = CardDatabaseManager::query().getCard({cardName});
const auto &sets = card.getInfo().getSets();
@ -517,7 +517,7 @@ void UserCardArtSettingsDialog::onCardNameChanged(const QString &name)
return;
}
const ExactCard card = CardDatabaseManager::query()->getCard({name});
const ExactCard card = CardDatabaseManager::query().getCard({name});
if (!card) {
currentPixmap = QPixmap();
preview->setPixmap(currentPixmap);
@ -547,7 +547,7 @@ void UserCardArtSettingsDialog::reloadPreview()
return;
}
ExactCard card = CardDatabaseManager::query()->getCard({currentParams.cardName, currentParams.cardProviderId});
ExactCard card = CardDatabaseManager::query().getCard({currentParams.cardName, currentParams.cardProviderId});
if (!card) {
return;
}

View file

@ -190,8 +190,8 @@ void UserInfoHeaderWidget::setUserData(const ServerInfo_User &_user,
attribution.clear();
if (user.has_card_art_params()) {
const ExactCard card =
CardDatabaseManager::query()->getCard({QString::fromStdString(user.card_art_params().card_name()),
QString::fromStdString(user.card_art_params().card_provider_id())});
CardDatabaseManager::query().getCard({QString::fromStdString(user.card_art_params().card_name()),
QString::fromStdString(user.card_art_params().card_provider_id())});
if (card) {
attribution = buildArtAttribution(card);
}

View file

@ -185,7 +185,7 @@ void AbstractTabDeckEditor::openDeck(const LoadedDeck &deck)
void AbstractTabDeckEditor::setDeck(const LoadedDeck &_deck)
{
deckStateManager->replaceDeck(_deck);
CardPictureLoader::cacheCardPixmaps(CardDatabaseManager::query()->getCards(_deck.deckList.getCardRefList()));
CardPictureLoader::cacheCardPixmaps(CardDatabaseManager::query().getCards(_deck.deckList.getCardRefList()));
dockToActions.value(deckDockWidget).aVisible->setChecked(true);
deckDockWidget->setVisible(dockToActions.value(deckDockWidget).aVisible->isChecked());

View file

@ -29,7 +29,7 @@ EdhrecApiResponseCardDetailsDisplayWidget::EdhrecApiResponseCardDetailsDisplayWi
setLayout(layout);
cardPictureWidget = new CardInfoPictureWidget(this);
cardPictureWidget->setCard(CardDatabaseManager::query()->guessCard({toDisplay.sanitized}));
cardPictureWidget->setCard(CardDatabaseManager::query().guessCard({toDisplay.sanitized}));
nameLabel = new QLabel(this);
nameLabel->setText(toDisplay.name);

View file

@ -34,7 +34,7 @@ EdhrecCommanderResponseCommanderDetailsDisplayWidget::EdhrecCommanderResponseCom
navigationAndPricesLayout = new QVBoxLayout();
commanderPicture = new CardInfoPictureWidget(this);
commanderPicture->setCard(CardDatabaseManager::query()->getCard({commanderDetails.getName()}));
commanderPicture->setCard(CardDatabaseManager::query().getCard({commanderDetails.getName()}));
auto *parentTab = QtUtils::findParentOfType<TabEdhRecMain>(this);

View file

@ -124,7 +124,7 @@ void TabEdhRecMain::retranslateUi()
void TabEdhRecMain::doSearch()
{
CardInfoPtr searchedCard = CardDatabaseManager::query()->getCardInfo(searchBar->text());
CardInfoPtr searchedCard = CardDatabaseManager::query().getCardInfo(searchBar->text());
if (!searchedCard) {
return;
}

View file

@ -246,7 +246,7 @@ void TabCardArtRules::populateProviderCombo(const QString &cardName)
{
providerComboBox->clear();
auto card = CardDatabaseManager::query()->getCard({cardName});
auto card = CardDatabaseManager::query().getCard({cardName});
const auto &sets = card.getInfo().getSets();

View file

@ -973,7 +973,7 @@ void TabGame::loadDeckForLocalPlayer(PlayerLogic *localPlayer, int playerId, Ser
TabbedDeckViewContainer *deckViewContainer = deckViewContainers.value(playerId);
if (playerInfo.has_deck_list()) {
DeckList deckList = DeckList(QString::fromStdString(playerInfo.deck_list()));
CardPictureLoader::cacheCardPixmaps(CardDatabaseManager::query()->getCards(deckList.getCardRefList()));
CardPictureLoader::cacheCardPixmaps(CardDatabaseManager::query().getCards(deckList.getCardRefList()));
deckViewContainer->playerDeckView->setDeck(deckList);
localPlayer->setDeck(deckList);
}

View file

@ -266,7 +266,7 @@ QString CardCompleterDelegate::setCodeForCard(const QSharedPointer<CardInfo> &ca
QString code;
const PrintingInfo printing = CardDatabaseManager::query()->getPreferredPrinting(card);
const PrintingInfo printing = CardDatabaseManager::query().getPreferredPrinting(card);
if (auto set = printing.getSet()) {
code = set->getShortName();

View file

@ -326,7 +326,7 @@ void CardCompleterStyler::updatePreview(const QModelIndex &index)
preview->setWindowOpacity(0.0);
}
const ExactCard exact = CardDatabaseManager::query()->getCard({card->getName()});
const ExactCard exact = CardDatabaseManager::query().getCard({card->getName()});
if (!exact) {
hidePreview();

View file

@ -30,7 +30,7 @@ VisualDatabaseDisplayFormatLegalityFilterWidget::VisualDatabaseDisplayFormatLega
FilterTreeModel *_filterModel)
: QWidget(parent), filterModel(_filterModel)
{
allFormatsWithCount = CardDatabaseManager::query()->getAllFormatsWithCount();
allFormatsWithCount = CardDatabaseManager::query().getAllFormatsWithCount();
int maxValue = std::numeric_limits<int>::min();
for (int value : allFormatsWithCount) {
maxValue = std::max(maxValue, value);

View file

@ -28,7 +28,7 @@ VisualDatabaseDisplayMainTypeFilterWidget::VisualDatabaseDisplayMainTypeFilterWi
: QWidget(parent), filterModel(_filterModel)
{
// Get all main card types with their count
allMainCardTypesWithCount = CardDatabaseManager::query()->getAllMainCardTypesWithCount();
allMainCardTypesWithCount = CardDatabaseManager::query().getAllMainCardTypesWithCount();
setMinimumWidth(300);
setMaximumHeight(200);

View file

@ -28,7 +28,7 @@ VisualDatabaseDisplaySubTypeFilterWidget::VisualDatabaseDisplaySubTypeFilterWidg
FilterTreeModel *_filterModel)
: QWidget(parent), filterModel(_filterModel)
{
allSubCardTypesWithCount = CardDatabaseManager::query()->getAllSubCardTypesWithCount();
allSubCardTypesWithCount = CardDatabaseManager::query().getAllSubCardTypesWithCount();
setMinimumWidth(300);

View file

@ -133,7 +133,7 @@ VisualDatabaseDisplayWidget::VisualDatabaseDisplayWidget(QWidget *parent,
// The visual grid is a real view on a flattened model: one row per displayed
// card picture, painted on demand.
visualDisplayModel = new CardDatabaseVisualDisplayModel(databaseDisplayModel, CardDatabaseManager::query(), this);
visualDisplayModel = new CardDatabaseVisualDisplayModel(databaseDisplayModel, &CardDatabaseManager::query(), this);
cardView = new CardDatabaseVisualView(visualDisplayModel, this);
cardView->setObjectName("visualCardView");
@ -300,24 +300,24 @@ void VisualDatabaseDisplayWidget::onSearchModelChanged()
void VisualDatabaseDisplayWidget::onSelectedCardChanged(const QString &cardName)
{
emit cardHoveredDatabaseDisplay(CardDatabaseManager::query()->getPreferredCard(cardName));
emit cardHoveredDatabaseDisplay(CardDatabaseManager::query().getPreferredCard(cardName));
}
void VisualDatabaseDisplayWidget::actAddCard(const QString &cardName, const QString &zoneName)
{
highlightAllSearchEdit();
ExactCard exactCard = CardDatabaseManager::query()->getPreferredCard(cardName);
ExactCard exactCard = CardDatabaseManager::query().getPreferredCard(cardName);
emit cardAdded(exactCard, zoneName);
}
void VisualDatabaseDisplayWidget::actDecrementCard(const QString &cardName, const QString &zoneName)
{
ExactCard exactCard = CardDatabaseManager::query()->getPreferredCard(cardName);
ExactCard exactCard = CardDatabaseManager::query().getPreferredCard(cardName);
emit cardDecremented(exactCard, zoneName);
}
void VisualDatabaseDisplayWidget::onRelatedCardClicked(const QString &relatedCard)
{
ExactCard exactCard = CardDatabaseManager::query()->guessCard({relatedCard});
ExactCard exactCard = CardDatabaseManager::query().guessCard({relatedCard});
emit cardInfoRequested(exactCard);
}

View file

@ -118,7 +118,7 @@ static QList<ExactCard> cardNodesToExactCards(QList<const DecklistCardNode *> no
{
QList<ExactCard> cards;
for (auto node : nodes) {
ExactCard card = CardDatabaseManager::query()->getCard(node->toCardRef());
ExactCard card = CardDatabaseManager::query().getCard(node->toCardRef());
if (card) {
for (int k = 0; k < node->getNumber(); ++k) {
cards.append(card);

View file

@ -152,7 +152,7 @@ void VisualDeckEditorWidget::initializeSearchBarAndCompleter()
void VisualDeckEditorWidget::addCardFromSearch()
{
ExactCard card = CardDatabaseManager::query()->getCard({searchBar->text()});
ExactCard card = CardDatabaseManager::query().getCard({searchBar->text()});
if (!card) {
return;
}

View file

@ -274,7 +274,7 @@ void DeckPreviewWidget::syncFromModel()
const CardRef bannerCardRef = data.deck.deckList.getBannerCard();
const ExactCard bannerCard =
bannerCardRef.name.isEmpty() ? ExactCard() : CardDatabaseManager::query()->getCard(bannerCardRef);
bannerCardRef.name.isEmpty() ? ExactCard() : CardDatabaseManager::query().getCard(bannerCardRef);
bannerCardDisplayWidget->setCard(bannerCard);
refreshBannerCardText();
@ -419,7 +419,7 @@ void DeckPreviewWidget::setBannerCard(int /* changedIndex */)
return;
}
model->setBannerCard(r, cardRef);
bannerCardDisplayWidget->setCard(CardDatabaseManager::query()->getCard(cardRef));
bannerCardDisplayWidget->setCard(CardDatabaseManager::query().getCard(cardRef));
}
void DeckPreviewWidget::imageClickedEvent(QMouseEvent *event, DeckPreviewCardPictureWidget *instance)

View file

@ -95,7 +95,7 @@ void PublicDeckPreviewWidget::setEntry(const RemotePublicDecksModel::DeckEntry &
const ExactCard bannerCard =
entry.bannerCardName.isEmpty()
? ExactCard()
: CardDatabaseManager::query()->getCard(CardRef{entry.bannerCardName, entry.bannerCardProvider});
: CardDatabaseManager::query().getCard(CardRef{entry.bannerCardName, entry.bannerCardProvider});
bannerCardDisplayWidget->setCard(bannerCard);
// The deck name is the overlay text on the banner, like the local preview.

View file

@ -27,8 +27,7 @@ CardDatabase::CardDatabase(QObject *parent,
ICardPreferenceProvider *prefs,
ICardDatabasePathProvider *pathProvider,
ICardSetPriorityController *_setPriorityController)
: QObject(parent), setPriorityController(_setPriorityController), loadStatus(NotLoaded),
querier(this, prefs)
: QObject(parent), setPriorityController(_setPriorityController), loadStatus(NotLoaded), querier(this, prefs)
{
qRegisterMetaType<CardInfoPtr>("CardInfoPtr");
qRegisterMetaType<CardInfoPtr>("CardSetPtr");
@ -45,6 +44,17 @@ CardDatabase::CardDatabase(QObject *parent,
// that cross-thread loads are delivered via the event loop while same-thread/
// synchronous callers get the swap immediately.
connect(loader, &CardDatabaseLoader::databaseDataReady, this, &CardDatabase::swapInDatabaseData);
// The querier is a plain (non-QObject) member, so its cache invalidation is
// driven from here instead of by connecting its own slots.
connect(this, &CardDatabase::cardAdded, this, &CardDatabase::invalidateQuerierCaches);
connect(this, &CardDatabase::cardRemoved, this, &CardDatabase::invalidateQuerierCaches);
connect(this, &CardDatabase::cardDatabaseReset, this, &CardDatabase::invalidateQuerierCaches);
}
void CardDatabase::invalidateQuerierCaches()
{
querier.invalidateCaches();
}
CardDatabase::~CardDatabase()

View file

@ -3,6 +3,7 @@
#include "../set/card_set_list.h"
#include "card_database_loader.h"
#include "card_database_querier.h"
// IWYU pragma: keep
// CardDatabaseData is passed by value to the swapInDatabaseData() slot, and
@ -18,7 +19,6 @@
#include <QStringList>
#include <qtmetamacros.h>
class CardDatabaseQuerier;
class ICardDatabasePathProvider;
class ICardPreferenceProvider;
class ICardSetPriorityController;
@ -62,6 +62,7 @@ protected:
/** @brief Querier for higher-level card lookups. */
CardDatabaseQuerier querier;
private:
/**
* @brief Refreshes the cached reverse-related cards for all cards.
*/
@ -94,6 +95,11 @@ protected:
QBasicMutex *clearDatabaseMutex = new QBasicMutex(), *addCardMutex = new QBasicMutex(),
*removeCardMutex = new QBasicMutex();
/**
* @brief Invalidates the querier's cached count maps after the database contents change.
*/
void invalidateQuerierCaches();
public:
/**
* @brief Constructs a new CardDatabase instance.
@ -142,7 +148,7 @@ public:
}
/** @brief Returns the querier for performing card lookups. */
[[nodiscard]] CardDatabaseQuerier const &query() const
[[nodiscard]] const CardDatabaseQuerier &query() const
{
return querier;
}

View file

@ -36,7 +36,7 @@ CardDatabase *CardDatabaseManager::getInstance()
return &instance;
}
CardDatabaseQuerier const &CardDatabaseManager::query()
const CardDatabaseQuerier &CardDatabaseManager::query()
{
return getInstance()->query();
}

View file

@ -61,9 +61,9 @@ public:
/**
* @brief Returns the CardDatabaseQuerier of the singleton database.
* @return Pointer to CardDatabaseQuerier.
* @return Reference to the singleton database querier.
*/
static CardDatabaseQuerier const &query();
static const CardDatabaseQuerier &query();
private:
/** @brief Private default constructor to enforce singleton. */

View file

@ -18,10 +18,6 @@
CardDatabaseQuerier::CardDatabaseQuerier(const CardDatabase *_db, const ICardPreferenceProvider *prefs)
: db(_db), prefs(prefs)
{
// Invalidate the cached count maps whenever the database contents change.
connect(db, &CardDatabase::cardAdded, this, &CardDatabaseQuerier::invalidateCaches);
connect(db, &CardDatabase::cardRemoved, this, &CardDatabaseQuerier::invalidateCaches);
connect(db, &CardDatabase::cardDatabaseReset, this, &CardDatabaseQuerier::invalidateCaches);
}
void CardDatabaseQuerier::invalidateCaches()

View file

@ -7,10 +7,8 @@
#include <QList>
#include <QMap>
#include <QObject>
#include <QString>
#include <QStringList>
#include <qtmetamacros.h>
class CardDatabase;
class ICardPreferenceProvider;
@ -232,8 +230,9 @@ private:
mutable QMap<QString, int> subCardTypeCountsCache;
mutable QMap<QString, int> formatsCountCache;
private slots:
void invalidateCaches();
friend class CardDatabase;
};
#endif // COCKATRICE_CARD_DATABASE_QUERIER_H

View file

@ -18,7 +18,7 @@
*/
static QString getCompleteCardName(const QString &cardName)
{
ExactCard temp = CardDatabaseManager::query()->guessCard({cardName});
ExactCard temp = CardDatabaseManager::query().guessCard({cardName});
if (temp) {
return temp.getName();
}

View file

@ -51,7 +51,7 @@ void CardState::setCardRef(const CardRef &_cardRef)
void CardState::refreshCardInfo()
{
exactCard = CardDatabaseManager::query()->getCard(cardRef);
exactCard = CardDatabaseManager::query().getCard(cardRef);
if (!exactCard && !cardRef.name.isEmpty()) {
CardInfo::UiAttributes attributes = {.tableRow = -1};
@ -231,7 +231,7 @@ void CardState::setAttachedTo(CardState *_attachedTo)
parentZone->reorganizeCards();
}
} else if (getZone() != nullptr) {
emit getZone() -> cardAdded(this);
emit getZone()->cardAdded(this);
}
if (getZone() != nullptr) {

View file

@ -946,7 +946,7 @@ void PlayerActions::actCreateToken(TokenInfo tokenToCreate)
{
lastTokenInfo = tokenToCreate;
ExactCard correctedCard = CardDatabaseManager::query()->guessCard({lastTokenInfo.name, lastTokenInfo.providerId});
ExactCard correctedCard = CardDatabaseManager::query().guessCard({lastTokenInfo.name, lastTokenInfo.providerId});
if (correctedCard) {
lastTokenInfo.name = correctedCard.getName();
int tableRow = lastTokenInfo.faceDown ? 2 : correctedCard.getInfo().getUiAttributes().tableRow;
@ -1011,7 +1011,7 @@ void PlayerActions::setLastTokenInfo(CardInfoPtr cardInfo)
void PlayerActions::actCreatePredefinedToken()
{
auto *action = static_cast<QAction *>(sender());
CardInfoPtr cardInfo = CardDatabaseManager::query()->getCardInfo(action->text());
CardInfoPtr cardInfo = CardDatabaseManager::query().getCardInfo(action->text());
if (!cardInfo) {
return;
}
@ -1115,7 +1115,7 @@ void PlayerActions::actCreateAllRelatedCards(const CardState *sourceCard)
* then assign the first to the "Create another" shortcut.
*/
if (cardRelation != nullptr && cardRelation->getCanCreateAnother()) {
CardInfoPtr cardInfo = CardDatabaseManager::query()->getCardInfo(cardRelation->getName());
CardInfoPtr cardInfo = CardDatabaseManager::query().getCardInfo(cardRelation->getName());
setLastToken(cardInfo);
}
}
@ -1193,7 +1193,7 @@ void PlayerActions::onRelatedCardCreated(const CardState *sourceCard, const Card
}
ExactCard relatedCard =
CardDatabaseManager::query()->getCardFromSameSet(cardRelation->getName(), sourceCard->getCard().getPrinting());
CardDatabaseManager::query().getCardFromSameSet(cardRelation->getName(), sourceCard->getCard().getPrinting());
setLastToken(relatedCard.getCardPtr());
}
@ -1204,7 +1204,7 @@ void PlayerActions::createCard(const CardState *sourceCard,
bool persistent,
bool faceDown)
{
CardInfoPtr cardInfo = CardDatabaseManager::query()->getCardInfo(dbCardName);
CardInfoPtr cardInfo = CardDatabaseManager::query().getCardInfo(dbCardName);
if (cardInfo == nullptr || sourceCard == nullptr) {
return;
@ -1240,7 +1240,7 @@ void PlayerActions::createCard(const CardState *sourceCard,
cmd.set_face_down(faceDown);
ExactCard relatedCard =
CardDatabaseManager::query()->getCardFromSameSet(cardInfo->getName(), sourceCard->getCard().getPrinting());
CardDatabaseManager::query().getCardFromSameSet(cardInfo->getName(), sourceCard->getCard().getPrinting());
switch (attachType) {
case CardRelationType::DoesNotAttach:

View file

@ -162,7 +162,7 @@ void PlayerEventHandler::eventCreateToken(const Event_CreateToken &event)
// use db PT if not provided in event and not face-down
QString pt = QString::fromStdString(event.pt());
if (pt.isEmpty() && !event.face_down()) {
ExactCard dbCard = CardDatabaseManager::query()->getCard(cardRef);
ExactCard dbCard = CardDatabaseManager::query().getCard(cardRef);
if (dbCard) {
pt = dbCard.getInfo().getPowTough();
}

View file

@ -12,7 +12,7 @@
static constexpr int REBUILD_COALESCE_MS = 30;
CardDatabaseVisualDisplayModel::CardDatabaseVisualDisplayModel(CardDatabaseDisplayModel *_displayModel,
CardDatabaseQuerier *_querier,
const CardDatabaseQuerier *_querier,
QObject *parent)
: QAbstractListModel(parent), displayModel(_displayModel), querier(_querier)
{

View file

@ -39,7 +39,7 @@ public:
* @param parent Parent object.
*/
explicit CardDatabaseVisualDisplayModel(CardDatabaseDisplayModel *_displayModel,
CardDatabaseQuerier *_querier,
const CardDatabaseQuerier *_querier,
QObject *parent = nullptr);
/**
@ -81,7 +81,7 @@ private:
void appendPrintingsFor(const CardInfoPtr &info);
QPointer<CardDatabaseDisplayModel> displayModel;
CardDatabaseQuerier *querier;
const CardDatabaseQuerier *querier;
QStringList setFilterTerms;
QList<Entry> entries;
QTimer rebuildTimer;

View file

@ -103,7 +103,7 @@ void DeckListModel::rebuildTree()
continue;
}
CardInfoPtr info = CardDatabaseManager::query()->getCardInfo(currentCard->getName());
CardInfoPtr info = CardDatabaseManager::query().getCardInfo(currentCard->getName());
QString groupCriteria = extractGroupCriteriaValue(info, activeGroupCriteria);
auto *groupNode = dynamic_cast<InnerDecklistNode *>(node->findChild(groupCriteria));
@ -221,7 +221,7 @@ QVariant DeckListModel::data(const QModelIndex &index, int role) const
return card->getNumber();
case DeckListModelColumns::CARD_NAME: {
if (role == Qt::DisplayRole) {
CardInfoPtr info = CardDatabaseManager::query()->getCardInfo(card->getName());
CardInfoPtr info = CardDatabaseManager::query().getCardInfo(card->getName());
if (info) {
return info->getLocalizedName(displayLang);
}
@ -438,7 +438,7 @@ DecklistModelCardNode *DeckListModel::findCardNode(const QString &cardName,
const QString &providerId,
const QString &cardNumber) const
{
CardInfoPtr info = CardDatabaseManager::query()->getCardInfo(cardName);
CardInfoPtr info = CardDatabaseManager::query().getCardInfo(cardName);
if (!info) {
return nullptr;
}
@ -493,7 +493,7 @@ QModelIndex DeckListModel::findCard(const QString &cardName,
QModelIndex DeckListModel::addPreferredPrintingCard(const QString &cardName, const QString &zoneName, bool abAddAnyway)
{
ExactCard card = CardDatabaseManager::query()->getCard({cardName});
ExactCard card = CardDatabaseManager::query().getCard({cardName});
if (!card) {
if (abAddAnyway) {
@ -910,7 +910,7 @@ static bool isCardQuantityLegalForFormat(const QString &format, const CardInfo &
return true;
}
auto formatRules = CardDatabaseManager::query()->getFormat(format);
auto formatRules = CardDatabaseManager::query().getFormat(format);
// if format has no custom rules, then just do the default check
if (!formatRules) {
@ -949,7 +949,7 @@ static bool isCardNodeLegalForFormat(const QString &format, const InnerDecklistN
}
// unknown cards are not legal
ExactCard exactCard = CardDatabaseManager::query()->getCard(card->toCardRef());
ExactCard exactCard = CardDatabaseManager::query().getCard(card->toCardRef());
if (!exactCard) {
return false;
}

View file

@ -30,8 +30,8 @@ bool DeckListSortFilterProxyModel::lessThan(const QModelIndex &left, const QMode
auto *lNode = static_cast<DecklistModelCardNode *>(left.internalPointer());
auto *rNode = static_cast<DecklistModelCardNode *>(right.internalPointer());
CardInfoPtr lInfo = CardDatabaseManager::query()->guessCard({lNode->getName()}).getCardPtr();
CardInfoPtr rInfo = CardDatabaseManager::query()->guessCard({rNode->getName()}).getCardPtr();
CardInfoPtr lInfo = CardDatabaseManager::query().guessCard({lNode->getName()}).getCardPtr();
CardInfoPtr rInfo = CardDatabaseManager::query().guessCard({rNode->getName()}).getCardPtr();
// Example: multiple tie-break criteria (colors > cmc > name)
for (const QString &crit : sortCriteria) {

View file

@ -48,21 +48,21 @@ TEST(CardDatabaseTest, LoadXml)
// ensure the card database is empty at start
ASSERT_EQ(0, db->getCardList().size()) << "Cards not empty at start";
ASSERT_EQ(0, db->getSetList().size()) << "Sets not empty at start";
ASSERT_EQ(0, db->query()->getAllMainCardTypes().size()) << "Types not empty at start";
ASSERT_EQ(0, db->query().getAllMainCardTypes().size()) << "Types not empty at start";
ASSERT_EQ(NotLoaded, db->getLoadStatus()) << "Incorrect status at start";
// load dummy cards and test result
db->loadCardDatabases();
ASSERT_EQ(9, db->getCardList().size()) << "Wrong card count after load";
ASSERT_EQ(5, db->getSetList().size()) << "Wrong sets count after load";
ASSERT_EQ(3, db->query()->getAllMainCardTypes().size()) << "Wrong types count after load";
ASSERT_EQ(3, db->query().getAllMainCardTypes().size()) << "Wrong types count after load";
ASSERT_EQ(Ok, db->getLoadStatus()) << "Wrong status after load";
// ensure the card database is empty after clear()
db->clear();
ASSERT_EQ(0, db->getCardList().size()) << "Cards not empty after clear";
ASSERT_EQ(0, db->getSetList().size()) << "Sets not empty after clear";
ASSERT_EQ(0, db->query()->getAllMainCardTypes().size()) << "Types not empty after clear";
ASSERT_EQ(0, db->query().getAllMainCardTypes().size()) << "Types not empty after clear";
ASSERT_EQ(NotLoaded, db->getLoadStatus()) << "Incorrect status after clear";
}
@ -112,7 +112,7 @@ TEST(CardDatabaseTest, GuessCardWithProviderIdOnUnknownCardReturnsEmpty)
NoopCardSetPriorityController controller;
CardDatabase db(nullptr, &prefs, &pathProvider, &controller);
const ExactCard guessed = db.query()->guessCard({"Not a Card", "card_Not a Card_fixture"});
const ExactCard guessed = db.query().guessCard({"Not a Card", "card_Not a Card_fixture"});
EXPECT_TRUE(guessed.isEmpty());
EXPECT_FALSE(guessed);
@ -125,7 +125,7 @@ TEST(CardDatabaseTest, FindPrintingWithIdOnNullCardInfoReturnsEmpty)
NoopCardSetPriorityController controller;
CardDatabase db(nullptr, &prefs, &pathProvider, &controller);
EXPECT_TRUE(db.query()->findPrintingWithId(nullptr, "card_Not a Card_fixture").isEmpty());
EXPECT_TRUE(db.query().findPrintingWithId(nullptr, "card_Not a Card_fixture").isEmpty());
}
TEST(CardInfoTest, ClearDirectRelationsDropsRawPointers)

View file

@ -43,10 +43,10 @@ protected:
new TestCardDatabasePathProvider(), new NoopCardSetPriorityController());
db->loadCardDatabases();
cat = db->query()->getCardBySimpleName("Cat");
notDeadAfterAll = db->query()->getCardBySimpleName("Not Dead");
truth = db->query()->getCardBySimpleName("Truth");
doctor = db->query()->getCardBySimpleName("Doctor");
cat = db->query().getCardBySimpleName("Cat");
notDeadAfterAll = db->query().getCardBySimpleName("Not Dead");
truth = db->query().getCardBySimpleName("Truth");
doctor = db->query().getCardBySimpleName("Doctor");
}
// void TearDown() override {}

View file

@ -60,7 +60,7 @@ protected:
cardModel = std::make_unique<CardDatabaseModel>(db.get(), false);
displayModel = std::make_unique<CardDatabaseDisplayModel>();
displayModel->setSourceModel(cardModel.get());
visualModel = std::make_unique<CardDatabaseVisualDisplayModel>(displayModel.get(), db->query());
visualModel = std::make_unique<CardDatabaseVisualDisplayModel>(displayModel.get(), &db->query());
visualModel->refresh();
}