make everything compile

This commit is contained in:
RickyRister 2025-07-12 03:41:11 -07:00
parent bc8e28133e
commit 4cef5692bc
34 changed files with 131 additions and 147 deletions

View file

@ -100,7 +100,7 @@ public:
QString collectorNumber = cardData.value("cn").toString(); QString collectorNumber = cardData.value("cn").toString();
QString providerId = cardData.value("scryfall_id").toString(); QString providerId = cardData.value("scryfall_id").toString();
list->setBannerCard(QPair<QString, QString>(commanderName, providerId)); list->setBannerCard({commanderName, providerId});
list->addCard(commanderName, DECK_ZONE_MAIN, -1, setName, collectorNumber, providerId); list->addCard(commanderName, DECK_ZONE_MAIN, -1, setName, collectorNumber, providerId);
} }
} }

View file

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

View file

@ -14,14 +14,13 @@ Tab::Tab(TabSupervisor *_tabSupervisor)
setAttribute(Qt::WA_DeleteOnClose); setAttribute(Qt::WA_DeleteOnClose);
} }
void Tab::showCardInfoPopup(const QPoint &pos, const QString &cardName, const QString &providerId) void Tab::showCardInfoPopup(const QPoint &pos, const CardRef &cardRef)
{ {
if (infoPopup) { if (infoPopup) {
infoPopup->deleteLater(); infoPopup->deleteLater();
} }
currentCardName = cardName; currentCard = cardRef;
currentProviderId = providerId; infoPopup = new CardInfoDisplayWidget(currentCard, nullptr,
infoPopup = new CardInfoDisplayWidget(cardName, providerId, nullptr,
Qt::Widget | Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint | Qt::Widget | Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint |
Qt::WindowStaysOnTopHint); Qt::WindowStaysOnTopHint);
infoPopup->setAttribute(Qt::WA_TransparentForMouseEvents); infoPopup->setAttribute(Qt::WA_TransparentForMouseEvents);
@ -37,7 +36,7 @@ void Tab::showCardInfoPopup(const QPoint &pos, const QString &cardName, const QS
void Tab::deleteCardInfoPopup(const QString &cardName) void Tab::deleteCardInfoPopup(const QString &cardName)
{ {
if (infoPopup) { if (infoPopup) {
if ((currentCardName == cardName) || (cardName == "_")) { if (currentCard.name == cardName || cardName == "_") {
infoPopup->deleteLater(); infoPopup->deleteLater();
infoPopup = 0; infoPopup = 0;
} }

View file

@ -1,6 +1,8 @@
#ifndef TAB_H #ifndef TAB_H
#define TAB_H #define TAB_H
#include "card_ref.h"
#include <QMainWindow> #include <QMainWindow>
class QMenu; class QMenu;
@ -27,12 +29,12 @@ protected:
tabMenus.append(menu); tabMenus.append(menu);
} }
protected slots: protected slots:
void showCardInfoPopup(const QPoint &pos, const QString &cardName, const QString &providerId); void showCardInfoPopup(const QPoint &pos, const CardRef &cardRef);
void deleteCardInfoPopup(const QString &cardName); void deleteCardInfoPopup(const QString &cardName);
void closeEvent(QCloseEvent *event) override; void closeEvent(QCloseEvent *event) override;
private: private:
QString currentCardName, currentProviderId; CardRef currentCard;
bool contentsChanged; bool contentsChanged;
CardInfoDisplayWidget *infoPopup; CardInfoDisplayWidget *infoPopup;
QList<QMenu *> tabMenus; QList<QMenu *> tabMenus;

View file

@ -1625,9 +1625,9 @@ void TabGame::createDeckViewContainerWidget(bool bReplay)
deckViewContainerWidget->setLayout(deckViewContainerLayout); deckViewContainerWidget->setLayout(deckViewContainerLayout);
} }
void TabGame::viewCardInfo(const QString &cardName, const QString &providerId) const void TabGame::viewCardInfo(const CardRef &cardRef) const
{ {
cardInfoFrameWidget->setCard(cardName, providerId); cardInfoFrameWidget->setCard(cardRef);
} }
void TabGame::createCardInfoDock(bool bReplay) void TabGame::createCardInfoDock(bool bReplay)

View file

@ -266,7 +266,7 @@ public:
public slots: public slots:
void sendGameCommand(PendingCommand *pend, int playerId = -1); void sendGameCommand(PendingCommand *pend, int playerId = -1);
void sendGameCommand(const ::google::protobuf::Message &command, int playerId = -1); void sendGameCommand(const ::google::protobuf::Message &command, int playerId = -1);
void viewCardInfo(const QString &cardName, const QString &providerId = "") const; void viewCardInfo(const CardRef &cardRef = {}) const;
}; };
#endif #endif

View file

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

View file

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

View file

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

View file

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

View file

@ -166,12 +166,12 @@ void CardInfoFrameWidget::setCard(CardInfoPtr card)
void CardInfoFrameWidget::setCard(const QString &cardName) 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()->getCardByNameAndProviderId(cardRef));
} }
void CardInfoFrameWidget::setCard(AbstractCardItem *card) void CardInfoFrameWidget::setCard(AbstractCardItem *card)

View file

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

View file

