Have CardDatabase::getPreferredPrintingInfo respect card provider ID overrides (pinned printings)

Took 13 minutes

Took 37 seconds

Took 10 seconds

Took 10 seconds

# Commit time for manual adjustment:
# Took 30 seconds

Took 15 seconds


Took 8 minutes

Took 21 seconds
This commit is contained in:
Lukas Brübach 2025-09-14 15:45:26 +02:00
parent dbd1d30ca8
commit 3ccb0cbb23
13 changed files with 97 additions and 38 deletions

View file

@ -0,0 +1,13 @@
#ifndef COCKATRICE_INTERFACE_CARD_PREFERENCE_PROVIDER_H
#define COCKATRICE_INTERFACE_CARD_PREFERENCE_PROVIDER_H
#include <QString>
class ICardPreferenceProvider
{
public:
virtual ~ICardPreferenceProvider() = default;
virtual QString getCardPreferenceOverride(const QString &cardName) const = 0;
};
#endif // COCKATRICE_INTERFACE_CARD_PREFERENCE_PROVIDER_H

View file

@ -0,0 +1,14 @@
#ifndef COCKATRICE_NOOP_CARD_PREFERENCE_PROVIDER_H
#define COCKATRICE_NOOP_CARD_PREFERENCE_PROVIDER_H
#include "interface_card_preference_provider.h"
class NoopCardPreferenceProvider : public ICardPreferenceProvider
{
public:
QString getCardPreferenceOverride(const QString &) const override
{
return {};
}
};
#endif // COCKATRICE_NOOP_CARD_PREFERENCE_PROVIDER_H

View file

@ -0,0 +1,15 @@
#ifndef COCKATRICE_SETTINGS_CARD_PREFERENCE_PROVIDER_H
#define COCKATRICE_SETTINGS_CARD_PREFERENCE_PROVIDER_H
#include "../../settings/cache_settings.h"
#include "interface_card_preference_provider.h"
class SettingsCardPreferenceProvider : public ICardPreferenceProvider
{
public:
QString getCardPreferenceOverride(const QString &cardName) const override
{
return SettingsCache::instance().cardOverrides().getCardPreferenceOverride(cardName);
}
};
#endif // COCKATRICE_SETTINGS_CARD_PREFERENCE_PROVIDER_H

View file

@ -199,16 +199,7 @@ void DlgCreateToken::tokenSelectionChanged(const QModelIndex &current, const QMo
annotationEdit->setText("");
}
const auto &cardProviderId =
SettingsCache::instance().cardOverrides().getCardPreferenceOverride(cardInfo->getName());
if (!cardProviderId.isEmpty()) {
CardRef ref;
ref.name = cardInfo->getName();
ref.providerId = cardProviderId;
pic->setCard(CardDatabaseManager::query()->getCard(ref));
} else {
pic->setCard(CardDatabaseManager::query()->getPreferredCard(cardInfo));
}
pic->setCard(CardDatabaseManager::query()->getPreferredCard(cardInfo));
}
void DlgCreateToken::updateSearchFieldWithoutUpdatingFilter(const QString &newValue) const

View file

@ -143,7 +143,7 @@ void DeckEditorDatabaseDisplayWidget::updateCard(const QModelIndex &current, con
}
if (!current.model()->hasChildren(current.sibling(current.row(), 0))) {
emit cardChanged(getCardOrPinnedPrinting(cardName));
emit cardChanged(CardDatabaseManager::query()->getPreferredCard(cardName));
}
}
@ -176,21 +176,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)

View file

@ -31,7 +31,6 @@ public:
public slots:
ExactCard currentCard() const;
ExactCard getCardOrPinnedPrinting(QString cardName) const;
void setFilterTree(FilterTree *filterTree);
void clearAllDatabaseFilters();