diff --git a/cockatrice/src/client/tabs/api/edhrec/commander/edhrec_commander_api_response_card_details_display_widget.cpp b/cockatrice/src/client/tabs/api/edhrec/commander/edhrec_commander_api_response_card_details_display_widget.cpp index d51e5d16b..834014714 100644 --- a/cockatrice/src/client/tabs/api/edhrec/commander/edhrec_commander_api_response_card_details_display_widget.cpp +++ b/cockatrice/src/client/tabs/api/edhrec/commander/edhrec_commander_api_response_card_details_display_widget.cpp @@ -1,6 +1,7 @@ #include "edhrec_commander_api_response_card_details_display_widget.h" #include "../../../../../game/cards/card_database_manager.h" +#include "../tab_edhrec_main.h" EdhrecCommanderApiResponseCardDetailsDisplayWidget::EdhrecCommanderApiResponseCardDetailsDisplayWidget( QWidget *parent, @@ -41,4 +42,26 @@ EdhrecCommanderApiResponseCardDetailsDisplayWidget::EdhrecCommanderApiResponseCa layout->addWidget(cardPictureWidget); layout->addWidget(label); + + QWidget *currentParent = parentWidget(); + TabEdhRecMain *parentTab = nullptr; + + while (currentParent) { + if ((parentTab = qobject_cast(currentParent))) { + break; + } + currentParent = currentParent->parentWidget(); + } + + if (parentTab) { + connect(cardPictureWidget, &CardInfoPictureWidget::cardClicked, this, + &EdhrecCommanderApiResponseCardDetailsDisplayWidget::actRequestPageNavigation); + connect(this, &EdhrecCommanderApiResponseCardDetailsDisplayWidget::requestUrl, parentTab, + &TabEdhRecMain::actNavigatePage); + } +} + +void EdhrecCommanderApiResponseCardDetailsDisplayWidget::actRequestPageNavigation() +{ + emit requestUrl(toDisplay.url); } diff --git a/cockatrice/src/client/tabs/api/edhrec/commander/edhrec_commander_api_response_card_details_display_widget.h b/cockatrice/src/client/tabs/api/edhrec/commander/edhrec_commander_api_response_card_details_display_widget.h index 5e6356ca6..0260a83b3 100644 --- a/cockatrice/src/client/tabs/api/edhrec/commander/edhrec_commander_api_response_card_details_display_widget.h +++ b/cockatrice/src/client/tabs/api/edhrec/commander/edhrec_commander_api_response_card_details_display_widget.h @@ -15,6 +15,10 @@ public: explicit EdhrecCommanderApiResponseCardDetailsDisplayWidget( QWidget *parent, const EdhrecCommanderApiResponseCardDetails &_toDisplay); +public slots: + void actRequestPageNavigation(); +signals: + void requestUrl(QString url); private: EdhrecCommanderApiResponseCardDetails toDisplay; diff --git a/cockatrice/src/client/tabs/api/edhrec/tab_edhrec_main.cpp b/cockatrice/src/client/tabs/api/edhrec/tab_edhrec_main.cpp index dce87ac30..19c2650c5 100644 --- a/cockatrice/src/client/tabs/api/edhrec/tab_edhrec_main.cpp +++ b/cockatrice/src/client/tabs/api/edhrec/tab_edhrec_main.cpp @@ -154,6 +154,13 @@ void TabEdhRecMain::setCard(CardInfoPtr _cardToQuery, bool isCommander) networkManager->get(request); } +void TabEdhRecMain::actNavigatePage(QString url) +{ + QNetworkRequest request{QUrl("https://json.edhrec.com/pages" + url + ".json")}; + + networkManager->get(request); +} + void TabEdhRecMain::getTopCommanders() { QNetworkRequest request{QUrl("https://json.edhrec.com/pages/commanders/year.json")}; @@ -197,6 +204,8 @@ void TabEdhRecMain::processApiJson(QNetworkReply *reply) processCommanderResponse(jsonObj); } else if (responseUrl.startsWith("https://json.edhrec.com/pages/cards/")) { processCommanderResponse(jsonObj); + } else if (responseUrl.startsWith("https://json.edhrec.com/pages/tags/")) { + processCommanderResponse(jsonObj); } else if (responseUrl.startsWith("https://json.edhrec.com/pages/tags.json")) { processTopTagsResponse(jsonObj); } else { diff --git a/cockatrice/src/client/tabs/api/edhrec/tab_edhrec_main.h b/cockatrice/src/client/tabs/api/edhrec/tab_edhrec_main.h index 93b7a0bb2..3cc332b63 100644 --- a/cockatrice/src/client/tabs/api/edhrec/tab_edhrec_main.h +++ b/cockatrice/src/client/tabs/api/edhrec/tab_edhrec_main.h @@ -33,6 +33,7 @@ public slots: void processTopCommandersResponse(QJsonObject reply); void prettyPrintJson(const QJsonValue &value, int indentLevel); void setCard(CardInfoPtr _cardToQuery, bool isCommander = false); + void actNavigatePage(QString url); void getTopCommanders(); void getTopTags(); diff --git a/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.cpp b/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.cpp index 4d7c10e14..0a33594f4 100644 --- a/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.cpp +++ b/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.cpp @@ -283,6 +283,8 @@ void CardInfoPictureWidget::mousePressEvent(QMouseEvent *event) if (event->button() == Qt::RightButton) { createRightClickMenu()->popup(QCursor::pos()); } + + emit cardClicked(); } QMenu *CardInfoPictureWidget::createRightClickMenu() diff --git a/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.h b/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.h index 89298de94..4843bbf21 100644 --- a/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.h +++ b/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.h @@ -34,6 +34,7 @@ signals: void hoveredOnCard(CardInfoPtr hoveredCard); void cardScaleFactorChanged(int _scale); void cardChanged(CardInfoPtr card); + void cardClicked(); protected: void resizeEvent(QResizeEvent *event) override;