@ -143,7 +143,7 @@ void DeckEditorDatabaseDisplayWidget::updateCard(const QModelIndex &current, con
} }
if (!current.model()->hasChildren(current.sibling(current.row(), 0))) { if (!current.model()->hasChildren(current.sibling(current.row(), 0))) {
CardInfoPtr card = CardDatabaseManager::getInstance()->getCardByNameAndProviderId(cardName, cardProviderID); CardInfoPtr card = CardDatabaseManager::getInstance()->getCardByNameAndProviderId({cardName, cardProviderID});
if (!card) { if (!card) {
card = CardDatabaseManager::getInstance()->getCard(cardName); card = CardDatabaseManager::getInstance()->getCard(cardName);
} }

View file

@ -228,7 +228,7 @@ CardInfoPtr DeckEditorDeckDockWidget::getCurrentCard()
QString cardName = current.sibling(current.row(), 1).data().toString(); QString cardName = current.sibling(current.row(), 1).data().toString();
QString providerId = current.sibling(current.row(), 4).data().toString(); QString providerId = current.sibling(current.row(), 4).data().toString();
if (CardInfoPtr selectedCard = if (CardInfoPtr selectedCard =
CardDatabaseManager::getInstance()->getCardByNameAndProviderId(cardName, providerId)) { CardDatabaseManager::getInstance()->getCardByNameAndProviderId({cardName, providerId})) {
return selectedCard; return selectedCard;
} }
} }
@ -287,11 +287,10 @@ void DeckEditorDeckDockWidget::updateBannerCardComboBox()
continue; continue;
for (int k = 0; k < currentCard->getNumber(); ++k) { for (int k = 0; k < currentCard->getNumber(); ++k) {
CardInfoPtr info = CardDatabaseManager::getInstance()->getCardByNameAndProviderId( CardInfoPtr info =
currentCard->getName(), currentCard->getCardProviderId()); CardDatabaseManager::getInstance()->getCardByNameAndProviderId(currentCard->toCardRef());
if (info) { if (info) {
bannerCardSet.insert( bannerCardSet.insert({currentCard->getName(), currentCard->getCardProviderId()});
QPair<QString, QString>(currentCard->getName(), currentCard->getCardProviderId()));
} }
} }
} }
@ -312,13 +311,13 @@ void DeckEditorDeckDockWidget::updateBannerCardComboBox()
int restoredIndex = bannerCardComboBox->findText(currentText); int restoredIndex = bannerCardComboBox->findText(currentText);
if (restoredIndex != -1) { if (restoredIndex != -1) {
bannerCardComboBox->setCurrentIndex(restoredIndex); bannerCardComboBox->setCurrentIndex(restoredIndex);
if (deckModel->getDeckList()->getBannerCard().second != if (deckModel->getDeckList()->getBannerCard().providerId !=
bannerCardComboBox->currentData().value<QPair<QString, QString>>().second) { bannerCardComboBox->currentData().value<QPair<QString, QString>>().second) {
setBannerCard(restoredIndex); setBannerCard(restoredIndex);
} }
} else { } else {
// Add a placeholder "-" and set it as the current selection // Add a placeholder "-" and set it as the current selection
int bannerIndex = bannerCardComboBox->findText(deckModel->getDeckList()->getBannerCard().first); int bannerIndex = bannerCardComboBox->findText(deckModel->getDeckList()->getBannerCard().name);
if (bannerIndex != -1) { if (bannerIndex != -1) {
bannerCardComboBox->setCurrentIndex(bannerIndex); bannerCardComboBox->setCurrentIndex(bannerIndex);
} else { } else {
@ -333,8 +332,8 @@ void DeckEditorDeckDockWidget::updateBannerCardComboBox()
void DeckEditorDeckDockWidget::setBannerCard(int /* changedIndex */) void DeckEditorDeckDockWidget::setBannerCard(int /* changedIndex */)
{ {
auto cardAndId = bannerCardComboBox->currentData().value<QPair<QString, QString>>(); auto [name, id] = bannerCardComboBox->currentData().value<QPair<QString, QString>>();
deckModel->getDeckList()->setBannerCard(cardAndId); deckModel->getDeckList()->setBannerCard({name, id});
deckEditor->setModified(true); deckEditor->setModified(true);
emit deckModified(); emit deckModified();
} }
@ -360,7 +359,7 @@ void DeckEditorDeckDockWidget::setDeck(DeckLoader *_deck)
nameEdit->setText(deckModel->getDeckList()->getName()); nameEdit->setText(deckModel->getDeckList()->getName());
commentsEdit->setText(deckModel->getDeckList()->getComments()); commentsEdit->setText(deckModel->getDeckList()->getComments());
bannerCardComboBox->setCurrentText(deckModel->getDeckList()->getBannerCard().first); bannerCardComboBox->setCurrentText(deckModel->getDeckList()->getBannerCard().name);
updateBannerCardComboBox(); updateBannerCardComboBox();
updateHash(); updateHash();
deckModel->sort(deckView->header()->sortIndicatorSection(), deckView->header()->sortIndicatorOrder()); deckModel->sort(deckView->header()->sortIndicatorSection(), deckView->header()->sortIndicatorOrder());
@ -476,9 +475,9 @@ bool DeckEditorDeckDockWidget::swapCard(const QModelIndex &currentIndex)
const QString otherZoneName = zoneName == DECK_ZONE_MAIN ? DECK_ZONE_SIDE : DECK_ZONE_MAIN; const QString otherZoneName = zoneName == DECK_ZONE_MAIN ? DECK_ZONE_SIDE : DECK_ZONE_MAIN;
// Third argument (true) says create the card no matter what, even if not in DB // Third argument (true) says create the card no matter what, even if not in DB
QModelIndex newCardIndex = QModelIndex newCardIndex = deckModel->addCard(
deckModel->addCard(cardName, CardDatabaseManager::getInstance()->getSpecificPrinting(cardName, cardProviderID), cardName, CardDatabaseManager::getInstance()->getSpecificPrinting({cardName, cardProviderID}), otherZoneName,
otherZoneName, true); true);
recursiveExpand(newCardIndex); recursiveExpand(newCardIndex);
return true; return true;

View file

@ -44,8 +44,8 @@ PrintingSelectorCardOverlayWidget::PrintingSelectorCardOverlayWidget(QWidget *pa
cardInfoPicture = new CardInfoPictureWidget(this); cardInfoPicture = new CardInfoPictureWidget(this);
cardInfoPicture->setMinimumSize(0, 0); cardInfoPicture->setMinimumSize(0, 0);
cardInfoPicture->setScaleFactor(cardSizeSlider->value()); cardInfoPicture->setScaleFactor(cardSizeSlider->value());
setCard = CardDatabaseManager::getInstance()->getCardByNameAndProviderId(rootCard->getName(), setCard = CardDatabaseManager::getInstance()->getCardByNameAndProviderId(
_printingInfo.getProperty("uuid")); {rootCard->getName(), _printingInfo.getProperty("uuid")});
cardInfoPicture->setCard(setCard); cardInfoPicture->setCard(setCard);
mainLayout->addWidget(cardInfoPicture); mainLayout->addWidget(cardInfoPicture);
@ -177,7 +177,7 @@ void PrintingSelectorCardOverlayWidget::customMenu(QPoint point)
if (preferredProviderId.isEmpty() || preferredProviderId != cardProviderId) { if (preferredProviderId.isEmpty() || preferredProviderId != cardProviderId) {
auto *pinAction = preferenceMenu->addAction(tr("Pin Printing")); auto *pinAction = preferenceMenu->addAction(tr("Pin Printing"));
connect(pinAction, &QAction::triggered, this, [this, cardProviderId]() { connect(pinAction, &QAction::triggered, this, [this, cardProviderId]() {
SettingsCache::instance().cardOverrides().setCardPreferenceOverride(rootCard->getName(), cardProviderId); SettingsCache::instance().cardOverrides().setCardPreferenceOverride({rootCard->getName(), cardProviderId});
emit cardPreferenceChanged(); emit cardPreferenceChanged();
}); });
} else { } else {

View file

@ -234,7 +234,7 @@ void VisualDatabaseDisplayWidget::populateCards()
if (setMap.contains(setFilter->term())) { if (setMap.contains(setFilter->term())) {
for (PrintingInfo printing : setMap[setFilter->term()]) { for (PrintingInfo printing : setMap[setFilter->term()]) {
addCard(CardDatabaseManager::getInstance()->getCardByNameAndProviderId( addCard(CardDatabaseManager::getInstance()->getCardByNameAndProviderId(
name.toString(), printing.getProperty("uuid"))); {name.toString(), printing.getProperty("uuid")}));
} }
} }
} else { } else {
@ -300,7 +300,7 @@ void VisualDatabaseDisplayWidget::loadNextPage()
if (setMap.contains(setFilter->term())) { if (setMap.contains(setFilter->term())) {
for (PrintingInfo printing : setMap[setFilter->term()]) { for (PrintingInfo printing : setMap[setFilter->term()]) {
addCard(CardDatabaseManager::getInstance()->getCardByNameAndProviderId( addCard(CardDatabaseManager::getInstance()->getCardByNameAndProviderId(
name.toString(), printing.getProperty("uuid"))); {name.toString(), printing.getProperty("uuid")}));
} }
} }
} else { } else {

View file

@ -101,8 +101,8 @@ QList<CardInfoPtr> VisualDeckEditorSampleHandWidget::getRandomCards(int amountTo
continue; continue;
for (int k = 0; k < currentCard->getNumber(); ++k) { for (int k = 0; k < currentCard->getNumber(); ++k) {
CardInfoPtr info = CardDatabaseManager::getInstance()->getCardByNameAndProviderId( CardInfoPtr info =
currentCard->getName(), currentCard->getCardProviderId()); CardDatabaseManager::getInstance()->getCardByNameAndProviderId(currentCard->toCardRef());
if (info) { if (info) {
mainDeckCards.append(info); mainDeckCards.append(info);
} }

View file

@ -74,10 +74,9 @@ void DeckPreviewWidget::initializeUi(const bool deckLoadSuccess)
if (!deckLoadSuccess) { if (!deckLoadSuccess) {
return; return;
} }
auto bannerCard = deckLoader->getBannerCard().first.isEmpty() auto bannerCard = deckLoader->getBannerCard().name.isEmpty()
? CardInfoPtr() ? CardInfoPtr()
: CardDatabaseManager::getInstance()->getCardByNameAndProviderId( : CardDatabaseManager::getInstance()->getCardByNameAndProviderId(deckLoader->getBannerCard());
deckLoader->getBannerCard().first, deckLoader->getBannerCard().second);
bannerCardDisplayWidget->setCard(bannerCard); bannerCardDisplayWidget->setCard(bannerCard);
bannerCardDisplayWidget->setFontSize(24); bannerCardDisplayWidget->setFontSize(24);
@ -91,7 +90,7 @@ void DeckPreviewWidget::initializeUi(const bool deckLoadSuccess)
bannerCardComboBox = new QComboBox(this); bannerCardComboBox = new QComboBox(this);
bannerCardComboBox->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); bannerCardComboBox->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
bannerCardComboBox->setObjectName("bannerCardComboBox"); bannerCardComboBox->setObjectName("bannerCardComboBox");
bannerCardComboBox->setCurrentText(deckLoader->getBannerCard().first); bannerCardComboBox->setCurrentText(deckLoader->getBannerCard().name);
bannerCardComboBox->installEventFilter(new NoScrollFilter()); bannerCardComboBox->installEventFilter(new NoScrollFilter());
connect(bannerCardComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), this, connect(bannerCardComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
&DeckPreviewWidget::setBannerCard); &DeckPreviewWidget::setBannerCard);
@ -274,7 +273,7 @@ void DeckPreviewWidget::updateBannerCardComboBox()
bannerCardComboBox->setCurrentIndex(restoredIndex); bannerCardComboBox->setCurrentIndex(restoredIndex);
} else { } else {
// Add a placeholder "-" and set it as the current selection // Add a placeholder "-" and set it as the current selection
int bannerIndex = bannerCardComboBox->findText(deckLoader->getBannerCard().first); int bannerIndex = bannerCardComboBox->findText(deckLoader->getBannerCard().name);
if (bannerIndex != -1) { if (bannerIndex != -1) {
bannerCardComboBox->setCurrentIndex(bannerIndex); bannerCardComboBox->setCurrentIndex(bannerIndex);
} else { } else {
@ -290,11 +289,11 @@ void DeckPreviewWidget::updateBannerCardComboBox()
void DeckPreviewWidget::setBannerCard(int /* changedIndex */) void DeckPreviewWidget::setBannerCard(int /* changedIndex */)
{ {
auto nameAndId = bannerCardComboBox->currentData().value<QPair<QString, QString>>(); auto [name, id] = bannerCardComboBox->currentData().value<QPair<QString, QString>>();
deckLoader->setBannerCard(nameAndId); CardRef cardRef = {name, id};
deckLoader->setBannerCard(cardRef);
deckLoader->saveToFile(filePath, DeckLoader::getFormatFromName(filePath)); deckLoader->saveToFile(filePath, DeckLoader::getFormatFromName(filePath));
bannerCardDisplayWidget->setCard( bannerCardDisplayWidget->setCard(CardDatabaseManager::getInstance()->getCardByNameAndProviderId(cardRef));
CardDatabaseManager::getInstance()->getCardByNameAndProviderId(nameAndId.first, nameAndId.second));
} }
void DeckPreviewWidget::imageClickedEvent(QMouseEvent *event, DeckPreviewCardPictureWidget *instance) void DeckPreviewWidget::imageClickedEvent(QMouseEvent *event, DeckPreviewCardPictureWidget *instance)

View file

@ -376,7 +376,7 @@ QModelIndex DeckListModel::addCard(const QString &cardName,
bool abAddAnyway) bool abAddAnyway)
{ {
CardInfoPtr cardInfo = CardInfoPtr cardInfo =
CardDatabaseManager::getInstance()->getCardByNameAndProviderId(cardName, printingInfo.getProperty("uuid")); CardDatabaseManager::getInstance()->getCardByNameAndProviderId({cardName, printingInfo.getProperty("uuid")});
if (cardInfo == nullptr) { if (cardInfo == nullptr) {
if (abAddAnyway) { if (abAddAnyway) {
@ -559,8 +559,8 @@ QList<CardInfoPtr> DeckListModel::getCardsAsCardInfoPtrs() const
if (!currentCard) if (!currentCard)
continue; continue;
for (int k = 0; k < currentCard->getNumber(); ++k) { for (int k = 0; k < currentCard->getNumber(); ++k) {
CardInfoPtr info = CardDatabaseManager::getInstance()->getCardByNameAndProviderId( CardInfoPtr info =
currentCard->getName(), currentCard->getCardProviderId()); CardDatabaseManager::getInstance()->getCardByNameAndProviderId(currentCard->toCardRef());
if (info) { if (info) {
cards.append(info); cards.append(info);
} else { } else {
@ -593,8 +593,8 @@ QList<CardInfoPtr> DeckListModel::getCardsAsCardInfoPtrsForZone(QString zoneName
if (!currentCard) if (!currentCard)
continue; continue;
for (int k = 0; k < currentCard->getNumber(); ++k) { for (int k = 0; k < currentCard->getNumber(); ++k) {
CardInfoPtr info = CardDatabaseManager::getInstance()->getCardByNameAndProviderId( CardInfoPtr info =
currentCard->getName(), currentCard->getCardProviderId()); CardDatabaseManager::getInstance()->getCardByNameAndProviderId(currentCard->toCardRef());
if (info) { if (info) {
cards.append(info); cards.append(info);
} else { } else {

View file

@ -594,7 +594,7 @@ QString DeckLoader::getCardZoneFromName(QString cardName, QString currentZoneNam
QString DeckLoader::getCompleteCardName(const QString &cardName) const QString DeckLoader::getCompleteCardName(const QString &cardName) const
{ {
if (CardDatabaseManager::getInstance()) { if (CardDatabaseManager::getInstance()) {
CardInfoPtr temp = CardDatabaseManager::getInstance()->guessCard(cardName); CardInfoPtr temp = CardDatabaseManager::getInstance()->guessCard({cardName});
if (temp) { if (temp) {
return temp->getName(); return temp->getName();
} }

View file

@ -296,9 +296,9 @@ void DlgSelectSetForCards::updateCardLists()
uneditedCardsFlowWidget->addWidget(picture_widget); uneditedCardsFlowWidget->addWidget(picture_widget);
} else { } else {
CardInfoPtr infoPtr = CardDatabaseManager::getInstance()->getCardByNameAndProviderId( CardInfoPtr infoPtr = CardDatabaseManager::getInstance()->getCardByNameAndProviderId(
currentCard->getName(), CardDatabaseManager::getInstance() {currentCard->getName(), CardDatabaseManager::getInstance()
->getSpecificPrinting(currentCard->getName(), foundSetName, "") ->getSpecificPrinting(currentCard->getName(), foundSetName, "")
.getProperty("uuid")); .getProperty("uuid")});
CardInfoPictureWidget *picture_widget = new CardInfoPictureWidget(modifiedCardsFlowWidget); CardInfoPictureWidget *picture_widget = new CardInfoPictureWidget(modifiedCardsFlowWidget);
picture_widget->setCard(infoPtr); picture_widget->setCard(infoPtr);
modifiedCardsFlowWidget->addWidget(picture_widget); modifiedCardsFlowWidget->addWidget(picture_widget);
@ -626,17 +626,17 @@ void SetEntryWidget::updateCardDisplayWidgets()
for (const QString &cardName : possibleCards) { for (const QString &cardName : possibleCards) {
CardInfoPictureWidget *picture_widget = new CardInfoPictureWidget(cardListContainer); CardInfoPictureWidget *picture_widget = new CardInfoPictureWidget(cardListContainer);
picture_widget->setCard(CardDatabaseManager::getInstance()->getCardByNameAndProviderId( QString providerId =
cardName, CardDatabaseManager::getInstance()->getSpecificPrinting(cardName, setName, nullptr).getProperty("uuid");
CardDatabaseManager::getInstance()->getSpecificPrinting(cardName, setName, nullptr).getProperty("uuid"))); picture_widget->setCard(CardDatabaseManager::getInstance()->getCardByNameAndProviderId({cardName, providerId}));
cardListContainer->addWidget(picture_widget); cardListContainer->addWidget(picture_widget);
} }
for (const QString &cardName : unusedCards) { for (const QString &cardName : unusedCards) {
CardInfoPictureWidget *picture_widget = new CardInfoPictureWidget(alreadySelectedCardListContainer); CardInfoPictureWidget *picture_widget = new CardInfoPictureWidget(alreadySelectedCardListContainer);
picture_widget->setCard(CardDatabaseManager::getInstance()->getCardByNameAndProviderId( QString providerId =
cardName, CardDatabaseManager::getInstance()->getSpecificPrinting(cardName, setName, nullptr).getProperty("uuid");
CardDatabaseManager::getInstance()->getSpecificPrinting(cardName, setName, nullptr).getProperty("uuid"))); picture_widget->setCard(CardDatabaseManager::getInstance()->getCardByNameAndProviderId({cardName, providerId}));
alreadySelectedCardListContainer->addWidget(picture_widget); alreadySelectedCardListContainer->addWidget(picture_widget);
} }
} }

View file

@ -12,13 +12,9 @@
#include <QPainter> #include <QPainter>
#include <algorithm> #include <algorithm>
AbstractCardItem::AbstractCardItem(QGraphicsItem *parent, AbstractCardItem::AbstractCardItem(QGraphicsItem *parent, const CardRef &cardRef, Player *_owner, int _id)
const QString &_name, : ArrowTarget(_owner, parent), id(_id), cardRef(cardRef), tapped(false), facedown(false), tapAngle(0),
const QString &_providerId, bgColor(Qt::transparent), isHovered(false), realZValue(0)
Player *_owner,
int _id)
: ArrowTarget(_owner, parent), id(_id), name(_name), providerId(_providerId), tapped(false), facedown(false),
tapAngle(0), bgColor(Qt::transparent), isHovered(false), realZValue(0)
{ {
setCursor(Qt::OpenHandCursor); setCursor(Qt::OpenHandCursor);
setFlag(ItemIsSelectable); setFlag(ItemIsSelectable);
@ -37,7 +33,7 @@ AbstractCardItem::AbstractCardItem(QGraphicsItem *parent,
AbstractCardItem::~AbstractCardItem() AbstractCardItem::~AbstractCardItem()
{ {
emit deleteCardInfoPopup(name); emit deleteCardInfoPopup(cardRef.name);
} }
QRectF AbstractCardItem::boundingRect() const QRectF AbstractCardItem::boundingRect() const
@ -61,13 +57,13 @@ void AbstractCardItem::pixmapUpdated()
void AbstractCardItem::refreshCardInfo() void AbstractCardItem::refreshCardInfo()
{ {
info = CardDatabaseManager::getInstance()->getCardByNameAndProviderId(name, providerId); info = CardDatabaseManager::getInstance()->getCardByNameAndProviderId(cardRef);
if (!info && !name.isEmpty()) { if (!info && !cardRef.name.isEmpty()) {
QVariantHash properties = QVariantHash(); QVariantHash properties = QVariantHash();
info = CardInfo::newInstance(name, "", true, QVariantHash(), QList<CardRelation *>(), QList<CardRelation *>(), info = CardInfo::newInstance(cardRef.name, "", true, QVariantHash(), QList<CardRelation *>(),
SetToPrintingsMap(), false, false, -1, false); QList<CardRelation *>(), SetToPrintingsMap(), false, false, -1, false);
} }
if (info.data()) { if (info.data()) {
connect(info.data(), &CardInfo::pixmapUpdated, this, &AbstractCardItem::pixmapUpdated); connect(info.data(), &CardInfo::pixmapUpdated, this, &AbstractCardItem::pixmapUpdated);
@ -114,7 +110,7 @@ void AbstractCardItem::paintPicture(QPainter *painter, const QSizeF &translatedS
QPixmap translatedPixmap; QPixmap translatedPixmap;
bool paintImage = true; bool paintImage = true;
if (facedown || name.isEmpty()) { if (facedown || cardRef.name.isEmpty()) {
// never reveal card color, always paint the card back // never reveal card color, always paint the card back
PictureLoader::getCardBackPixmap(translatedPixmap, translatedSize.toSize()); PictureLoader::getCardBackPixmap(translatedPixmap, translatedSize.toSize());
} else { } else {
@ -154,7 +150,7 @@ void AbstractCardItem::paintPicture(QPainter *painter, const QSizeF &translatedS
if (SettingsCache::instance().debug().getShowCardId()) { if (SettingsCache::instance().debug().getShowCardId()) {
prefix = "#" + QString::number(id) + " "; prefix = "#" + QString::number(id) + " ";
} }
nameStr = prefix + name; nameStr = prefix + cardRef.name;
} }
painter->drawText(QRectF(3 * scaleFactor, 3 * scaleFactor, translatedSize.width() - 6 * scaleFactor, painter->drawText(QRectF(3 * scaleFactor, 3 * scaleFactor, translatedSize.width() - 6 * scaleFactor,
translatedSize.height() - 6 * scaleFactor), translatedSize.height() - 6 * scaleFactor),
@ -190,28 +186,28 @@ void AbstractCardItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *
void AbstractCardItem::setName(const QString &_name) void AbstractCardItem::setName(const QString &_name)
{ {
if (name == _name) if (cardRef.name == _name)
return; return;
emit deleteCardInfoPopup(name); emit deleteCardInfoPopup(cardRef.name);
if (info) if (info)
disconnect(info.data(), nullptr, this, nullptr); disconnect(info.data(), nullptr, this, nullptr);
name = _name; cardRef.name = _name;
refreshCardInfo(); refreshCardInfo();
} }
void AbstractCardItem::setProviderId(const QString &_providerId) void AbstractCardItem::setProviderId(const QString &_providerId)
{ {
if (providerId == _providerId) { if (cardRef.providerId == _providerId) {
return; return;
} }
emit deleteCardInfoPopup(name); emit deleteCardInfoPopup(cardRef.name);
if (info) { if (info) {
disconnect(info.data(), nullptr, this, nullptr); disconnect(info.data(), nullptr, this, nullptr);
} }
providerId = _providerId; cardRef.providerId = _providerId;
refreshCardInfo(); refreshCardInfo();
} }
@ -299,7 +295,7 @@ void AbstractCardItem::setFaceDown(bool _facedown)
void AbstractCardItem::mousePressEvent(QGraphicsSceneMouseEvent *event) void AbstractCardItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
{ {
if ((event->modifiers() & Qt::AltModifier) && event->button() == Qt::LeftButton) { if ((event->modifiers() & Qt::AltModifier) && event->button() == Qt::LeftButton) {
emit cardShiftClicked(name); emit cardShiftClicked(cardRef.name);
} else if ((event->modifiers() & Qt::ControlModifier)) { } else if ((event->modifiers() & Qt::ControlModifier)) {
setSelected(!isSelected()); setSelected(!isSelected());
} else if (!isSelected()) { } else if (!isSelected()) {
@ -309,14 +305,14 @@ void AbstractCardItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
if (event->button() == Qt::LeftButton) if (event->button() == Qt::LeftButton)
setCursor(Qt::ClosedHandCursor); setCursor(Qt::ClosedHandCursor);
else if (event->button() == Qt::MiddleButton) else if (event->button() == Qt::MiddleButton)
emit showCardInfoPopup(event->screenPos(), name, providerId); emit showCardInfoPopup(event->screenPos(), cardRef);
event->accept(); event->accept();
} }
void AbstractCardItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) void AbstractCardItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{ {
if (event->button() == Qt::MiddleButton) if (event->button() == Qt::MiddleButton)
emit deleteCardInfoPopup(name); emit deleteCardInfoPopup(cardRef.name);
// This function ensures the parent function doesn't mess around with our selection. // This function ensures the parent function doesn't mess around with our selection.
event->accept(); event->accept();

View file

@ -3,6 +3,7 @@
#include "../cards/card_info.h" #include "../cards/card_info.h"
#include "arrow_target.h" #include "arrow_target.h"
#include "card_ref.h"
class Player; class Player;
@ -15,8 +16,7 @@ class AbstractCardItem : public ArrowTarget
protected: protected:
CardInfoPtr info; CardInfoPtr info;
int id; int id;
QString name; CardRef cardRef;
QString providerId;
bool tapped; bool tapped;
bool facedown; bool facedown;
int tapAngle; int tapAngle;
@ -34,7 +34,7 @@ public slots:
signals: signals:
void hovered(AbstractCardItem *card); void hovered(AbstractCardItem *card);
void showCardInfoPopup(const QPoint &pos, const QString &cardName, const QString &providerId); void showCardInfoPopup(const QPoint &pos, const CardRef &cardRef);
void deleteCardInfoPopup(QString cardName); void deleteCardInfoPopup(QString cardName);
void sigPixmapUpdated(); void sigPixmapUpdated();
void cardShiftClicked(QString cardName); void cardShiftClicked(QString cardName);
@ -49,8 +49,7 @@ public:
return Type; return Type;
} }
explicit AbstractCardItem(QGraphicsItem *parent = nullptr, explicit AbstractCardItem(QGraphicsItem *parent = nullptr,
const QString &_name = QString(), const CardRef &cardRef = {},
const QString &_providerId = QString(),
Player *_owner = nullptr, Player *_owner = nullptr,
int _id = -1); int _id = -1);
~AbstractCardItem() override; ~AbstractCardItem() override;
@ -73,14 +72,18 @@ public:
} }
QString getName() const QString getName() const
{ {
return name; return cardRef.name;
} }
void setName(const QString &_name = QString()); void setName(const QString &_name = QString());
QString getProviderId() const QString getProviderId() const
{ {
return providerId; return cardRef.providerId;
} }
void setProviderId(const QString &_providerId = QString()); void setProviderId(const QString &_providerId = QString());
CardRef getCardRef() const
{
return cardRef;
}
qreal getRealZValue() const qreal getRealZValue() const
{ {
return realZValue; return realZValue;
@ -105,7 +108,7 @@ public:
void processHoverEvent(); void processHoverEvent();
void deleteCardInfoPopup() void deleteCardInfoPopup()
{ {
emit deleteCardInfoPopup(name); emit deleteCardInfoPopup(cardRef.name);
} }
protected: protected:

View file

@ -18,14 +18,9 @@
#include <QMenu> #include <QMenu>
#include <QPainter> #include <QPainter>
CardItem::CardItem(Player *_owner, CardItem::CardItem(Player *_owner, QGraphicsItem *parent, const CardRef &cardRef, int _cardid, CardZone *_zone)
QGraphicsItem *parent, : AbstractCardItem(parent, cardRef, _owner, _cardid), zone(_zone), attacking(false), destroyOnZoneChange(false),
const QString &_name, doesntUntap(false), dragItem(nullptr), attachedTo(nullptr)
const QString &_providerId,
int _cardid,
CardZone *_zone)
: AbstractCardItem(parent, _name, _providerId, _owner, _cardid), zone(_zone), attacking(false),
destroyOnZoneChange(false), doesntUntap(false), dragItem(nullptr), attachedTo(nullptr)
{ {
owner->addCard(this); owner->addCard(this);

View file

@ -51,8 +51,7 @@ public:
} }
explicit CardItem(Player *_owner, explicit CardItem(Player *_owner,
QGraphicsItem *parent = nullptr, QGraphicsItem *parent = nullptr,
const QString &_name = QString(), const CardRef &cardRef = {},
const QString &_providerId = QString(),
int _cardid = -1, int _cardid = -1,
CardZone *_zone = nullptr); CardZone *_zone = nullptr);
~CardItem() override; ~CardItem() override;

View file

@ -67,11 +67,8 @@ void DeckViewCardDragItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
event->accept(); event->accept();
} }
DeckViewCard::DeckViewCard(QGraphicsItem *parent, DeckViewCard::DeckViewCard(QGraphicsItem *parent, const CardRef &cardRef, const QString &_originZone)
const QString &_name, : AbstractCardItem(parent, cardRef, 0, -1), originZone(_originZone), dragItem(0)
const QString &_providerId,
const QString &_originZone)
: AbstractCardItem(parent, _name, _providerId, 0, -1), originZone(_originZone), dragItem(0)
{ {
setAcceptHoverEvents(true); setAcceptHoverEvents(true);
@ -362,8 +359,7 @@ void DeckViewScene::rebuildTree()
continue; continue;
for (int k = 0; k < currentCard->getNumber(); ++k) { for (int k = 0; k < currentCard->getNumber(); ++k) {
DeckViewCard *newCard = new DeckViewCard(container, currentCard->getName(), DeckViewCard *newCard = new DeckViewCard(container, currentCard->toCardRef(), currentZone->getName());
currentCard->getCardProviderId(), currentZone->getName());
container->addCard(newCard); container->addCard(newCard);
emit newCardAdded(newCard); emit newCardAdded(newCard);
} }

View file

@ -25,8 +25,7 @@ private:
public: public:
explicit DeckViewCard(QGraphicsItem *parent = nullptr, explicit DeckViewCard(QGraphicsItem *parent = nullptr,
const QString &_name = QString(), const CardRef &cardRef = {},
const QString &_providerId = QString(),
const QString &_originZone = QString()); const QString &_originZone = QString());
~DeckViewCard() override; ~DeckViewCard() override;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;

View file

@ -1849,7 +1849,7 @@ void Player::actCreateToken()
lastTokenInfo = dlg.getTokenInfo(); lastTokenInfo = dlg.getTokenInfo();
CardInfoPtr correctedCard = CardDatabaseManager::getInstance()->guessCard(lastTokenInfo.name); CardInfoPtr correctedCard = CardDatabaseManager::getInstance()->guessCard({lastTokenInfo.name});
if (correctedCard) { if (correctedCard) {
lastTokenInfo.name = correctedCard->getName(); lastTokenInfo.name = correctedCard->getName();
lastTokenTableRow = TableZone::clampValidTableRow(2 - correctedCard->getTableRow()); lastTokenTableRow = TableZone::clampValidTableRow(2 - correctedCard->getTableRow());
@ -1913,7 +1913,7 @@ void Player::actCreateRelatedCard()
*/ */
if (createRelatedFromRelation(sourceCard, cardRelation) && cardRelation->getCanCreateAnother()) { if (createRelatedFromRelation(sourceCard, cardRelation) && cardRelation->getCanCreateAnother()) {
CardInfoPtr cardInfo = CardDatabaseManager::getInstance()->getCardByNameAndProviderId( CardInfoPtr cardInfo = CardDatabaseManager::getInstance()->getCardByNameAndProviderId(
cardRelation->getName(), sourceCard->getProviderId()); {cardRelation->getName(), sourceCard->getProviderId()});
setLastToken(cardInfo); setLastToken(cardInfo);
} }
} }
@ -2253,8 +2253,8 @@ void Player::eventCreateToken(const Event_CreateToken &event)
return; return;
} }
CardItem *card = new CardItem(this, nullptr, QString::fromStdString(event.card_name()), CardRef cardRef = {QString::fromStdString(event.card_name()), QString::fromStdString(event.card_provider_id())};
QString::fromStdString(event.card_provider_id()), event.card_id()); CardItem *card = new CardItem(this, nullptr, cardRef, event.card_id());
// use db PT if not provided in event and not face-down // use db PT if not provided in event and not face-down
if (!QString::fromStdString(event.pt()).isEmpty()) { if (!QString::fromStdString(event.pt()).isEmpty()) {
card->setPT(QString::fromStdString(event.pt())); card->setPT(QString::fromStdString(event.pt()));
@ -4096,7 +4096,7 @@ void Player::addRelatedCardView(const CardItem *card, QMenu *cardMenu)
QString relatedCardName = relatedCard->getName(); QString relatedCardName = relatedCard->getName();
QAction *viewCard = viewRelatedCards->addAction(relatedCardName); QAction *viewCard = viewRelatedCards->addAction(relatedCardName);
connect(viewCard, &QAction::triggered, game, [this, relatedCardName, currentCardSet] { connect(viewCard, &QAction::triggered, game, [this, relatedCardName, currentCardSet] {
game->viewCardInfo(relatedCardName, currentCardSet.getProperty("uuid")); game->viewCardInfo({relatedCardName, currentCardSet.getProperty("uuid")});
}); });
} }
} }
@ -4123,7 +4123,7 @@ void Player::addRelatedCardActions(const CardItem *card, QMenu *cardMenu)
QAction *createRelatedCards = nullptr; QAction *createRelatedCards = nullptr;
for (const CardRelation *cardRelation : relatedCards) { for (const CardRelation *cardRelation : relatedCards) {
CardInfoPtr relatedCard = CardDatabaseManager::getInstance()->getCardByNameAndProviderId( CardInfoPtr relatedCard = CardDatabaseManager::getInstance()->getCardByNameAndProviderId(
cardRelation->getName(), currentCardSet.getProperty("uuid")); {cardRelation->getName(), currentCardSet.getProperty("uuid")});
if (relatedCard == nullptr) { if (relatedCard == nullptr) {
relatedCard = CardDatabaseManager::getInstance()->getCard(cardRelation->getName()); relatedCard = CardDatabaseManager::getInstance()->getCard(cardRelation->getName());
} }

View file

@ -141,8 +141,7 @@ void CardZone::addCard(CardItem *card, const bool reorganize, const int x, const
for (auto *view : views) { for (auto *view : views) {
if (view->prepareAddCard(x)) { if (view->prepareAddCard(x)) {
view->addCard(new CardItem(player, nullptr, card->getName(), card->getProviderId(), card->getId()), view->addCard(new CardItem(player, nullptr, card->getCardRef(), card->getId()), reorganize, x, y);
reorganize, x, y);
} }
} }

View file

@ -68,10 +68,11 @@ void ZoneViewZone::paint(QPainter *painter, const QStyleOptionGraphicsItem * /*o
void ZoneViewZone::initializeCards(const QList<const ServerInfo_Card *> &cardList) void ZoneViewZone::initializeCards(const QList<const ServerInfo_Card *> &cardList)
{ {
if (!cardList.isEmpty()) { if (!cardList.isEmpty()) {
for (int i = 0; i < cardList.size(); ++i) for (int i = 0; i < cardList.size(); ++i) {
addCard(new CardItem(player, this, QString::fromStdString(cardList[i]->name()), auto card = cardList[i];
QString::fromStdString(cardList[i]->provider_id()), cardList[i]->id()), CardRef cardRef = {QString::fromStdString(card->name()), QString::fromStdString(card->provider_id())};
false, i); addCard(new CardItem(player, this, cardRef, card->id()), false, i);
}
reorganizeCards(); reorganizeCards();
} else if (!origZone->contentsKnown()) { } else if (!origZone->contentsKnown()) {
Command_DumpZone cmd; Command_DumpZone cmd;
@ -88,7 +89,7 @@ void ZoneViewZone::initializeCards(const QList<const ServerInfo_Card *> &cardLis
int number = numberCards == -1 ? c.size() : (numberCards < c.size() ? numberCards : c.size()); int number = numberCards == -1 ? c.size() : (numberCards < c.size() ? numberCards : c.size());
for (int i = 0; i < number; i++) { for (int i = 0; i < number; i++) {
CardItem *card = c.at(i); CardItem *card = c.at(i);
addCard(new CardItem(player, this, card->getName(), card->getProviderId(), card->getId()), false, i); addCard(new CardItem(player, this, card->getCardRef(), card->getId()), false, i);
} }
reorganizeCards(); reorganizeCards();
} }
@ -102,7 +103,7 @@ void ZoneViewZone::zoneDumpReceived(const Response &r)
const ServerInfo_Card &cardInfo = resp.zone_info().card_list(i); const ServerInfo_Card &cardInfo = resp.zone_info().card_list(i);
auto cardName = QString::fromStdString(cardInfo.name()); auto cardName = QString::fromStdString(cardInfo.name());
auto cardProviderId = QString::fromStdString(cardInfo.provider_id()); auto cardProviderId = QString::fromStdString(cardInfo.provider_id());
auto *card = new CardItem(player, this, cardName, cardProviderId, cardInfo.id(), this); auto *card = new CardItem(player, this, {cardName, cardProviderId}, cardInfo.id(), this);
cards.insert(i, card); cards.insert(i, card);
} }

View file

@ -582,9 +582,9 @@ void ChatView::mousePressEvent(QMouseEvent *event)
case HoveredCard: { case HoveredCard: {
if ((event->button() == Qt::MiddleButton) || (event->button() == Qt::LeftButton)) if ((event->button() == Qt::MiddleButton) || (event->button() == Qt::LeftButton))
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) #if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
emit showCardInfoPopup(event->globalPosition().toPoint(), hoveredContent, QString()); emit showCardInfoPopup(event->globalPosition().toPoint(), {hoveredContent});
#else #else
emit showCardInfoPopup(event->globalPos(), hoveredContent, QString()); emit showCardInfoPopup(event->globalPos(), {hoveredContent});
#endif #endif
break; break;
} }

View file

@ -109,7 +109,7 @@ protected:
signals: signals:
void openMessageDialog(const QString &userName, bool focus); void openMessageDialog(const QString &userName, bool focus);
void cardNameHovered(QString cardName); void cardNameHovered(QString cardName);
void showCardInfoPopup(const QPoint &pos, const QString &cardName, const QString &providerId); void showCardInfoPopup(const QPoint &pos, const CardRef &cardRef);
void deleteCardInfoPopup(QString cardName); void deleteCardInfoPopup(QString cardName);
void addMentionTag(QString mentionTag); void addMentionTag(QString mentionTag);
void messageClickedSignal(); void messageClickedSignal();

View file

@ -5,9 +5,9 @@ CardOverrideSettings::CardOverrideSettings(const QString &settingPath, QObject *
{ {
} }
void CardOverrideSettings::setCardPreferenceOverride(const QString &cardName, const QString &providerId) void CardOverrideSettings::setCardPreferenceOverride(const CardRef &cardRef)
{ {
setValue(providerId, cardName, "cards"); setValue(cardRef.providerId, cardRef.name, "cards");
} }
void CardOverrideSettings::deleteCardPreferenceOverride(const QString &cardName) void CardOverrideSettings::deleteCardPreferenceOverride(const QString &cardName)

View file

@ -1,6 +1,7 @@
#ifndef COCKATRICE_CARD_OVERRIDE_SETTINGS_H #ifndef COCKATRICE_CARD_OVERRIDE_SETTINGS_H
#define COCKATRICE_CARD_OVERRIDE_SETTINGS_H #define COCKATRICE_CARD_OVERRIDE_SETTINGS_H
#include "card_ref.h"
#include "settings_manager.h" #include "settings_manager.h"
#include <QObject> #include <QObject>
@ -11,7 +12,7 @@ class CardOverrideSettings : public SettingsManager
friend class SettingsCache; friend class SettingsCache;
public: public:
void setCardPreferenceOverride(const QString &cardName, const QString &providerId); void setCardPreferenceOverride(const CardRef &cardRef);
void deleteCardPreferenceOverride(const QString &cardName); void deleteCardPreferenceOverride(const QString &cardName);