diff --git a/cockatrice/src/client/tabs/api/edhrec/tab_edhrec.cpp b/cockatrice/src/client/tabs/api/edhrec/tab_edhrec.cpp index e2fd9a918..fcbd52af5 100644 --- a/cockatrice/src/client/tabs/api/edhrec/tab_edhrec.cpp +++ b/cockatrice/src/client/tabs/api/edhrec/tab_edhrec.cpp @@ -43,7 +43,7 @@ void TabEdhRec::retranslateUi() { } -void TabEdhRec::setCard(CardInfoPtr _cardToQuery) +void TabEdhRec::setCard(CardInfoPtr _cardToQuery, bool isCommander) { cardToQuery = _cardToQuery; @@ -55,7 +55,12 @@ void TabEdhRec::setCard(CardInfoPtr _cardToQuery) QString cardName = cardToQuery->getName(); 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)}; diff --git a/cockatrice/src/client/tabs/api/edhrec/tab_edhrec.h b/cockatrice/src/client/tabs/api/edhrec/tab_edhrec.h index ff0a3fcd0..fea96baa8 100644 --- a/cockatrice/src/client/tabs/api/edhrec/tab_edhrec.h +++ b/cockatrice/src/client/tabs/api/edhrec/tab_edhrec.h @@ -28,7 +28,7 @@ public: public slots: void processApiJson(QNetworkReply *reply); void prettyPrintJson(const QJsonValue &value, int indentLevel); - void setCard(CardInfoPtr _cardToQuery); + void setCard(CardInfoPtr _cardToQuery, bool isCommander = false); private: QScrollArea *scrollArea; diff --git a/cockatrice/src/client/tabs/tab_deck_editor.cpp b/cockatrice/src/client/tabs/tab_deck_editor.cpp index ee593037a..605a9b038 100644 --- a/cockatrice/src/client/tabs/tab_deck_editor.cpp +++ b/cockatrice/src/client/tabs/tab_deck_editor.cpp @@ -542,16 +542,23 @@ void TabDeckEditor::databaseCustomMenu(QPoint point) if (info) { // add to deck and sideboard options - QAction *addToDeck, *addToSideboard, *selectPrinting, *edhRec; + QAction *addToDeck, *addToSideboard, *selectPrinting, *edhRecCommander, *edhRecCard; addToDeck = menu.addAction(tr("Add to Deck")); addToSideboard = menu.addAction(tr("Add to Sideboard")); 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(addToSideboard, SIGNAL(triggered()), this, SLOT(actAddCardToSideboard())); 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 auto *relatedMenu = new QMenu(tr("Show Related cards")); diff --git a/cockatrice/src/client/tabs/tab_supervisor.cpp b/cockatrice/src/client/tabs/tab_supervisor.cpp index 48ea04c3b..3f4612347 100644 --- a/cockatrice/src/client/tabs/tab_supervisor.cpp +++ b/cockatrice/src/client/tabs/tab_supervisor.cpp @@ -720,11 +720,11 @@ TabDeckEditor *TabSupervisor::addDeckEditorTab(const DeckLoader *deckToOpen) return tab; } -TabEdhRec *TabSupervisor::addEdhrecTab(const CardInfoPtr cardToQuery) +TabEdhRec *TabSupervisor::addEdhrecTab(const CardInfoPtr cardToQuery, bool isCommander) { TabEdhRec *tab = new TabEdhRec(this); if (cardToQuery) - tab->setCard(cardToQuery); + tab->setCard(cardToQuery, isCommander); // connect(tab, &TabDeckEditor::deckEditorClosing, this, &TabSupervisor::deckEditorClosed); // connect(tab, &TabDeckEditor::openDeckEditor, this, &TabSupervisor::addDeckEditorTab); myAddTab(tab); diff --git a/cockatrice/src/client/tabs/tab_supervisor.h b/cockatrice/src/client/tabs/tab_supervisor.h index 5f817a218..98d53d683 100644 --- a/cockatrice/src/client/tabs/tab_supervisor.h +++ b/cockatrice/src/client/tabs/tab_supervisor.h @@ -148,7 +148,7 @@ signals: public slots: TabDeckEditor *addDeckEditorTab(const DeckLoader *deckToOpen); - TabEdhRec *addEdhrecTab(CardInfoPtr cardToQuery); + TabEdhRec *addEdhrecTab(CardInfoPtr cardToQuery, bool isCommander = false); void openReplay(GameReplay *replay); void maximizeMainWindow(); private slots: