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 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);
}
}

View file

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

View file

@ -14,14 +14,13 @@ Tab::Tab(TabSupervisor *_tabSupervisor)
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) {
infoPopup->deleteLater();
}
currentCardName = cardName;
currentProviderId = providerId;
infoPopup = new CardInfoDisplayWidget(cardName, providerId, nullptr,
currentCard = cardRef;
infoPopup = new CardInfoDisplayWidget(currentCard, nullptr,
Qt::Widget | Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint |
Qt::WindowStaysOnTopHint);
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)
{
if (infoPopup) {
if ((currentCardName == cardName) || (cardName == "_")) {
if (currentCard.name == cardName || cardName == "_") {
infoPopup->deleteLater();
infoPopup = 0;
}

View file

@ -1,6 +1,8 @@
#ifndef TAB_H
#define TAB_H
#include "card_ref.h"
#include <QMainWindow>
class QMenu;
@ -27,12 +29,12 @@ protected:
tabMenus.append(menu);
}
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 closeEvent(QCloseEvent *event) override;
private:
QString currentCardName, currentProviderId;
CardRef currentCard;
bool contentsChanged;
CardInfoDisplayWidget *infoPopup;
QList<QMenu *> tabMenus;

View file

@ -1625,9 +1625,9 @@ void TabGame::createDeckViewContainerWidget(bool bReplay)
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)

View file

@ -266,7 +266,7 @@ public:
public slots:
void sendGameCommand(PendingCommand *pend, 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

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()->getCardByNameAndProviderId({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()->getCardByNameAndProviderId({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

@ -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()->getCardByNameAndProviderId(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

@ -143,7 +143,7 @@ void DeckEditorDatabaseDisplayWidget::updateCard(const QModelIndex &current, con
}
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) {
card = CardDatabaseManager::getInstance()->getCard(cardName);
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1849,7 +1849,7 @@ void Player::actCreateToken()
lastTokenInfo = dlg.getTokenInfo();
CardInfoPtr correctedCard = CardDatabaseManager::getInstance()->guessCard(lastTokenInfo.name);
CardInfoPtr correctedCard = CardDatabaseManager::getInstance()->guessCard({lastTokenInfo.name});
if (correctedCard) {
lastTokenInfo.name = correctedCard->getName();
lastTokenTableRow = TableZone::clampValidTableRow(2 - correctedCard->getTableRow());
@ -1913,7 +1913,7 @@ void Player::actCreateRelatedCard()
*/
if (createRelatedFromRelation(sourceCard, cardRelation) && cardRelation->getCanCreateAnother()) {
CardInfoPtr cardInfo = CardDatabaseManager::getInstance()->getCardByNameAndProviderId(
cardRelation->getName(), sourceCard->getProviderId());
{cardRelation->getName(), sourceCard->getProviderId()});
setLastToken(cardInfo);
}
}
@ -2253,8 +2253,8 @@ void Player::eventCreateToken(const Event_CreateToken &event)
return;
}
CardItem *card = new CardItem(this, nullptr, QString::fromStdString(event.card_name()),
QString::fromStdString(event.card_provider_id()), event.card_id());
CardRef cardRef = {QString::fromStdString(event.card_name()), QString::fromStdString(event.card_provider_id())};
CardItem *card = new CardItem(this, nullptr, cardRef, event.card_id());
// use db PT if not provided in event and not face-down
if (!QString::fromStdString(event.pt()).isEmpty()) {
card->setPT(QString::fromStdString(event.pt()));
@ -4096,7 +4096,7 @@ void Player::addRelatedCardView(const CardItem *card, QMenu *cardMenu)
QString relatedCardName = relatedCard->getName();
QAction *viewCard = viewRelatedCards->addAction(relatedCardName);
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;
for (const CardRelation *cardRelation : relatedCards) {
CardInfoPtr relatedCard = CardDatabaseManager::getInstance()->getCardByNameAndProviderId(
cardRelation->getName(), currentCardSet.getProperty("uuid"));
{cardRelation->getName(), currentCardSet.getProperty("uuid")});
if (relatedCard == nullptr) {
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) {
if (view->prepareAddCard(x)) {
view->addCard(new CardItem(player, nullptr, card->getName(), card->getProviderId(), card->getId()),
reorganize, x, y);
view->addCard(new CardItem(player, nullptr, card->getCardRef(), card->getId()), 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)
{
if (!cardList.isEmpty()) {
for (int i = 0; i < cardList.size(); ++i)
addCard(new CardItem(player, this, QString::fromStdString(cardList[i]->name()),
QString::fromStdString(cardList[i]->provider_id()), cardList[i]->id()),
false, i);
for (int i = 0; i < cardList.size(); ++i) {
auto card = cardList[i];
CardRef cardRef = {QString::fromStdString(card->name()), QString::fromStdString(card->provider_id())};
addCard(new CardItem(player, this, cardRef, card->id()), false, i);
}
reorganizeCards();
} else if (!origZone->contentsKnown()) {
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());
for (int i = 0; i < number; 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();
}
@ -102,7 +103,7 @@ void ZoneViewZone::zoneDumpReceived(const Response &r)
const ServerInfo_Card &cardInfo = resp.zone_info().card_list(i);
auto cardName = QString::fromStdString(cardInfo.name());
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);
}

View file

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

View file

@ -109,7 +109,7 @@ protected:
signals:
void openMessageDialog(const QString &userName, bool focus);
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 addMentionTag(QString mentionTag);
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)

View file

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