Allow navigating by clicking on cards.

This commit is contained in:
Lukas Brübach 2025-02-27 07:23:54 +01:00
parent 075c10b73f
commit c29bdb10b0
6 changed files with 40 additions and 0 deletions

View file

@ -1,6 +1,7 @@
#include "edhrec_commander_api_response_card_details_display_widget.h" #include "edhrec_commander_api_response_card_details_display_widget.h"
#include "../../../../../game/cards/card_database_manager.h" #include "../../../../../game/cards/card_database_manager.h"
#include "../tab_edhrec_main.h"
EdhrecCommanderApiResponseCardDetailsDisplayWidget::EdhrecCommanderApiResponseCardDetailsDisplayWidget( EdhrecCommanderApiResponseCardDetailsDisplayWidget::EdhrecCommanderApiResponseCardDetailsDisplayWidget(
QWidget *parent, QWidget *parent,
@ -41,4 +42,26 @@ EdhrecCommanderApiResponseCardDetailsDisplayWidget::EdhrecCommanderApiResponseCa
layout->addWidget(cardPictureWidget); layout->addWidget(cardPictureWidget);
layout->addWidget(label); layout->addWidget(label);
QWidget *currentParent = parentWidget();
TabEdhRecMain *parentTab = nullptr;
while (currentParent) {
if ((parentTab = qobject_cast<TabEdhRecMain *>(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);
} }

View file

@ -15,6 +15,10 @@ public:
explicit EdhrecCommanderApiResponseCardDetailsDisplayWidget( explicit EdhrecCommanderApiResponseCardDetailsDisplayWidget(
QWidget *parent, QWidget *parent,
const EdhrecCommanderApiResponseCardDetails &_toDisplay); const EdhrecCommanderApiResponseCardDetails &_toDisplay);
public slots:
void actRequestPageNavigation();
signals:
void requestUrl(QString url);
private: private:
EdhrecCommanderApiResponseCardDetails toDisplay; EdhrecCommanderApiResponseCardDetails toDisplay;

View file

@ -154,6 +154,13 @@ void TabEdhRecMain::setCard(CardInfoPtr _cardToQuery, bool isCommander)
networkManager->get(request); networkManager->get(request);
} }
void TabEdhRecMain::actNavigatePage(QString url)
{
QNetworkRequest request{QUrl("https://json.edhrec.com/pages" + url + ".json")};
networkManager->get(request);
}
void TabEdhRecMain::getTopCommanders() void TabEdhRecMain::getTopCommanders()
{ {
QNetworkRequest request{QUrl("https://json.edhrec.com/pages/commanders/year.json")}; QNetworkRequest request{QUrl("https://json.edhrec.com/pages/commanders/year.json")};
@ -197,6 +204,8 @@ void TabEdhRecMain::processApiJson(QNetworkReply *reply)
processCommanderResponse(jsonObj); processCommanderResponse(jsonObj);
} else if (responseUrl.startsWith("https://json.edhrec.com/pages/cards/")) { } else if (responseUrl.startsWith("https://json.edhrec.com/pages/cards/")) {
processCommanderResponse(jsonObj); 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")) { } else if (responseUrl.startsWith("https://json.edhrec.com/pages/tags.json")) {
processTopTagsResponse(jsonObj); processTopTagsResponse(jsonObj);
} else { } else {

View file

@ -33,6 +33,7 @@ public slots:
void processTopCommandersResponse(QJsonObject reply); void processTopCommandersResponse(QJsonObject reply);
void prettyPrintJson(const QJsonValue &value, int indentLevel); void prettyPrintJson(const QJsonValue &value, int indentLevel);
void setCard(CardInfoPtr _cardToQuery, bool isCommander = false); void setCard(CardInfoPtr _cardToQuery, bool isCommander = false);
void actNavigatePage(QString url);
void getTopCommanders(); void getTopCommanders();
void getTopTags(); void getTopTags();

View file

@ -283,6 +283,8 @@ void CardInfoPictureWidget::mousePressEvent(QMouseEvent *event)
if (event->button() == Qt::RightButton) { if (event->button() == Qt::RightButton) {
createRightClickMenu()->popup(QCursor::pos()); createRightClickMenu()->popup(QCursor::pos());
} }
emit cardClicked();
} }
QMenu *CardInfoPictureWidget::createRightClickMenu() QMenu *CardInfoPictureWidget::createRightClickMenu()

View file

@ -34,6 +34,7 @@ signals:
void hoveredOnCard(CardInfoPtr hoveredCard); void hoveredOnCard(CardInfoPtr hoveredCard);
void cardScaleFactorChanged(int _scale); void cardScaleFactorChanged(int _scale);
void cardChanged(CardInfoPtr card); void cardChanged(CardInfoPtr card);
void cardClicked();
protected: protected:
void resizeEvent(QResizeEvent *event) override; void resizeEvent(QResizeEvent *event) override;