Refactor: Represent cardName + providerId with CardRef struct (#6039)

* card_ref.h

* update CardDatabase signatures

* make everything compile

* rename methods

* add docs

* mark stuff const

* set cardRef in CardItem

* cleanup

* fix build failure

* Fix builds on mac

---------

Co-authored-by: ZeldaZach <zahalpern+github@gmail.com>
This commit is contained in:
RickyRister 2025-07-15 19:14:02 -07:00 committed by GitHub
parent e05dad4267
commit a9b3be33e0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
61 changed files with 328 additions and 305 deletions

View file

@ -46,7 +46,7 @@ QWidget *CardGroupDisplayWidget::constructWidgetForIndex(int rowIndex)
auto widget = new CardInfoPictureWithTextOverlayWidget(getLayoutParent(), true);
widget->setScaleFactor(cardSizeWidget->getSlider()->value());
widget->setCard(CardDatabaseManager::getInstance()->getCardByNameAndProviderId(cardName, cardProviderId));
widget->setCard(CardDatabaseManager::getInstance()->getCard({cardName, cardProviderId}));
connect(widget, &CardInfoPictureWithTextOverlayWidget::imageClicked, this, &CardGroupDisplayWidget::onClick);
connect(widget, &CardInfoPictureWithTextOverlayWidget::hoveredOnCard, this, &CardGroupDisplayWidget::onHover);

View file

@ -89,7 +89,7 @@ QWidget *FlatCardGroupDisplayWidget::constructWidgetForIndex(int row)
auto widget = new CardInfoPictureWithTextOverlayWidget(flowWidget, true);
widget->setScaleFactor(cardSizeWidget->getSlider()->value());
widget->setCard(CardDatabaseManager::getInstance()->getCardByNameAndProviderId(cardName, cardProviderId));
widget->setCard(CardDatabaseManager::getInstance()->getCard({cardName, cardProviderId}));
connect(widget, &CardInfoPictureWithTextOverlayWidget::imageClicked, this, &FlatCardGroupDisplayWidget::onClick);
connect(widget, &CardInfoPictureWithTextOverlayWidget::hoveredOnCard, this, &FlatCardGroupDisplayWidget::onHover);

View file

@ -11,10 +11,7 @@
#include <QVBoxLayout>
#include <utility>
CardInfoDisplayWidget::CardInfoDisplayWidget(const QString &cardName,
const QString &providerId,
QWidget *parent,
Qt::WindowFlags flags)
CardInfoDisplayWidget::CardInfoDisplayWidget(const CardRef &cardRef, QWidget *parent, Qt::WindowFlags flags)
: QFrame(parent, flags), aspectRatio((qreal)CARD_HEIGHT / (qreal)CARD_WIDTH), info(nullptr)
{
setContentsMargins(3, 3, 3, 3);
@ -22,7 +19,7 @@ CardInfoDisplayWidget::CardInfoDisplayWidget(const QString &cardName,
pic->setObjectName("pic");
text = new CardInfoTextWidget();
text->setObjectName("text");
connect(text, &CardInfoTextWidget::linkActivated, this, [this](const QString &card) { setCard(card); });
connect(text, &CardInfoTextWidget::linkActivated, this, [this](const QString &card) { setCard({card}); });
auto *layout = new QVBoxLayout();
layout->setObjectName("layout");
@ -40,7 +37,7 @@ CardInfoDisplayWidget::CardInfoDisplayWidget(const QString &cardName,
pic->setFixedHeight(pixmapHeight);
setFixedWidth(pixmapWidth + 150);
setCard(cardName, providerId);
setCard(cardRef);
// ensure our parent gets a valid size to position us correctly
resize(width(), sizeHint().height());
@ -58,11 +55,11 @@ void CardInfoDisplayWidget::setCard(CardInfoPtr card)
pic->setCard(info);
}
void CardInfoDisplayWidget::setCard(const QString &cardName, const QString &providerId)
void CardInfoDisplayWidget::setCard(const CardRef &cardRef)
{
setCard(CardDatabaseManager::getInstance()->guessCard(cardName, providerId));
setCard(CardDatabaseManager::getInstance()->guessCard(cardRef));
if (info == nullptr) {
text->setInvalidCardName(cardName);
text->setInvalidCardName(cardRef.name);
}
}

View file

@ -2,6 +2,7 @@
#define CARDINFOWIDGET_H
#include "../../../../game/cards/card_info.h"
#include "card_ref.h"
#include <QComboBox>
#include <QFrame>
@ -22,14 +23,11 @@ private:
CardInfoTextWidget *text;
public:
explicit CardInfoDisplayWidget(const QString &cardName,
const QString &providerId,
QWidget *parent = nullptr,
Qt::WindowFlags f = {});
explicit CardInfoDisplayWidget(const CardRef &cardRef, QWidget *parent = nullptr, Qt::WindowFlags f = {});
public slots:
void setCard(CardInfoPtr card);
void setCard(const QString &cardName, const QString &providerId = QString());
void setCard(const CardRef &cardRef);
void setCard(AbstractCardItem *card);
private slots:

View file

@ -62,7 +62,7 @@ CardInfoFrameWidget::CardInfoFrameWidget(const QString &cardName, QWidget *paren
setViewMode(SettingsCache::instance().getCardInfoViewMode());
// TODO: Change this to be by UUID
setCard(CardDatabaseManager::getInstance()->getCard(cardName));
setCard(CardDatabaseManager::getInstance()->getCardInfo(cardName));
}
void CardInfoFrameWidget::retranslateUi()
@ -166,12 +166,12 @@ void CardInfoFrameWidget::setCard(CardInfoPtr card)
void CardInfoFrameWidget::setCard(const QString &cardName)
{
setCard(CardDatabaseManager::getInstance()->guessCard(cardName));
setCard(CardDatabaseManager::getInstance()->guessCard({cardName}));
}
void CardInfoFrameWidget::setCard(const QString &cardName, const QString &providerId)
void CardInfoFrameWidget::setCard(const CardRef &cardRef)
{
setCard(CardDatabaseManager::getInstance()->getCardByNameAndProviderId(cardName, providerId));
setCard(CardDatabaseManager::getInstance()->getCard(cardRef));
}
void CardInfoFrameWidget::setCard(AbstractCardItem *card)

View file

@ -2,6 +2,7 @@
#define CARDFRAME_H
#include "../../../../game/cards/card_info.h"
#include "card_ref.h"
#include <QPushButton>
#include <QTabWidget>
@ -46,7 +47,7 @@ public:
public slots:
void setCard(CardInfoPtr card);
void setCard(const QString &cardName);
void setCard(const QString &cardName, const QString &providerId);
void setCard(const CardRef &cardRef);
void setCard(AbstractCardItem *card);
void viewTransformation();
void clearCard();

View file

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