From 653362567bf893019b286604f56e81df68a968cf Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Fri, 18 Apr 2025 05:28:04 +0200 Subject: [PATCH] Refactor Tab EDHRec into folders, add navigation for budget and GC, add card prices (#5845) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Refactor things into more sensible folders. * Add navigation widget for budget and game changers. * Lint. * Add a card price display widget. * Qt version check. * Lint some thangs. --------- Co-authored-by: Lukas BrĂ¼bach --- cockatrice/CMakeLists.txt | 20 +- .../edhrec_api_response_archidekt_links.cpp} | 8 +- .../edhrec_api_response_archidekt_links.h} | 4 +- .../edhrec_average_deck_api_response.h | 6 +- .../edhrec_api_response_card_prices.cpp} | 22 +-- .../edhrec_api_response_card_prices.h} | 0 .../edhrec_api_response_card_container.cpp} | 8 +- .../edhrec_api_response_card_container.h} | 10 +- .../edhrec_api_response_card_details.cpp} | 8 +- .../edhrec_api_response_card_details.h} | 4 +- .../edhrec_api_response_card_list.cpp} | 12 +- .../edhrec_api_response_card_list.h} | 8 +- ...mmander_api_response_commander_details.cpp | 0 ...commander_api_response_commander_details.h | 2 +- .../commander/edhrec_commander_api_response.h | 6 +- .../top_cards/edhrec_top_cards_api_response.h | 6 +- .../edhrec_top_commanders_api_response.h | 6 +- .../top_tags/edhrec_top_tags_api_response.h | 6 +- ...pi_response_card_prices_display_widget.cpp | 66 +++++++ ..._api_response_card_prices_display_widget.h | 42 +++++ ..._response_card_details_display_widget.cpp} | 12 +- ...pi_response_card_details_display_widget.h} | 10 +- ..._api_response_card_list_display_widget.cpp | 33 ++++ ...c_api_response_card_list_display_widget.h} | 7 +- ...ponse_commander_details_display_widget.cpp | 43 +++++ ...sponse_commander_details_display_widget.h} | 25 ++- ..._api_response_card_list_display_widget.cpp | 34 ---- ...ponse_commander_details_display_widget.cpp | 75 -------- ..._commander_api_response_display_widget.cpp | 15 +- ...ec_commander_api_response_display_widget.h | 4 +- ...mmander_api_response_navigation_widget.cpp | 174 ++++++++++++++++++ ...commander_api_response_navigation_widget.h | 54 ++++++ ..._top_cards_api_response_display_widget.cpp | 6 +- ...commanders_api_response_display_widget.cpp | 6 +- ...c_top_tags_api_response_display_widget.cpp | 6 +- .../src/client/tabs/api/edhrec/tab_edhrec.cpp | 2 +- .../tabs/api/edhrec/tab_edhrec_main.cpp | 8 +- .../client/tabs/api/edhrec/tab_edhrec_main.h | 3 +- 38 files changed, 529 insertions(+), 232 deletions(-) rename cockatrice/src/client/tabs/api/edhrec/api_response/{commander/edhrec_commander_api_response_archidekt_links.cpp => archidekt_links/edhrec_api_response_archidekt_links.cpp} (76%) rename cockatrice/src/client/tabs/api/edhrec/api_response/{commander/edhrec_commander_api_response_archidekt_links.h => archidekt_links/edhrec_api_response_archidekt_links.h} (83%) rename cockatrice/src/client/tabs/api/edhrec/api_response/{commander/edhrec_commander_api_response_card_prices.cpp => card_prices/edhrec_api_response_card_prices.cpp} (57%) rename cockatrice/src/client/tabs/api/edhrec/api_response/{commander/edhrec_commander_api_response_card_prices.h => card_prices/edhrec_api_response_card_prices.h} (100%) rename cockatrice/src/client/tabs/api/edhrec/api_response/{commander/edhrec_commander_api_response_card_container.cpp => cards/edhrec_api_response_card_container.cpp} (83%) rename cockatrice/src/client/tabs/api/edhrec/api_response/{commander/edhrec_commander_api_response_card_container.h => cards/edhrec_api_response_card_container.h} (79%) rename cockatrice/src/client/tabs/api/edhrec/api_response/{commander/edhrec_commander_api_response_card_details.cpp => cards/edhrec_api_response_card_details.cpp} (78%) rename cockatrice/src/client/tabs/api/edhrec/api_response/{commander/edhrec_commander_api_response_card_details.h => cards/edhrec_api_response_card_details.h} (84%) rename cockatrice/src/client/tabs/api/edhrec/api_response/{commander/edhrec_commander_api_response_card_list.cpp => cards/edhrec_api_response_card_list.cpp} (59%) rename cockatrice/src/client/tabs/api/edhrec/api_response/{commander/edhrec_commander_api_response_card_list.h => cards/edhrec_api_response_card_list.h} (65%) rename cockatrice/src/client/tabs/api/edhrec/api_response/{commander => cards}/edhrec_commander_api_response_commander_details.cpp (100%) rename cockatrice/src/client/tabs/api/edhrec/api_response/{commander => cards}/edhrec_commander_api_response_commander_details.h (98%) create mode 100644 cockatrice/src/client/tabs/api/edhrec/display/card_prices/edhrec_api_response_card_prices_display_widget.cpp create mode 100644 cockatrice/src/client/tabs/api/edhrec/display/card_prices/edhrec_api_response_card_prices_display_widget.h rename cockatrice/src/client/tabs/api/edhrec/display/{commander/edhrec_commander_api_response_card_details_display_widget.cpp => cards/edhrec_api_response_card_details_display_widget.cpp} (78%) rename cockatrice/src/client/tabs/api/edhrec/display/{commander/edhrec_commander_api_response_card_details_display_widget.h => cards/edhrec_api_response_card_details_display_widget.h} (60%) create mode 100644 cockatrice/src/client/tabs/api/edhrec/display/cards/edhrec_api_response_card_list_display_widget.cpp rename cockatrice/src/client/tabs/api/edhrec/display/{commander/edhrec_commander_api_response_card_list_display_widget.h => cards/edhrec_api_response_card_list_display_widget.h} (66%) create mode 100644 cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_api_response_commander_details_display_widget.cpp rename cockatrice/src/client/tabs/api/edhrec/display/commander/{edhrec_commander_api_response_commander_details_display_widget.h => edhrec_api_response_commander_details_display_widget.h} (64%) delete mode 100644 cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_card_list_display_widget.cpp delete mode 100644 cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_commander_details_display_widget.cpp create mode 100644 cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_navigation_widget.cpp create mode 100644 cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_navigation_widget.h diff --git a/cockatrice/CMakeLists.txt b/cockatrice/CMakeLists.txt index b12b1a27a..cbd0ed1d7 100644 --- a/cockatrice/CMakeLists.txt +++ b/cockatrice/CMakeLists.txt @@ -21,19 +21,21 @@ set(cockatrice_SOURCES src/client/tabs/api/edhrec/tab_edhrec.cpp src/client/tabs/api/edhrec/tab_edhrec_main.cpp src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_display_widget.cpp - src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_card_details_display_widget.cpp - src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_card_list_display_widget.cpp - src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_commander_details_display_widget.cpp + src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_navigation_widget.cpp + src/client/tabs/api/edhrec/display/card_prices/edhrec_api_response_card_prices_display_widget.cpp + src/client/tabs/api/edhrec/display/cards/edhrec_api_response_card_details_display_widget.cpp + src/client/tabs/api/edhrec/display/cards/edhrec_api_response_card_list_display_widget.cpp + src/client/tabs/api/edhrec/display/commander/edhrec_api_response_commander_details_display_widget.cpp src/client/tabs/api/edhrec/display/top_cards/edhrec_top_cards_api_response_display_widget.cpp src/client/tabs/api/edhrec/display/top_commander/edhrec_top_commanders_api_response_display_widget.cpp src/client/tabs/api/edhrec/display/top_tags/edhrec_top_tags_api_response_display_widget.cpp - src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_archidekt_links.cpp + src/client/tabs/api/edhrec/api_response/archidekt_links/edhrec_api_response_archidekt_links.cpp src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_average_deck_statistics.cpp - src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_details.cpp - src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_list.cpp - src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_container.cpp - src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_prices.cpp - src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_commander_details.cpp + src/client/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_details.cpp + src/client/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_list.cpp + src/client/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_container.cpp + src/client/tabs/api/edhrec/api_response/card_prices/edhrec_api_response_card_prices.cpp + src/client/tabs/api/edhrec/api_response/cards/edhrec_commander_api_response_commander_details.cpp src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response.cpp src/client/tabs/api/edhrec/api_response/average_deck/edhrec_average_deck_api_response.cpp src/client/tabs/api/edhrec/api_response/average_deck/edhrec_deck_api_response.cpp diff --git a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_archidekt_links.cpp b/cockatrice/src/client/tabs/api/edhrec/api_response/archidekt_links/edhrec_api_response_archidekt_links.cpp similarity index 76% rename from cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_archidekt_links.cpp rename to cockatrice/src/client/tabs/api/edhrec/api_response/archidekt_links/edhrec_api_response_archidekt_links.cpp index aac540f90..f071949f2 100644 --- a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_archidekt_links.cpp +++ b/cockatrice/src/client/tabs/api/edhrec/api_response/archidekt_links/edhrec_api_response_archidekt_links.cpp @@ -1,11 +1,11 @@ -#include "edhrec_commander_api_response_archidekt_links.h" +#include "edhrec_api_response_archidekt_links.h" #include #include #include #include -void EdhrecCommanderApiResponseArchidektLink::fromJson(const QJsonObject &json) +void EdhrecApiResponseArchidektLink::fromJson(const QJsonObject &json) { c = json.value("c").toString(); f = json.value("f").toInt(0); @@ -13,7 +13,7 @@ void EdhrecCommanderApiResponseArchidektLink::fromJson(const QJsonObject &json) u = json.value("u").toString(); } -void EdhrecCommanderApiResponseArchidektLink::debugPrint() const +void EdhrecApiResponseArchidektLink::debugPrint() const { qDebug() << " C:" << c; qDebug() << " F:" << f; @@ -27,7 +27,7 @@ void EdhrecCommanderApiResponseArchidektLinks::fromJson(const QJsonArray &json) for (const QJsonValue &value : json) { if (value.isObject()) { QJsonObject entryJson = value.toObject(); - EdhrecCommanderApiResponseArchidektLink entry; + EdhrecApiResponseArchidektLink entry; entry.fromJson(entryJson); entries.append(entry); } diff --git a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_archidekt_links.h b/cockatrice/src/client/tabs/api/edhrec/api_response/archidekt_links/edhrec_api_response_archidekt_links.h similarity index 83% rename from cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_archidekt_links.h rename to cockatrice/src/client/tabs/api/edhrec/api_response/archidekt_links/edhrec_api_response_archidekt_links.h index 537dbb1fc..b47101e78 100644 --- a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_archidekt_links.h +++ b/cockatrice/src/client/tabs/api/edhrec/api_response/archidekt_links/edhrec_api_response_archidekt_links.h @@ -7,7 +7,7 @@ #include // Represents a single Archidekt entry -class EdhrecCommanderApiResponseArchidektLink +class EdhrecApiResponseArchidektLink { public: QString c; @@ -23,7 +23,7 @@ public: class EdhrecCommanderApiResponseArchidektLinks { public: - QVector entries; + QVector entries; void fromJson(const QJsonArray &json); void debugPrint() const; diff --git a/cockatrice/src/client/tabs/api/edhrec/api_response/average_deck/edhrec_average_deck_api_response.h b/cockatrice/src/client/tabs/api/edhrec/api_response/average_deck/edhrec_average_deck_api_response.h index fcf95ed3e..2d330e3e8 100644 --- a/cockatrice/src/client/tabs/api/edhrec/api_response/average_deck/edhrec_average_deck_api_response.h +++ b/cockatrice/src/client/tabs/api/edhrec/api_response/average_deck/edhrec_average_deck_api_response.h @@ -1,9 +1,9 @@ #ifndef EDHREC_AVERAGE_DECK_API_RESPONSE_H #define EDHREC_AVERAGE_DECK_API_RESPONSE_H -#include "../commander/edhrec_commander_api_response_archidekt_links.h" +#include "../archidekt_links/edhrec_api_response_archidekt_links.h" +#include "../cards/edhrec_api_response_card_container.h" #include "../commander/edhrec_commander_api_response_average_deck_statistics.h" -#include "../commander/edhrec_commander_api_response_card_container.h" #include "edhrec_deck_api_response.h" #include @@ -20,7 +20,7 @@ public: QString header; QJsonObject panels; QString description; - EdhrecCommanderApiResponseCardContainer container; + EdhrecApiResponseCardContainer container; EdhrecDeckApiResponse deck; void fromJson(const QJsonObject &json); diff --git a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_prices.cpp b/cockatrice/src/client/tabs/api/edhrec/api_response/card_prices/edhrec_api_response_card_prices.cpp similarity index 57% rename from cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_prices.cpp rename to cockatrice/src/client/tabs/api/edhrec/api_response/card_prices/edhrec_api_response_card_prices.cpp index 6454e5500..1231d147a 100644 --- a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_prices.cpp +++ b/cockatrice/src/client/tabs/api/edhrec/api_response/card_prices/edhrec_api_response_card_prices.cpp @@ -1,4 +1,4 @@ -#include "edhrec_commander_api_response_card_prices.h" +#include "edhrec_api_response_card_prices.h" #include @@ -18,14 +18,14 @@ void CardPrices::fromJson(const QJsonObject &json) void CardPrices::debugPrint() const { - qDebug() << "Card Prices:"; - qDebug() << "Cardhoarder:" << cardhoarder; - qDebug() << "Cardkingdom:" << cardkingdom; - qDebug() << "Cardmarket:" << cardmarket; - qDebug() << "Face2Face:" << face2face; - qDebug() << "Manapool:" << manapool; - qDebug() << "Mtgstocks:" << mtgstocks; - qDebug() << "SCG:" << scg; - qDebug() << "TCGL:" << tcgl; - qDebug() << "Tcgplayer:" << tcgplayer; + qInfo() << "Card Prices:"; + qInfo() << "Cardhoarder:" << cardhoarder; + qInfo() << "Cardkingdom:" << cardkingdom; + qInfo() << "Cardmarket:" << cardmarket; + qInfo() << "Face2Face:" << face2face; + qInfo() << "Manapool:" << manapool; + qInfo() << "Mtgstocks:" << mtgstocks; + qInfo() << "SCG:" << scg; + qInfo() << "TCGL:" << tcgl; + qInfo() << "Tcgplayer:" << tcgplayer; } diff --git a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_prices.h b/cockatrice/src/client/tabs/api/edhrec/api_response/card_prices/edhrec_api_response_card_prices.h similarity index 100% rename from cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_prices.h rename to cockatrice/src/client/tabs/api/edhrec/api_response/card_prices/edhrec_api_response_card_prices.h diff --git a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_container.cpp b/cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_container.cpp similarity index 83% rename from cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_container.cpp rename to cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_container.cpp index f8ffab787..3fef8be34 100644 --- a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_container.cpp +++ b/cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_container.cpp @@ -1,10 +1,10 @@ -#include "edhrec_commander_api_response_card_container.h" +#include "edhrec_api_response_card_container.h" #include #include #include -void EdhrecCommanderApiResponseCardContainer::fromJson(const QJsonObject &json) +void EdhrecApiResponseCardContainer::fromJson(const QJsonObject &json) { // Parse breadcrumb QJsonArray breadcrumbArray = json.value("breadcrumb").toArray(); @@ -20,7 +20,7 @@ void EdhrecCommanderApiResponseCardContainer::fromJson(const QJsonObject &json) for (const QJsonValue &cardlistValue : cardlistsArray) { QJsonObject cardlistObj = cardlistValue.toObject(); QJsonArray cardviewsArray = cardlistObj.value("cardviews").toArray(); - EdhrecCommanderApiResponseCardList cardView; + EdhrecApiResponseCardList cardView; cardView.fromJson(cardlistValue.toObject()); cardlists.push_back(cardView); } @@ -29,7 +29,7 @@ void EdhrecCommanderApiResponseCardContainer::fromJson(const QJsonObject &json) title = json.value("title").toString(); } -void EdhrecCommanderApiResponseCardContainer::debugPrint() const +void EdhrecApiResponseCardContainer::debugPrint() const { qDebug() << "Breadcrumb:"; for (const auto &breadcrumbEntry : breadcrumb) { diff --git a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_container.h b/cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_container.h similarity index 79% rename from cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_container.h rename to cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_container.h index d2ea05874..94650785f 100644 --- a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_container.h +++ b/cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_container.h @@ -1,7 +1,7 @@ #ifndef CONTAINER_ENTRY_H #define CONTAINER_ENTRY_H -#include "edhrec_commander_api_response_card_list.h" +#include "edhrec_api_response_card_list.h" #include "edhrec_commander_api_response_commander_details.h" #include @@ -10,11 +10,11 @@ #include #include -class EdhrecCommanderApiResponseCardContainer +class EdhrecApiResponseCardContainer { public: // Constructor - EdhrecCommanderApiResponseCardContainer() = default; + EdhrecApiResponseCardContainer() = default; // Parse deck-related data from JSON void fromJson(const QJsonObject &json); @@ -35,7 +35,7 @@ public: { return card; } - const QVector &getCardlists() const + const QVector &getCardlists() const { return cardlists; } @@ -52,7 +52,7 @@ private: QString description; QVector breadcrumb; EdhrecCommanderApiResponseCommanderDetails card; - QVector cardlists; + QVector cardlists; QString keywords; QString title; }; diff --git a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_details.cpp b/cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_details.cpp similarity index 78% rename from cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_details.cpp rename to cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_details.cpp index 2f2791de1..a4a746c61 100644 --- a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_details.cpp +++ b/cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_details.cpp @@ -1,13 +1,13 @@ -#include "edhrec_commander_api_response_card_details.h" +#include "edhrec_api_response_card_details.h" #include -EdhrecCommanderApiResponseCardDetails::EdhrecCommanderApiResponseCardDetails() +EdhrecApiResponseCardDetails::EdhrecApiResponseCardDetails() : synergy(0.0), inclusion(0), numDecks(0), potentialDecks(0) { } -void EdhrecCommanderApiResponseCardDetails::fromJson(const QJsonObject &json) +void EdhrecApiResponseCardDetails::fromJson(const QJsonObject &json) { // Parse the fields from the JSON object name = json.value("name").toString(); @@ -21,7 +21,7 @@ void EdhrecCommanderApiResponseCardDetails::fromJson(const QJsonObject &json) potentialDecks = json.value("potential_decks").toInt(0); } -void EdhrecCommanderApiResponseCardDetails::debugPrint() const +void EdhrecApiResponseCardDetails::debugPrint() const { // Print out all the fields for debugging qDebug() << "Name:" << name; diff --git a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_details.h b/cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_details.h similarity index 84% rename from cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_details.h rename to cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_details.h index 82d85824b..9f75aac72 100644 --- a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_details.h +++ b/cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_details.h @@ -4,7 +4,7 @@ #include #include -class EdhrecCommanderApiResponseCardDetails +class EdhrecApiResponseCardDetails { public: QString name; @@ -17,7 +17,7 @@ public: int numDecks; int potentialDecks; - EdhrecCommanderApiResponseCardDetails(); + EdhrecApiResponseCardDetails(); // Method to populate the object from a JSON object void fromJson(const QJsonObject &json); diff --git a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_list.cpp b/cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_list.cpp similarity index 59% rename from cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_list.cpp rename to cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_list.cpp index 5d3eebedd..72d6fe2cc 100644 --- a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_list.cpp +++ b/cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_list.cpp @@ -1,12 +1,12 @@ -#include "edhrec_commander_api_response_card_list.h" +#include "edhrec_api_response_card_list.h" #include -EdhrecCommanderApiResponseCardList::EdhrecCommanderApiResponseCardList() +EdhrecApiResponseCardList::EdhrecApiResponseCardList() { } -void EdhrecCommanderApiResponseCardList::fromJson(const QJsonObject &json) +void EdhrecApiResponseCardList::fromJson(const QJsonObject &json) { // Parse the header from the JSON object header = json.value("header").toString(); @@ -15,19 +15,19 @@ void EdhrecCommanderApiResponseCardList::fromJson(const QJsonObject &json) QJsonArray cardviewsArray = json.value("cardviews").toArray(); for (const QJsonValue &value : cardviewsArray) { QJsonObject cardviewObj = value.toObject(); - EdhrecCommanderApiResponseCardDetails cardView; + EdhrecApiResponseCardDetails cardView; cardView.fromJson(cardviewObj); cardViews.append(cardView); } } -void EdhrecCommanderApiResponseCardList::debugPrint() const +void EdhrecApiResponseCardList::debugPrint() const { // Print out the header qDebug() << "Header:" << header; // Print out all the CardView objects - for (const EdhrecCommanderApiResponseCardDetails &cardView : cardViews) { + for (const EdhrecApiResponseCardDetails &cardView : cardViews) { cardView.debugPrint(); } } diff --git a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_list.h b/cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_list.h similarity index 65% rename from cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_list.h rename to cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_list.h index e0ddc3466..9fcacfffe 100644 --- a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_card_list.h +++ b/cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_list.h @@ -1,21 +1,21 @@ #ifndef CARD_LIST_H #define CARD_LIST_H -#include "edhrec_commander_api_response_card_details.h" +#include "edhrec_api_response_card_details.h" #include #include #include #include -class EdhrecCommanderApiResponseCardList +class EdhrecApiResponseCardList { public: QString header; - QList cardViews; + QList cardViews; // Default constructor - EdhrecCommanderApiResponseCardList(); + EdhrecApiResponseCardList(); // Method to populate the object from a JSON object void fromJson(const QJsonObject &json); diff --git a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_commander_details.cpp b/cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_commander_api_response_commander_details.cpp similarity index 100% rename from cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_commander_details.cpp rename to cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_commander_api_response_commander_details.cpp diff --git a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_commander_details.h b/cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_commander_api_response_commander_details.h similarity index 98% rename from cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_commander_details.h rename to cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_commander_api_response_commander_details.h index 78ccfc23a..7b754c9b2 100644 --- a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_commander_details.h +++ b/cockatrice/src/client/tabs/api/edhrec/api_response/cards/edhrec_commander_api_response_commander_details.h @@ -1,7 +1,7 @@ #ifndef EDHREC_COMMANDER_API_RESPONSE_COMMANDER_DETAILS_H #define EDHREC_COMMANDER_API_RESPONSE_COMMANDER_DETAILS_H -#include "edhrec_commander_api_response_card_prices.h" +#include "../card_prices/edhrec_api_response_card_prices.h" #include #include diff --git a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response.h b/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response.h index 91cf3afbc..f1141a113 100644 --- a/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response.h +++ b/cockatrice/src/client/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response.h @@ -1,9 +1,9 @@ #ifndef DECKDATA_H #define DECKDATA_H -#include "edhrec_commander_api_response_archidekt_links.h" +#include "../archidekt_links//edhrec_api_response_archidekt_links.h" +#include "../cards/edhrec_api_response_card_container.h" #include "edhrec_commander_api_response_average_deck_statistics.h" -#include "edhrec_commander_api_response_card_container.h" #include #include @@ -19,7 +19,7 @@ public: QString header; QJsonObject panels; QString description; - EdhrecCommanderApiResponseCardContainer container; + EdhrecApiResponseCardContainer container; void fromJson(const QJsonObject &json); void debugPrint() const; diff --git a/cockatrice/src/client/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.h b/cockatrice/src/client/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.h index 0a9d14425..569c31894 100644 --- a/cockatrice/src/client/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.h +++ b/cockatrice/src/client/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.h @@ -1,19 +1,17 @@ #ifndef EDHREC_TOP_CARDS_API_RESPONSE_H #define EDHREC_TOP_CARDS_API_RESPONSE_H -#include "../commander/edhrec_commander_api_response_card_container.h" +#include "../cards/edhrec_api_response_card_container.h" #include -#include #include -// Represents the main structure of the JSON class EdhrecTopCardsApiResponse { public: QString header; QString description; - EdhrecCommanderApiResponseCardContainer container; + EdhrecApiResponseCardContainer container; void fromJson(const QJsonObject &json); void debugPrint() const; diff --git a/cockatrice/src/client/tabs/api/edhrec/api_response/top_commanders/edhrec_top_commanders_api_response.h b/cockatrice/src/client/tabs/api/edhrec/api_response/top_commanders/edhrec_top_commanders_api_response.h index 9aa2b80df..526611eb7 100644 --- a/cockatrice/src/client/tabs/api/edhrec/api_response/top_commanders/edhrec_top_commanders_api_response.h +++ b/cockatrice/src/client/tabs/api/edhrec/api_response/top_commanders/edhrec_top_commanders_api_response.h @@ -1,19 +1,17 @@ #ifndef EDHREC_TOP_COMMANDERS_API_RESPONSE_H #define EDHREC_TOP_COMMANDERS_API_RESPONSE_H -#include "../commander/edhrec_commander_api_response_card_container.h" +#include "../cards/edhrec_api_response_card_container.h" #include -#include #include -// Represents the main structure of the JSON class EdhrecTopCommandersApiResponse { public: QString header; QString description; - EdhrecCommanderApiResponseCardContainer container; + EdhrecApiResponseCardContainer container; void fromJson(const QJsonObject &json); void debugPrint() const; diff --git a/cockatrice/src/client/tabs/api/edhrec/api_response/top_tags/edhrec_top_tags_api_response.h b/cockatrice/src/client/tabs/api/edhrec/api_response/top_tags/edhrec_top_tags_api_response.h index 32932149c..f31d03a8e 100644 --- a/cockatrice/src/client/tabs/api/edhrec/api_response/top_tags/edhrec_top_tags_api_response.h +++ b/cockatrice/src/client/tabs/api/edhrec/api_response/top_tags/edhrec_top_tags_api_response.h @@ -1,19 +1,17 @@ #ifndef EDHREC_TOP_TAGS_API_RESPONSE_H #define EDHREC_TOP_TAGS_API_RESPONSE_H -#include "../commander/edhrec_commander_api_response_card_container.h" +#include "../cards/edhrec_api_response_card_container.h" #include -#include #include -// Represents the main structure of the JSON class EdhrecTopTagsApiResponse { public: QString header; QString description; - EdhrecCommanderApiResponseCardContainer container; + EdhrecApiResponseCardContainer container; void fromJson(const QJsonObject &json); void debugPrint() const; diff --git a/cockatrice/src/client/tabs/api/edhrec/display/card_prices/edhrec_api_response_card_prices_display_widget.cpp b/cockatrice/src/client/tabs/api/edhrec/display/card_prices/edhrec_api_response_card_prices_display_widget.cpp new file mode 100644 index 000000000..75902daad --- /dev/null +++ b/cockatrice/src/client/tabs/api/edhrec/display/card_prices/edhrec_api_response_card_prices_display_widget.cpp @@ -0,0 +1,66 @@ +#include "edhrec_api_response_card_prices_display_widget.h" + +EdhrecApiResponseCardPricesDisplayWidget::EdhrecApiResponseCardPricesDisplayWidget(QWidget *parent, + const CardPrices &_cardPrices) + : QWidget(parent), cardPrices(_cardPrices) +{ + layout = new QGridLayout(this); + setLayout(layout); + + cardHoarderLabel = new QLabel(this); + cardHoarderPrice = new QLabel(QString::number(cardPrices.getCardhoarder().value("price").toDouble()), this); + cardKingdomLabel = new QLabel(this); + cardKingdomPrice = new QLabel(QString::number(cardPrices.getCardkingdom().value("price").toDouble()), this); + cardMarketLabel = new QLabel(this); + cardMarketPrice = new QLabel(QString::number(cardPrices.getCardmarket().value("price").toDouble()), this); + face2faceLabel = new QLabel(this); + face2facePrice = new QLabel(QString::number(cardPrices.getFace2face().value("price").toDouble()), this); + manaPoolLabel = new QLabel(this); + manaPoolPrice = new QLabel(QString::number(cardPrices.getManapool().value("price").toDouble()), this); + mtgStocksLabel = new QLabel(this); + mtgStocksPrice = new QLabel(QString::number(cardPrices.getMtgstocks().value("price").toDouble()), this); + scgLabel = new QLabel(this); + scgPrice = new QLabel(QString::number(cardPrices.getScg().value("price").toDouble()), this); + tcglLabel = new QLabel(this); + tcglPrice = new QLabel(QString::number(cardPrices.getTcgl().value("price").toDouble()), this); + tcgplayerLabel = new QLabel(this); + tcgplayerPrice = new QLabel(QString::number(cardPrices.getTcgplayer().value("price").toDouble()), this); + + layout->addWidget(cardHoarderLabel, 0, 0); + layout->addWidget(cardHoarderPrice, 0, 1); + layout->addWidget(cardKingdomLabel, 0, 2); + layout->addWidget(cardKingdomPrice, 0, 3); + + layout->addWidget(cardMarketLabel, 1, 0); + layout->addWidget(cardMarketPrice, 1, 1); + layout->addWidget(face2faceLabel, 1, 2); + layout->addWidget(face2facePrice, 1, 3); + + layout->addWidget(manaPoolLabel, 2, 0); + layout->addWidget(manaPoolPrice, 2, 1); + layout->addWidget(mtgStocksLabel, 2, 2); + layout->addWidget(mtgStocksPrice, 2, 3); + + layout->addWidget(scgLabel, 3, 0); + layout->addWidget(scgPrice, 3, 1); + layout->addWidget(tcglLabel, 3, 2); + layout->addWidget(tcglPrice, 3, 3); + + layout->addWidget(tcgplayerLabel, 4, 0); + layout->addWidget(tcgplayerPrice, 4, 1); + + retranslateUi(); +} + +void EdhrecApiResponseCardPricesDisplayWidget::retranslateUi() +{ + cardHoarderLabel->setText(tr("Card Hoarder")); + cardKingdomLabel->setText(tr("Card Kingdom")); + cardMarketLabel->setText(tr("Card Market")); + face2faceLabel->setText(tr("Face 2-Face")); + manaPoolLabel->setText(tr("Mana Pool")); + mtgStocksLabel->setText(tr("MTG Stocks")); + scgLabel->setText(tr("Scg")); + tcglLabel->setText(tr("Tcgl")); + tcgplayerLabel->setText(tr("Tcgplayer")); +} diff --git a/cockatrice/src/client/tabs/api/edhrec/display/card_prices/edhrec_api_response_card_prices_display_widget.h b/cockatrice/src/client/tabs/api/edhrec/display/card_prices/edhrec_api_response_card_prices_display_widget.h new file mode 100644 index 000000000..8dae375fe --- /dev/null +++ b/cockatrice/src/client/tabs/api/edhrec/display/card_prices/edhrec_api_response_card_prices_display_widget.h @@ -0,0 +1,42 @@ +#ifndef EDHREC_API_RESPONSE_CARD_PRICES_DISPLAY_WIDGET_H +#define EDHREC_API_RESPONSE_CARD_PRICES_DISPLAY_WIDGET_H + +#include "../../api_response/card_prices/edhrec_api_response_card_prices.h" + +#include +#include +#include + +class EdhrecApiResponseCardPricesDisplayWidget : public QWidget +{ + Q_OBJECT +public: + EdhrecApiResponseCardPricesDisplayWidget(QWidget *parent, const CardPrices &cardPrices); + +public slots: + void retranslateUi(); + +private: + CardPrices cardPrices; + QGridLayout *layout; + QLabel *cardHoarderLabel; + QLabel *cardHoarderPrice; + QLabel *cardKingdomLabel; + QLabel *cardKingdomPrice; + QLabel *cardMarketLabel; + QLabel *cardMarketPrice; + QLabel *face2faceLabel; + QLabel *face2facePrice; + QLabel *manaPoolLabel; + QLabel *manaPoolPrice; + QLabel *mtgStocksLabel; + QLabel *mtgStocksPrice; + QLabel *scgLabel; + QLabel *scgPrice; + QLabel *tcglLabel; + QLabel *tcglPrice; + QLabel *tcgplayerLabel; + QLabel *tcgplayerPrice; +}; + +#endif // EDHREC_API_RESPONSE_CARD_PRICES_DISPLAY_WIDGET_H diff --git a/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_card_details_display_widget.cpp b/cockatrice/src/client/tabs/api/edhrec/display/cards/edhrec_api_response_card_details_display_widget.cpp similarity index 78% rename from cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_card_details_display_widget.cpp rename to cockatrice/src/client/tabs/api/edhrec/display/cards/edhrec_api_response_card_details_display_widget.cpp index 9573cbcbd..f6e0cf4fa 100644 --- a/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_card_details_display_widget.cpp +++ b/cockatrice/src/client/tabs/api/edhrec/display/cards/edhrec_api_response_card_details_display_widget.cpp @@ -1,11 +1,11 @@ -#include "edhrec_commander_api_response_card_details_display_widget.h" +#include "edhrec_api_response_card_details_display_widget.h" #include "../../../../../../game/cards/card_database_manager.h" #include "../../tab_edhrec_main.h" -EdhrecCommanderApiResponseCardDetailsDisplayWidget::EdhrecCommanderApiResponseCardDetailsDisplayWidget( +EdhrecApiResponseCardDetailsDisplayWidget::EdhrecApiResponseCardDetailsDisplayWidget( QWidget *parent, - const EdhrecCommanderApiResponseCardDetails &_toDisplay) + const EdhrecApiResponseCardDetails &_toDisplay) : QWidget(parent), toDisplay(_toDisplay) { layout = new QVBoxLayout(this); @@ -55,13 +55,13 @@ EdhrecCommanderApiResponseCardDetailsDisplayWidget::EdhrecCommanderApiResponseCa if (parentTab) { connect(cardPictureWidget, &CardInfoPictureWidget::cardClicked, this, - &EdhrecCommanderApiResponseCardDetailsDisplayWidget::actRequestPageNavigation); - connect(this, &EdhrecCommanderApiResponseCardDetailsDisplayWidget::requestUrl, parentTab, + &EdhrecApiResponseCardDetailsDisplayWidget::actRequestPageNavigation); + connect(this, &EdhrecApiResponseCardDetailsDisplayWidget::requestUrl, parentTab, &TabEdhRecMain::actNavigatePage); } } -void EdhrecCommanderApiResponseCardDetailsDisplayWidget::actRequestPageNavigation() +void EdhrecApiResponseCardDetailsDisplayWidget::actRequestPageNavigation() { emit requestUrl(toDisplay.url); } diff --git a/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_card_details_display_widget.h b/cockatrice/src/client/tabs/api/edhrec/display/cards/edhrec_api_response_card_details_display_widget.h similarity index 60% rename from cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_card_details_display_widget.h rename to cockatrice/src/client/tabs/api/edhrec/display/cards/edhrec_api_response_card_details_display_widget.h index 313f73c55..7492659e9 100644 --- a/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_card_details_display_widget.h +++ b/cockatrice/src/client/tabs/api/edhrec/display/cards/edhrec_api_response_card_details_display_widget.h @@ -2,26 +2,24 @@ #define EDHREC_COMMANDER_API_RESPONSE_CARD_DETAILS_DISPLAY_WIDGET_H #include "../../../../../ui/widgets/cards/card_info_picture_widget.h" -#include "../../api_response/commander/edhrec_commander_api_response_card_details.h" +#include "../../api_response/cards/edhrec_api_response_card_details.h" #include #include #include -class EdhrecCommanderApiResponseCardDetailsDisplayWidget : public QWidget +class EdhrecApiResponseCardDetailsDisplayWidget : public QWidget { Q_OBJECT public: - explicit EdhrecCommanderApiResponseCardDetailsDisplayWidget( - QWidget *parent, - const EdhrecCommanderApiResponseCardDetails &_toDisplay); + explicit EdhrecApiResponseCardDetailsDisplayWidget(QWidget *parent, const EdhrecApiResponseCardDetails &_toDisplay); public slots: void actRequestPageNavigation(); signals: void requestUrl(QString url); private: - EdhrecCommanderApiResponseCardDetails toDisplay; + EdhrecApiResponseCardDetails toDisplay; QVBoxLayout *layout; CardInfoPictureWidget *cardPictureWidget; QLabel *label; diff --git a/cockatrice/src/client/tabs/api/edhrec/display/cards/edhrec_api_response_card_list_display_widget.cpp b/cockatrice/src/client/tabs/api/edhrec/display/cards/edhrec_api_response_card_list_display_widget.cpp new file mode 100644 index 000000000..068003fac --- /dev/null +++ b/cockatrice/src/client/tabs/api/edhrec/display/cards/edhrec_api_response_card_list_display_widget.cpp @@ -0,0 +1,33 @@ +#include "edhrec_api_response_card_list_display_widget.h" + +#include "../../../../../ui/widgets/general/display/banner_widget.h" +#include "edhrec_api_response_card_details_display_widget.h" + +#include + +EdhrecApiResponseCardListDisplayWidget::EdhrecApiResponseCardListDisplayWidget(QWidget *parent, + EdhrecApiResponseCardList toDisplay) + : QWidget(parent) +{ + layout = new QVBoxLayout(this); + setLayout(layout); + + header = new BannerWidget(this, toDisplay.header); + + flowWidget = new FlowWidget(this, Qt::Horizontal, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAlwaysOff); + header->setBuddy(flowWidget); + + foreach (EdhrecApiResponseCardDetails card_detail, toDisplay.cardViews) { + auto widget = new EdhrecApiResponseCardDetailsDisplayWidget(flowWidget, card_detail); + flowWidget->addWidget(widget); + } + + layout->addWidget(header); + layout->addWidget(flowWidget); +} + +void EdhrecApiResponseCardListDisplayWidget::resizeEvent(QResizeEvent *event) +{ + QWidget::resizeEvent(event); + qDebug() << event->size(); +} diff --git a/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_card_list_display_widget.h b/cockatrice/src/client/tabs/api/edhrec/display/cards/edhrec_api_response_card_list_display_widget.h similarity index 66% rename from cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_card_list_display_widget.h rename to cockatrice/src/client/tabs/api/edhrec/display/cards/edhrec_api_response_card_list_display_widget.h index 63428c2c1..291150cde 100644 --- a/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_card_list_display_widget.h +++ b/cockatrice/src/client/tabs/api/edhrec/display/cards/edhrec_api_response_card_list_display_widget.h @@ -3,18 +3,17 @@ #include "../../../../../ui/widgets/general/display/banner_widget.h" #include "../../../../../ui/widgets/general/layout_containers/flow_widget.h" -#include "../../api_response/commander/edhrec_commander_api_response_card_list.h" +#include "../../api_response/cards/edhrec_api_response_card_list.h" #include #include #include -class EdhrecCommanderApiResponseCardListDisplayWidget : public QWidget +class EdhrecApiResponseCardListDisplayWidget : public QWidget { Q_OBJECT public: - explicit EdhrecCommanderApiResponseCardListDisplayWidget(QWidget *parent, - EdhrecCommanderApiResponseCardList toDisplay); + explicit EdhrecApiResponseCardListDisplayWidget(QWidget *parent, EdhrecApiResponseCardList toDisplay); void resizeEvent(QResizeEvent *event) override; [[nodiscard]] QString getBannerText() const { diff --git a/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_api_response_commander_details_display_widget.cpp b/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_api_response_commander_details_display_widget.cpp new file mode 100644 index 000000000..e04325a35 --- /dev/null +++ b/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_api_response_commander_details_display_widget.cpp @@ -0,0 +1,43 @@ +#include "edhrec_api_response_commander_details_display_widget.h" + +#include "../../../../../../game/cards/card_database_manager.h" +#include "../../../../../ui/widgets/cards/card_info_picture_widget.h" +#include "../card_prices/edhrec_api_response_card_prices_display_widget.h" + +EdhrecCommanderResponseCommanderDetailsDisplayWidget::EdhrecCommanderResponseCommanderDetailsDisplayWidget( + QWidget *parent, + const EdhrecCommanderApiResponseCommanderDetails &_commanderDetails, + QString baseUrl) + : QWidget(parent), commanderDetails(_commanderDetails) +{ + layout = new QVBoxLayout(this); + setLayout(layout); + + commanderPicture = new CardInfoPictureWidget(this); + commanderPicture->setCard(CardDatabaseManager::getInstance()->getCard(commanderDetails.getName())); + + commanderDetails.debugPrint(); + + label = new QLabel(this); + label->setAlignment(Qt::AlignCenter); + salt = new QLabel(this); + salt->setAlignment(Qt::AlignCenter); + + cardPricesDisplayWidget = new EdhrecApiResponseCardPricesDisplayWidget(this, commanderDetails.getPrices()); + + navigationWidget = new EdhrecCommanderApiResponseNavigationWidget(this, commanderDetails, baseUrl); + + layout->addWidget(commanderPicture); + layout->addWidget(label); + layout->addWidget(salt); + layout->addWidget(cardPricesDisplayWidget); + layout->addWidget(navigationWidget); + + retranslateUi(); +} + +void EdhrecCommanderResponseCommanderDetailsDisplayWidget::retranslateUi() +{ + label->setText(commanderDetails.getLabel()); + salt->setText(tr("Salt: ") + QString::number(commanderDetails.getSalt())); +} diff --git a/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_commander_details_display_widget.h b/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_api_response_commander_details_display_widget.h similarity index 64% rename from cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_commander_details_display_widget.h rename to cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_api_response_commander_details_display_widget.h index b43ffdedb..ba6a895b1 100644 --- a/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_commander_details_display_widget.h +++ b/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_api_response_commander_details_display_widget.h @@ -2,36 +2,33 @@ #define EDHREC_COMMANDER_API_RESPONSE_COMMANDER_DETAILS_DISPLAY_WIDGET_H #include "../../../../../ui/widgets/cards/card_info_picture_widget.h" -#include "../../api_response/commander/edhrec_commander_api_response_commander_details.h" +#include "../../api_response/cards/edhrec_commander_api_response_commander_details.h" +#include "../card_prices/edhrec_api_response_card_prices_display_widget.h" +#include "edhrec_commander_api_response_navigation_widget.h" #include -#include #include #include +class EdhrecCommanderApiResponseNavigationWidget; class EdhrecCommanderResponseCommanderDetailsDisplayWidget : public QWidget { Q_OBJECT public: explicit EdhrecCommanderResponseCommanderDetailsDisplayWidget( QWidget *parent, - const EdhrecCommanderApiResponseCommanderDetails &_commanderDetails); + const EdhrecCommanderApiResponseCommanderDetails &_commanderDetails, + QString baseUrl); void retranslateUi(); -public slots: - void actRequestComboNavigation(); - void actRequestAverageDeckNavigation(); -signals: - void requestUrl(QString url); - private: - QLabel *label; - QLabel *salt; - QPushButton *comboPushButton; - QPushButton *averageDeckPushButton; + EdhrecCommanderApiResponseCommanderDetails commanderDetails; QVBoxLayout *layout; CardInfoPictureWidget *commanderPicture; - EdhrecCommanderApiResponseCommanderDetails commanderDetails; + QLabel *label; + QLabel *salt; + EdhrecApiResponseCardPricesDisplayWidget *cardPricesDisplayWidget; + EdhrecCommanderApiResponseNavigationWidget *navigationWidget; }; #endif // EDHREC_COMMANDER_API_RESPONSE_COMMANDER_DETAILS_DISPLAY_WIDGET_H diff --git a/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_card_list_display_widget.cpp b/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_card_list_display_widget.cpp deleted file mode 100644 index 7b1ae1488..000000000 --- a/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_card_list_display_widget.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include "edhrec_commander_api_response_card_list_display_widget.h" - -#include "../../../../../ui/widgets/general/display/banner_widget.h" -#include "edhrec_commander_api_response_card_details_display_widget.h" - -#include - -EdhrecCommanderApiResponseCardListDisplayWidget::EdhrecCommanderApiResponseCardListDisplayWidget( - QWidget *parent, - EdhrecCommanderApiResponseCardList toDisplay) - : QWidget(parent) -{ - layout = new QVBoxLayout(this); - setLayout(layout); - - header = new BannerWidget(this, toDisplay.header); - - flowWidget = new FlowWidget(this, Qt::Horizontal, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAlwaysOff); - header->setBuddy(flowWidget); - - foreach (EdhrecCommanderApiResponseCardDetails card_detail, toDisplay.cardViews) { - auto widget = new EdhrecCommanderApiResponseCardDetailsDisplayWidget(flowWidget, card_detail); - flowWidget->addWidget(widget); - } - - layout->addWidget(header); - layout->addWidget(flowWidget); -} - -void EdhrecCommanderApiResponseCardListDisplayWidget::resizeEvent(QResizeEvent *event) -{ - QWidget::resizeEvent(event); - qDebug() << event->size(); -} diff --git a/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_commander_details_display_widget.cpp b/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_commander_details_display_widget.cpp deleted file mode 100644 index 322c65aac..000000000 --- a/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_commander_details_display_widget.cpp +++ /dev/null @@ -1,75 +0,0 @@ -#include "edhrec_commander_api_response_commander_details_display_widget.h" - -#include "../../../../../../game/cards/card_database_manager.h" -#include "../../../../../ui/widgets/cards/card_info_picture_widget.h" -#include "../../tab_edhrec_main.h" - -#include -#include - -EdhrecCommanderResponseCommanderDetailsDisplayWidget::EdhrecCommanderResponseCommanderDetailsDisplayWidget( - QWidget *parent, - const EdhrecCommanderApiResponseCommanderDetails &_commanderDetails) - : QWidget(parent), commanderDetails(_commanderDetails) -{ - layout = new QVBoxLayout(this); - setLayout(layout); - - commanderPicture = new CardInfoPictureWidget(this); - commanderPicture->setCard(CardDatabaseManager::getInstance()->getCard(commanderDetails.getName())); - - commanderDetails.debugPrint(); - - label = new QLabel(this); - label->setAlignment(Qt::AlignCenter); - salt = new QLabel(this); - salt->setAlignment(Qt::AlignCenter); - - comboPushButton = new QPushButton(this); - averageDeckPushButton = new QPushButton(this); - - layout->addWidget(commanderPicture); - layout->addWidget(label); - layout->addWidget(salt); - layout->addWidget(comboPushButton); - layout->addWidget(averageDeckPushButton); - - QWidget *currentParent = parentWidget(); - TabEdhRecMain *parentTab = nullptr; - - while (currentParent) { - if ((parentTab = qobject_cast(currentParent))) { - break; - } - currentParent = currentParent->parentWidget(); - } - - if (parentTab) { - connect(comboPushButton, &QPushButton::clicked, this, - &EdhrecCommanderResponseCommanderDetailsDisplayWidget::actRequestComboNavigation); - connect(averageDeckPushButton, &QPushButton::clicked, this, - &EdhrecCommanderResponseCommanderDetailsDisplayWidget::actRequestAverageDeckNavigation); - connect(this, &EdhrecCommanderResponseCommanderDetailsDisplayWidget::requestUrl, parentTab, - &TabEdhRecMain::actNavigatePage); - } - - retranslateUi(); -} - -void EdhrecCommanderResponseCommanderDetailsDisplayWidget::retranslateUi() -{ - label->setText(commanderDetails.getLabel()); - salt->setText(tr("Salt: ") + QString::number(commanderDetails.getSalt())); - comboPushButton->setText(tr("Combos")); - averageDeckPushButton->setText(tr("Average Deck")); -} - -void EdhrecCommanderResponseCommanderDetailsDisplayWidget::actRequestComboNavigation() -{ - emit requestUrl("/combos/" + commanderDetails.getSanitized()); -} - -void EdhrecCommanderResponseCommanderDetailsDisplayWidget::actRequestAverageDeckNavigation() -{ - emit requestUrl("/average-decks/" + commanderDetails.getSanitized()); -} diff --git a/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_display_widget.cpp b/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_display_widget.cpp index 199608e8b..9ea071546 100644 --- a/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_display_widget.cpp +++ b/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_display_widget.cpp @@ -2,8 +2,8 @@ #include "../../../../../ui/widgets/cards/card_info_picture_widget.h" #include "../../api_response/commander/edhrec_commander_api_response.h" -#include "edhrec_commander_api_response_card_list_display_widget.h" -#include "edhrec_commander_api_response_commander_details_display_widget.h" +#include "../cards/edhrec_api_response_card_list_display_widget.h" +#include "edhrec_api_response_commander_details_display_widget.h" #include #include @@ -12,7 +12,8 @@ #include EdhrecCommanderApiResponseDisplayWidget::EdhrecCommanderApiResponseDisplayWidget(QWidget *parent, - EdhrecCommanderApiResponse response) + EdhrecCommanderApiResponse response, + QString baseUrl) : QWidget(parent) { layout = new QHBoxLayout(this); @@ -31,15 +32,15 @@ EdhrecCommanderApiResponseDisplayWidget::EdhrecCommanderApiResponseDisplayWidget QStringList widgetNames; // Add commander details - auto commanderPicture = - new EdhrecCommanderResponseCommanderDetailsDisplayWidget(this, response.container.getCommanderDetails()); + auto commanderPicture = new EdhrecCommanderResponseCommanderDetailsDisplayWidget( + this, response.container.getCommanderDetails(), baseUrl); cardDisplayLayout->addWidget(commanderPicture); widgetNames.append("Commander Details"); // Add card list widgets auto edhrec_commander_api_response_card_lists = response.container.getCardlists(); - for (const EdhrecCommanderApiResponseCardList &card_list : edhrec_commander_api_response_card_lists) { - auto cardListDisplayWidget = new EdhrecCommanderApiResponseCardListDisplayWidget(this, card_list); + for (const EdhrecApiResponseCardList &card_list : edhrec_commander_api_response_card_lists) { + auto cardListDisplayWidget = new EdhrecApiResponseCardListDisplayWidget(this, card_list); cardDisplayLayout->addWidget(cardListDisplayWidget); widgetNames.append(cardListDisplayWidget->getBannerText()); } diff --git a/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_display_widget.h b/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_display_widget.h index e98841613..172b64e32 100644 --- a/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_display_widget.h +++ b/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_display_widget.h @@ -12,7 +12,9 @@ class EdhrecCommanderApiResponseDisplayWidget : public QWidget Q_OBJECT public: - explicit EdhrecCommanderApiResponseDisplayWidget(QWidget *parent, EdhrecCommanderApiResponse response); + explicit EdhrecCommanderApiResponseDisplayWidget(QWidget *parent, + EdhrecCommanderApiResponse response, + QString baseUrl); void resizeEvent(QResizeEvent *event) override; public slots: diff --git a/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_navigation_widget.cpp b/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_navigation_widget.cpp new file mode 100644 index 000000000..3f3b9f1ba --- /dev/null +++ b/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_navigation_widget.cpp @@ -0,0 +1,174 @@ +#include "edhrec_commander_api_response_navigation_widget.h" + +#include "../../tab_edhrec_main.h" + +EdhrecCommanderApiResponseNavigationWidget::EdhrecCommanderApiResponseNavigationWidget( + QWidget *parent, + const EdhrecCommanderApiResponseCommanderDetails &_commanderDetails, + QString baseUrl) + : QWidget(parent), commanderDetails(_commanderDetails) +{ + layout = new QGridLayout(this); + setLayout(layout); + + gameChangerLabel = new QLabel(this); + budgetLabel = new QLabel(this); + + comboPushButton = new QPushButton(this); + averageDeckPushButton = new QPushButton(this); + + layout->addWidget(comboPushButton, 0, 0, 1, 1); + layout->addWidget(averageDeckPushButton, 0, 1, 1, 1); + + layout->addWidget(gameChangerLabel, 1, 0, 1, 2); + + for (int i = 0; i < gameChangerOptions.length(); i++) { + QString option = gameChangerOptions.at(i); + QString label = option.isEmpty() ? "All" : option.at(0).toUpper() + option.mid(1); + QPushButton *optionButton = new QPushButton(label, this); + gameChangerButtons[option] = optionButton; + layout->addWidget(optionButton, 2, i); + connect(optionButton, &QPushButton::clicked, this, [=, this]() { + selectedGameChanger = option; + updateOptionButtonSelection(gameChangerButtons, option); + actRequestCommanderNavigation(); + }); + } + + layout->addWidget(budgetLabel, 3, 0, 1, 2); + + for (int i = 0; i < budgetOptions.length(); i++) { + QString option = budgetOptions.at(i); + QString label = option.isEmpty() ? "Any" : option.at(0).toUpper() + option.mid(1); + QPushButton *btn = new QPushButton(label, this); + budgetButtons[option] = btn; + layout->addWidget(btn, 4, i); + connect(btn, &QPushButton::clicked, this, [=, this]() { + selectedBudget = option; + updateOptionButtonSelection(budgetButtons, option); + actRequestCommanderNavigation(); + }); + } + + updateOptionButtonSelection(gameChangerButtons, ""); + updateOptionButtonSelection(budgetButtons, ""); + + QWidget *currentParent = parentWidget(); + TabEdhRecMain *parentTab = nullptr; + + while (currentParent) { + if ((parentTab = qobject_cast(currentParent))) { + break; + } + currentParent = currentParent->parentWidget(); + } + + if (parentTab) { + connect(comboPushButton, &QPushButton::clicked, this, + &EdhrecCommanderApiResponseNavigationWidget::actRequestComboNavigation); + connect(averageDeckPushButton, &QPushButton::clicked, this, + &EdhrecCommanderApiResponseNavigationWidget::actRequestAverageDeckNavigation); + connect(this, &EdhrecCommanderApiResponseNavigationWidget::requestUrl, parentTab, + &TabEdhRecMain::actNavigatePage); + } + + retranslateUi(); + applyOptionsFromUrl(baseUrl); +} + +void EdhrecCommanderApiResponseNavigationWidget::retranslateUi() +{ + comboPushButton->setText(tr("Combos")); + averageDeckPushButton->setText(tr("Average Deck")); + gameChangerLabel->setText(tr("Game Changers")); + budgetLabel->setText(tr("Budget")); +} + +void EdhrecCommanderApiResponseNavigationWidget::applyOptionsFromUrl(const QString &url) +{ + QString cleanedUrl = url; + + // Remove base and file extension + if (cleanedUrl.startsWith("https://json.edhrec.com/pages/")) { + cleanedUrl = cleanedUrl.mid(QString("https://json.edhrec.com/pages/").length()); + } + if (cleanedUrl.endsWith(".json")) { + cleanedUrl.chop(5); + } + + // Expecting something like: "commanders/the-ur-dragon/core/expensive" +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + QStringList parts = cleanedUrl.split('/', Qt::SkipEmptyParts); +#else + QStringList parts = cleanedUrl.split('/', QString::SkipEmptyParts); +#endif + + if (parts.size() < 2) { + return; + } + + QString commanderName = parts[1]; + QString gameChangerOpt, budgetOpt; + + // Define valid sets + QSet validGameChangers = {"core", "upgraded", "optimized"}; + QSet validBudgets = {"budget", "expensive"}; + + // Check remaining parts after commander + for (int i = 2; i < parts.size(); ++i) { + QString part = parts[i].toLower(); + if (validGameChangers.contains(part)) { + gameChangerOpt = part; + } else if (validBudgets.contains(part)) { + budgetOpt = part; + } + } + + // Validate and apply + if (!gameChangerButtons.contains(gameChangerOpt)) { + gameChangerOpt.clear(); + } + if (!budgetButtons.contains(budgetOpt)) { + budgetOpt.clear(); + } + + selectedGameChanger = gameChangerOpt; + selectedBudget = budgetOpt; + + updateOptionButtonSelection(gameChangerButtons, selectedGameChanger); + updateOptionButtonSelection(budgetButtons, selectedBudget); +} + +void EdhrecCommanderApiResponseNavigationWidget::updateOptionButtonSelection(QMap &buttons, + const QString &selectedKey) +{ + for (auto it = buttons.begin(); it != buttons.end(); ++it) { + it.value()->setStyleSheet(it.key() == selectedKey ? "background-color: lightblue; font-weight: bold;" : ""); + } +} + +QString EdhrecCommanderApiResponseNavigationWidget::addNavigationOptionsToUrl(QString baseUrl) +{ + if (!selectedGameChanger.isEmpty()) { + baseUrl += "/" + selectedGameChanger; + } + if (!selectedBudget.isEmpty()) { + baseUrl += "/" + selectedBudget; + } + return baseUrl; +} + +void EdhrecCommanderApiResponseNavigationWidget::actRequestCommanderNavigation() +{ + emit requestUrl(addNavigationOptionsToUrl("/commanders/" + commanderDetails.getSanitized())); +} + +void EdhrecCommanderApiResponseNavigationWidget::actRequestComboNavigation() +{ + emit requestUrl("/combos/" + commanderDetails.getSanitized()); +} + +void EdhrecCommanderApiResponseNavigationWidget::actRequestAverageDeckNavigation() +{ + emit requestUrl(addNavigationOptionsToUrl("/average-decks/" + commanderDetails.getSanitized())); +} \ No newline at end of file diff --git a/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_navigation_widget.h b/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_navigation_widget.h new file mode 100644 index 000000000..16f601b9b --- /dev/null +++ b/cockatrice/src/client/tabs/api/edhrec/display/commander/edhrec_commander_api_response_navigation_widget.h @@ -0,0 +1,54 @@ +#ifndef EDHREC_COMMANDER_API_RESPONSE_NAVIGATION_WIDGET_H +#define EDHREC_COMMANDER_API_RESPONSE_NAVIGATION_WIDGET_H + +#include "edhrec_api_response_commander_details_display_widget.h" + +#include +#include +#include +#include + +class EdhrecCommanderApiResponseNavigationWidget : public QWidget +{ + Q_OBJECT +public: + explicit EdhrecCommanderApiResponseNavigationWidget( + QWidget *parent, + const EdhrecCommanderApiResponseCommanderDetails &_commanderDetails, + QString baseUrl); + void retranslateUi(); + void applyOptionsFromUrl(const QString &url); + +public slots: + void actRequestCommanderNavigation(); + void actRequestComboNavigation(); + void actRequestAverageDeckNavigation(); +signals: + void requestUrl(QString url); + +private: + QGridLayout *layout; + + QLabel *gameChangerLabel; + QLabel *budgetLabel; + + QStringList gameChangerOptions = {"", "core", "upgraded", "optimized"}; + QStringList budgetOptions = {"", "budget", "expensive"}; + + QString selectedGameChanger; + QString selectedBudget; + + QMap gameChangerButtons; + QMap budgetButtons; + + QPushButton *comboPushButton; + QPushButton *averageDeckPushButton; + + EdhrecCommanderApiResponseCommanderDetails commanderDetails; + + void updateOptionButtonSelection(QMap &buttons, const QString &selectedKey); + QString addNavigationOptionsToUrl(QString baseUrl); + QString buildComboUrl() const; +}; + +#endif // EDHREC_COMMANDER_API_RESPONSE_NAVIGATION_WIDGET_H diff --git a/cockatrice/src/client/tabs/api/edhrec/display/top_cards/edhrec_top_cards_api_response_display_widget.cpp b/cockatrice/src/client/tabs/api/edhrec/display/top_cards/edhrec_top_cards_api_response_display_widget.cpp index 958594554..ae07c9dc8 100644 --- a/cockatrice/src/client/tabs/api/edhrec/display/top_cards/edhrec_top_cards_api_response_display_widget.cpp +++ b/cockatrice/src/client/tabs/api/edhrec/display/top_cards/edhrec_top_cards_api_response_display_widget.cpp @@ -1,7 +1,7 @@ #include "edhrec_top_cards_api_response_display_widget.h" #include "../../api_response/top_cards/edhrec_top_cards_api_response.h" -#include "../commander/edhrec_commander_api_response_card_list_display_widget.h" +#include "../cards/edhrec_api_response_card_list_display_widget.h" EdhrecTopCardsApiResponseDisplayWidget::EdhrecTopCardsApiResponseDisplayWidget(QWidget *parent, EdhrecTopCardsApiResponse response) @@ -14,8 +14,8 @@ EdhrecTopCardsApiResponseDisplayWidget::EdhrecTopCardsApiResponseDisplayWidget(Q // Add card list widgets auto edhrec_commander_api_response_card_lists = response.container.getCardlists(); - for (const EdhrecCommanderApiResponseCardList &card_list : edhrec_commander_api_response_card_lists) { - auto cardListDisplayWidget = new EdhrecCommanderApiResponseCardListDisplayWidget(this, card_list); + for (const EdhrecApiResponseCardList &card_list : edhrec_commander_api_response_card_lists) { + auto cardListDisplayWidget = new EdhrecApiResponseCardListDisplayWidget(this, card_list); cardDisplayLayout->addWidget(cardListDisplayWidget); } diff --git a/cockatrice/src/client/tabs/api/edhrec/display/top_commander/edhrec_top_commanders_api_response_display_widget.cpp b/cockatrice/src/client/tabs/api/edhrec/display/top_commander/edhrec_top_commanders_api_response_display_widget.cpp index 8419ddad0..13f54a979 100644 --- a/cockatrice/src/client/tabs/api/edhrec/display/top_commander/edhrec_top_commanders_api_response_display_widget.cpp +++ b/cockatrice/src/client/tabs/api/edhrec/display/top_commander/edhrec_top_commanders_api_response_display_widget.cpp @@ -1,7 +1,7 @@ #include "edhrec_top_commanders_api_response_display_widget.h" #include "../../api_response/top_commanders/edhrec_top_commanders_api_response.h" -#include "../commander/edhrec_commander_api_response_card_list_display_widget.h" +#include "../cards/edhrec_api_response_card_list_display_widget.h" EdhrecTopCommandersApiResponseDisplayWidget::EdhrecTopCommandersApiResponseDisplayWidget( QWidget *parent, @@ -15,8 +15,8 @@ EdhrecTopCommandersApiResponseDisplayWidget::EdhrecTopCommandersApiResponseDispl // Add card list widgets auto edhrec_commander_api_response_card_lists = response.container.getCardlists(); - for (const EdhrecCommanderApiResponseCardList &card_list : edhrec_commander_api_response_card_lists) { - auto cardListDisplayWidget = new EdhrecCommanderApiResponseCardListDisplayWidget(this, card_list); + for (const EdhrecApiResponseCardList &card_list : edhrec_commander_api_response_card_lists) { + auto cardListDisplayWidget = new EdhrecApiResponseCardListDisplayWidget(this, card_list); cardDisplayLayout->addWidget(cardListDisplayWidget); } diff --git a/cockatrice/src/client/tabs/api/edhrec/display/top_tags/edhrec_top_tags_api_response_display_widget.cpp b/cockatrice/src/client/tabs/api/edhrec/display/top_tags/edhrec_top_tags_api_response_display_widget.cpp index fe727027d..91a1ce3fa 100644 --- a/cockatrice/src/client/tabs/api/edhrec/display/top_tags/edhrec_top_tags_api_response_display_widget.cpp +++ b/cockatrice/src/client/tabs/api/edhrec/display/top_tags/edhrec_top_tags_api_response_display_widget.cpp @@ -1,7 +1,7 @@ #include "edhrec_top_tags_api_response_display_widget.h" #include "../../api_response/top_tags/edhrec_top_tags_api_response.h" -#include "../commander/edhrec_commander_api_response_card_list_display_widget.h" +#include "../cards/edhrec_api_response_card_list_display_widget.h" EdhrecTopTagsApiResponseDisplayWidget::EdhrecTopTagsApiResponseDisplayWidget(QWidget *parent, EdhrecTopTagsApiResponse response) @@ -14,8 +14,8 @@ EdhrecTopTagsApiResponseDisplayWidget::EdhrecTopTagsApiResponseDisplayWidget(QWi // Add card list widgets auto edhrec_commander_api_response_card_lists = response.container.getCardlists(); - for (const EdhrecCommanderApiResponseCardList &card_list : edhrec_commander_api_response_card_lists) { - auto cardListDisplayWidget = new EdhrecCommanderApiResponseCardListDisplayWidget(this, card_list); + for (const EdhrecApiResponseCardList &card_list : edhrec_commander_api_response_card_lists) { + auto cardListDisplayWidget = new EdhrecApiResponseCardListDisplayWidget(this, card_list); cardDisplayLayout->addWidget(cardListDisplayWidget); } diff --git a/cockatrice/src/client/tabs/api/edhrec/tab_edhrec.cpp b/cockatrice/src/client/tabs/api/edhrec/tab_edhrec.cpp index 251469ee0..a2755b9e1 100644 --- a/cockatrice/src/client/tabs/api/edhrec/tab_edhrec.cpp +++ b/cockatrice/src/client/tabs/api/edhrec/tab_edhrec.cpp @@ -76,7 +76,7 @@ void TabEdhRec::processApiJson(QNetworkReply *reply) EdhrecCommanderApiResponse deckData; deckData.fromJson(jsonObj); - displayWidget = new EdhrecCommanderApiResponseDisplayWidget(this, deckData); + displayWidget = new EdhrecCommanderApiResponseDisplayWidget(this, deckData, reply->url().toString()); // flowWidget->addWidget(displayWidget); setCentralWidget(displayWidget); 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 64a1d1d04..ac30cef4d 100644 --- a/cockatrice/src/client/tabs/api/edhrec/tab_edhrec_main.cpp +++ b/cockatrice/src/client/tabs/api/edhrec/tab_edhrec_main.cpp @@ -215,7 +215,8 @@ void TabEdhRecMain::processApiJson(QNetworkReply *reply) if (responseUrl.startsWith("https://json.edhrec.com/pages/commanders/year.json")) { processTopCommandersResponse(jsonObj); } else if (responseUrl.startsWith("https://json.edhrec.com/pages/commanders/")) { - processCommanderResponse(jsonObj); + qInfo() << "Received top kek"; + processCommanderResponse(jsonObj, responseUrl); } else if (responseUrl.startsWith("https://json.edhrec.com/pages/cards/")) { processCommanderResponse(jsonObj); } else if (responseUrl.startsWith("https://json.edhrec.com/pages/tags/")) { @@ -225,6 +226,7 @@ void TabEdhRecMain::processApiJson(QNetworkReply *reply) } else if (responseUrl.startsWith("https://json.edhrec.com/pages/top/year.json")) { processTopCardsResponse(jsonObj); } else if (responseUrl.startsWith("https://json.edhrec.com/pages/combos/")) { + qInfo() << "Received combos"; processCommanderResponse(jsonObj); } else if (responseUrl.startsWith("https://json.edhrec.com/pages/average-decks/")) { processAverageDeckResponse(jsonObj); @@ -316,7 +318,7 @@ void TabEdhRecMain::processTopCommandersResponse(QJsonObject reply) mainLayout->setStretch(1, 1); // Make sure currentPageDisplay takes remaining space } -void TabEdhRecMain::processCommanderResponse(QJsonObject reply) +void TabEdhRecMain::processCommanderResponse(QJsonObject reply, QString responseUrl) { EdhrecCommanderApiResponse deckData; deckData.fromJson(reply); @@ -333,7 +335,7 @@ void TabEdhRecMain::processCommanderResponse(QJsonObject reply) currentPageLayout = new QVBoxLayout(currentPageDisplay); currentPageDisplay->setLayout(currentPageLayout); - auto display = new EdhrecCommanderApiResponseDisplayWidget(currentPageDisplay, deckData); + auto display = new EdhrecCommanderApiResponseDisplayWidget(currentPageDisplay, deckData, responseUrl); currentPageLayout->addWidget(display); mainLayout->addWidget(currentPageDisplay); 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 5a4f3db2a..1c6c67e5c 100644 --- a/cockatrice/src/client/tabs/api/edhrec/tab_edhrec_main.h +++ b/cockatrice/src/client/tabs/api/edhrec/tab_edhrec_main.h @@ -29,6 +29,7 @@ public: public slots: void processApiJson(QNetworkReply *reply); + void processCommanderResponse(QJsonObject reply, QString responseUrl = ""); void processTopCardsResponse(QJsonObject reply); void processTopTagsResponse(QJsonObject reply); void processTopCommandersResponse(QJsonObject reply); @@ -54,8 +55,6 @@ private: QPushButton *searchPushButton; CardInfoPtr cardToQuery; EdhrecCommanderApiResponseDisplayWidget *displayWidget; - - void processCommanderResponse(QJsonObject reply); }; #endif // TAB_EDHREC_MAIN_H