Distinguish between looking up a card as a commander and a card.

This commit is contained in:
Lukas Brübach 2025-01-22 11:48:18 +01:00
parent 276a8fa335
commit 364865487a
5 changed files with 21 additions and 9 deletions

View file

@ -43,7 +43,7 @@ void TabEdhRec::retranslateUi()
{ {
} }
void TabEdhRec::setCard(CardInfoPtr _cardToQuery) void TabEdhRec::setCard(CardInfoPtr _cardToQuery, bool isCommander)
{ {
cardToQuery = _cardToQuery; cardToQuery = _cardToQuery;
@ -55,7 +55,12 @@ void TabEdhRec::setCard(CardInfoPtr _cardToQuery)
QString cardName = cardToQuery->getName(); QString cardName = cardToQuery->getName();
QString formattedName = cardName.toLower().replace(" ", "-").remove(QRegularExpression("[^a-z0-9\\-]")); QString formattedName = cardName.toLower().replace(" ", "-").remove(QRegularExpression("[^a-z0-9\\-]"));
QString url = QString("https://json.edhrec.com/pages/commanders/%1.json").arg(formattedName); QString url;
if (isCommander) {
url = QString("https://json.edhrec.com/pages/commanders/%1.json").arg(formattedName);
} else {
url = QString("https://json.edhrec.com/pages/cards/%1.json").arg(formattedName);
}
QNetworkRequest request{QUrl(url)}; QNetworkRequest request{QUrl(url)};

View file

@ -28,7 +28,7 @@ public:
public slots: public slots:
void processApiJson(QNetworkReply *reply); void processApiJson(QNetworkReply *reply);
void prettyPrintJson(const QJsonValue &value, int indentLevel); void prettyPrintJson(const QJsonValue &value, int indentLevel);
void setCard(CardInfoPtr _cardToQuery); void setCard(CardInfoPtr _cardToQuery, bool isCommander = false);
private: private:
QScrollArea *scrollArea; QScrollArea *scrollArea;

View file

@ -542,16 +542,23 @@ void TabDeckEditor::databaseCustomMenu(QPoint point)
if (info) { if (info) {
// add to deck and sideboard options // add to deck and sideboard options
QAction *addToDeck, *addToSideboard, *selectPrinting, *edhRec; QAction *addToDeck, *addToSideboard, *selectPrinting, *edhRecCommander, *edhRecCard;
addToDeck = menu.addAction(tr("Add to Deck")); addToDeck = menu.addAction(tr("Add to Deck"));
addToSideboard = menu.addAction(tr("Add to Sideboard")); addToSideboard = menu.addAction(tr("Add to Sideboard"));
selectPrinting = menu.addAction(tr("Select Printing")); selectPrinting = menu.addAction(tr("Select Printing"));
edhRec = menu.addAction(tr("Show on EDHREC")); if ((info->getCardType().contains("Legendary", Qt::CaseInsensitive) &&
info->getCardType().contains("Creature", Qt::CaseInsensitive)) ||
info->getText().contains("can be your commander", Qt::CaseInsensitive)) {
edhRecCommander = menu.addAction(tr("Show on EDHREC (Commander)"));
connect(edhRecCommander, &QAction::triggered, this,
[this, info] { this->tabSupervisor->addEdhrecTab(info, true); });
}
edhRecCard = menu.addAction(tr("Show on EDHREC (Card)"));
connect(addToDeck, SIGNAL(triggered()), this, SLOT(actAddCard())); connect(addToDeck, SIGNAL(triggered()), this, SLOT(actAddCard()));
connect(addToSideboard, SIGNAL(triggered()), this, SLOT(actAddCardToSideboard())); connect(addToSideboard, SIGNAL(triggered()), this, SLOT(actAddCardToSideboard()));
connect(selectPrinting, &QAction::triggered, this, [this, info] { this->showPrintingSelector(); }); connect(selectPrinting, &QAction::triggered, this, [this, info] { this->showPrintingSelector(); });
connect(edhRec, &QAction::triggered, this, [this, info] { this->tabSupervisor->addEdhrecTab(info); }); connect(edhRecCard, &QAction::triggered, this, [this, info] { this->tabSupervisor->addEdhrecTab(info); });
// filling out the related cards submenu // filling out the related cards submenu
auto *relatedMenu = new QMenu(tr("Show Related cards")); auto *relatedMenu = new QMenu(tr("Show Related cards"));

View file

@ -720,11 +720,11 @@ TabDeckEditor *TabSupervisor::addDeckEditorTab(const DeckLoader *deckToOpen)
return tab; return tab;
} }
TabEdhRec *TabSupervisor::addEdhrecTab(const CardInfoPtr cardToQuery) TabEdhRec *TabSupervisor::addEdhrecTab(const CardInfoPtr cardToQuery, bool isCommander)
{ {
TabEdhRec *tab = new TabEdhRec(this); TabEdhRec *tab = new TabEdhRec(this);
if (cardToQuery) if (cardToQuery)
tab->setCard(cardToQuery); tab->setCard(cardToQuery, isCommander);
// connect(tab, &TabDeckEditor::deckEditorClosing, this, &TabSupervisor::deckEditorClosed); // connect(tab, &TabDeckEditor::deckEditorClosing, this, &TabSupervisor::deckEditorClosed);
// connect(tab, &TabDeckEditor::openDeckEditor, this, &TabSupervisor::addDeckEditorTab); // connect(tab, &TabDeckEditor::openDeckEditor, this, &TabSupervisor::addDeckEditorTab);
myAddTab(tab); myAddTab(tab);

View file

@ -148,7 +148,7 @@ signals:
public slots: public slots:
TabDeckEditor *addDeckEditorTab(const DeckLoader *deckToOpen); TabDeckEditor *addDeckEditorTab(const DeckLoader *deckToOpen);
TabEdhRec *addEdhrecTab(CardInfoPtr cardToQuery); TabEdhRec *addEdhrecTab(CardInfoPtr cardToQuery, bool isCommander = false);
void openReplay(GameReplay *replay); void openReplay(GameReplay *replay);
void maximizeMainWindow(); void maximizeMainWindow();
private slots: private slots: