From 65222abba622ee0559036328ea4770028ead6e78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Wed, 16 Apr 2025 16:10:23 +0200 Subject: [PATCH] Implement top cards. --- cockatrice/CMakeLists.txt | 31 ++++++----- .../edhrec_top_cards_api_response.cpp | 19 +++++++ .../top_cards/edhrec_top_cards_api_response.h | 22 ++++++++ .../tabs/api/edhrec/tab_edhrec_main.cpp | 41 +++++++++++++++ .../client/tabs/api/edhrec/tab_edhrec_main.h | 2 + ..._top_cards_api_response_display_widget.cpp | 52 +++++++++++++++++++ ...ec_top_cards_api_response_display_widget.h | 24 +++++++++ ...commanders_api_response_display_widget.cpp | 46 +--------------- ...p_commanders_api_response_display_widget.h | 3 -- ...c_top_tags_api_response_display_widget.cpp | 47 +---------------- ...rec_top_tags_api_response_display_widget.h | 3 -- 11 files changed, 183 insertions(+), 107 deletions(-) create mode 100644 cockatrice/src/client/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.cpp create mode 100644 cockatrice/src/client/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.h create mode 100644 cockatrice/src/client/tabs/api/edhrec/top_cards/edhrec_top_cards_api_response_display_widget.cpp create mode 100644 cockatrice/src/client/tabs/api/edhrec/top_cards/edhrec_top_cards_api_response_display_widget.h diff --git a/cockatrice/CMakeLists.txt b/cockatrice/CMakeLists.txt index 3a1cb2924..3323eef37 100644 --- a/cockatrice/CMakeLists.txt +++ b/cockatrice/CMakeLists.txt @@ -18,19 +18,26 @@ set(cockatrice_SOURCES src/client/network/spoiler_background_updater.cpp src/client/sound_engine.cpp src/client/tabs/abstract_tab_deck_editor.cpp - src/client/tabs/api/edhrec/api_response/edhrec_commander_api_response.cpp - src/client/tabs/api/edhrec/api_response/edhrec_commander_api_response_archidekt_links.cpp - src/client/tabs/api/edhrec/api_response/edhrec_commander_api_response_average_deck_statistics.cpp - src/client/tabs/api/edhrec/api_response/edhrec_commander_api_response_card_container.cpp - src/client/tabs/api/edhrec/api_response/edhrec_commander_api_response_card_details.cpp - src/client/tabs/api/edhrec/api_response/edhrec_commander_api_response_card_list.cpp - src/client/tabs/api/edhrec/api_response/edhrec_commander_api_response_card_prices.cpp - src/client/tabs/api/edhrec/api_response/edhrec_commander_api_response_commander_details.cpp - src/client/tabs/api/edhrec/edhrec_commander_api_response_card_details_display_widget.cpp - src/client/tabs/api/edhrec/edhrec_commander_api_response_card_list_display_widget.cpp - src/client/tabs/api/edhrec/edhrec_commander_api_response_commander_details_display_widget.cpp - src/client/tabs/api/edhrec/edhrec_commander_api_response_display_widget.cpp src/client/tabs/api/edhrec/tab_edhrec.cpp + src/client/tabs/api/edhrec/tab_edhrec_main.cpp + src/client/tabs/api/edhrec/commander/edhrec_commander_api_response_display_widget.cpp + src/client/tabs/api/edhrec/commander/edhrec_commander_api_response_card_details_display_widget.cpp + src/client/tabs/api/edhrec/commander/edhrec_commander_api_response_card_list_display_widget.cpp + src/client/tabs/api/edhrec/commander/edhrec_commander_api_response_commander_details_display_widget.cpp + src/client/tabs/api/edhrec/top_cards/edhrec_top_cards_api_response_display_widget.cpp + src/client/tabs/api/edhrec/top_commander/edhrec_top_commanders_api_response_display_widget.cpp + src/client/tabs/api/edhrec/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/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/commander/edhrec_commander_api_response.cpp + src/client/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.cpp + src/client/tabs/api/edhrec/api_response/top_commanders/edhrec_top_commanders_api_response.cpp + src/client/tabs/api/edhrec/api_response/top_tags/edhrec_top_tags_api_response.cpp src/client/tabs/tab.cpp src/client/tabs/tab_account.cpp src/client/tabs/tab_admin.cpp diff --git a/cockatrice/src/client/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.cpp b/cockatrice/src/client/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.cpp new file mode 100644 index 000000000..26122ce89 --- /dev/null +++ b/cockatrice/src/client/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.cpp @@ -0,0 +1,19 @@ +#include "edhrec_top_cards_api_response.h" + +#include +#include + +void EdhrecTopCardsApiResponse::fromJson(const QJsonObject &json) +{ + header = json.value("header").toString(); + description = json.value("description").toString(); + QJsonObject containerJson = json.value("container").toObject(); + container.fromJson(containerJson); +} + +void EdhrecTopCardsApiResponse::debugPrint() const +{ + qDebug() << "Header:" << header; + qDebug() << "Description:" << description; + container.debugPrint(); +} \ No newline at end of file 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 new file mode 100644 index 000000000..0a9d14425 --- /dev/null +++ b/cockatrice/src/client/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.h @@ -0,0 +1,22 @@ +#ifndef EDHREC_TOP_CARDS_API_RESPONSE_H +#define EDHREC_TOP_CARDS_API_RESPONSE_H + +#include "../commander/edhrec_commander_api_response_card_container.h" + +#include +#include +#include + +// Represents the main structure of the JSON +class EdhrecTopCardsApiResponse +{ +public: + QString header; + QString description; + EdhrecCommanderApiResponseCardContainer container; + + void fromJson(const QJsonObject &json); + void debugPrint() const; +}; + +#endif // EDHREC_TOP_CARDS_API_RESPONSE_H 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 19c2650c5..ef1c77b3b 100644 --- a/cockatrice/src/client/tabs/api/edhrec/tab_edhrec_main.cpp +++ b/cockatrice/src/client/tabs/api/edhrec/tab_edhrec_main.cpp @@ -4,9 +4,11 @@ #include "../../../../game/cards/card_database_manager.h" #include "../../../../game/cards/card_search_model.h" #include "api_response/commander/edhrec_commander_api_response.h" +#include "api_response/top_cards/edhrec_top_cards_api_response.h" #include "api_response/top_commanders/edhrec_top_commanders_api_response.h" #include "api_response/top_tags/edhrec_top_tags_api_response.h" #include "commander/edhrec_commander_api_response_display_widget.h" +#include "top_cards/edhrec_top_cards_api_response_display_widget.h" #include "top_commander/edhrec_top_commanders_api_response_display_widget.h" #include "top_tags/edhrec_top_tags_api_response_display_widget.h" @@ -50,6 +52,7 @@ TabEdhRecMain::TabEdhRecMain(TabSupervisor *_tabSupervisor) : Tab(_tabSupervisor navigationContainer->setLayout(navigationLayout); cardsPushButton = new QPushButton(navigationContainer); + connect(cardsPushButton, &QPushButton::clicked, this, &TabEdhRecMain::getTopCards); topCommandersPushButton = new QPushButton(navigationContainer); connect(topCommandersPushButton, &QPushButton::clicked, this, &TabEdhRecMain::getTopCommanders); tagsPushButton = new QPushButton(navigationContainer); @@ -109,6 +112,8 @@ TabEdhRecMain::TabEdhRecMain(TabSupervisor *_tabSupervisor) : Tab(_tabSupervisor setCentralWidget(container); TabEdhRecMain::retranslateUi(); + + getTopCards(); } void TabEdhRecMain::retranslateUi() @@ -161,6 +166,13 @@ void TabEdhRecMain::actNavigatePage(QString url) networkManager->get(request); } +void TabEdhRecMain::getTopCards() +{ + QNetworkRequest request{QUrl("https://json.edhrec.com/pages/top/year.json")}; + + networkManager->get(request); +} + void TabEdhRecMain::getTopCommanders() { QNetworkRequest request{QUrl("https://json.edhrec.com/pages/commanders/year.json")}; @@ -208,6 +220,8 @@ void TabEdhRecMain::processApiJson(QNetworkReply *reply) processCommanderResponse(jsonObj); } else if (responseUrl.startsWith("https://json.edhrec.com/pages/tags.json")) { processTopTagsResponse(jsonObj); + } else if (responseUrl.startsWith("https://json.edhrec.com/pages/top/year.json")) { + processTopCardsResponse(jsonObj); } else { prettyPrintJson(jsonObj, 4); } @@ -215,6 +229,33 @@ void TabEdhRecMain::processApiJson(QNetworkReply *reply) reply->deleteLater(); } +void TabEdhRecMain::processTopCardsResponse(QJsonObject reply) +{ + EdhrecTopCardsApiResponse deckData; + deckData.fromJson(reply); + + // **Remove previous page display to prevent stacking** + if (currentPageDisplay) { + mainLayout->removeWidget(currentPageDisplay); + delete currentPageDisplay; + currentPageDisplay = nullptr; + } + + // **Create new currentPageDisplay** + currentPageDisplay = new QWidget(container); + currentPageLayout = new QVBoxLayout(currentPageDisplay); + currentPageDisplay->setLayout(currentPageLayout); + + auto display = new EdhrecTopCardsApiResponseDisplayWidget(currentPageDisplay, deckData); + currentPageLayout->addWidget(display); + + mainLayout->addWidget(currentPageDisplay); + + // **Ensure layout stays correct** + mainLayout->setStretch(0, 0); // Keep navigationContainer at the top + mainLayout->setStretch(1, 1); // Make sure currentPageDisplay takes remaining space +} + void TabEdhRecMain::processTopTagsResponse(QJsonObject reply) { EdhrecTopTagsApiResponse deckData; 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 3cc332b63..1d1653e83 100644 --- a/cockatrice/src/client/tabs/api/edhrec/tab_edhrec_main.h +++ b/cockatrice/src/client/tabs/api/edhrec/tab_edhrec_main.h @@ -29,11 +29,13 @@ public: public slots: void processApiJson(QNetworkReply *reply); + void processTopCardsResponse(QJsonObject reply); void processTopTagsResponse(QJsonObject reply); void processTopCommandersResponse(QJsonObject reply); void prettyPrintJson(const QJsonValue &value, int indentLevel); void setCard(CardInfoPtr _cardToQuery, bool isCommander = false); void actNavigatePage(QString url); + void getTopCards(); void getTopCommanders(); void getTopTags(); diff --git a/cockatrice/src/client/tabs/api/edhrec/top_cards/edhrec_top_cards_api_response_display_widget.cpp b/cockatrice/src/client/tabs/api/edhrec/top_cards/edhrec_top_cards_api_response_display_widget.cpp new file mode 100644 index 000000000..7b6e5b2d6 --- /dev/null +++ b/cockatrice/src/client/tabs/api/edhrec/top_cards/edhrec_top_cards_api_response_display_widget.cpp @@ -0,0 +1,52 @@ +#include "edhrec_top_cards_api_response_display_widget.h" + +#include "../../../../ui/widgets/cards/card_info_picture_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 +#include +#include +#include +#include + +EdhrecTopCardsApiResponseDisplayWidget::EdhrecTopCardsApiResponseDisplayWidget(QWidget *parent, + EdhrecTopCardsApiResponse response) + : QWidget(parent) +{ + layout = new QHBoxLayout(this); + setLayout(layout); + + cardDisplayLayout = new QVBoxLayout(this); + + // 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); + cardDisplayLayout->addWidget(cardListDisplayWidget); + } + + // Create a QScrollArea to hold the card display widgets + scrollArea = new QScrollArea(this); + scrollArea->setWidgetResizable(true); + scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); + scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + + // Set the cardDisplayLayout inside the scroll area + auto scrollWidget = new QWidget(scrollArea); + scrollWidget->setLayout(cardDisplayLayout); + scrollArea->setWidget(scrollWidget); + + layout->addWidget(scrollArea); +} + +void EdhrecTopCardsApiResponseDisplayWidget::resizeEvent(QResizeEvent *event) +{ + QWidget::resizeEvent(event); + layout->invalidate(); + layout->activate(); + layout->update(); + if (scrollArea && scrollArea->widget()) { + scrollArea->widget()->resize(event->size()); + } +} diff --git a/cockatrice/src/client/tabs/api/edhrec/top_cards/edhrec_top_cards_api_response_display_widget.h b/cockatrice/src/client/tabs/api/edhrec/top_cards/edhrec_top_cards_api_response_display_widget.h new file mode 100644 index 000000000..c16dbfe04 --- /dev/null +++ b/cockatrice/src/client/tabs/api/edhrec/top_cards/edhrec_top_cards_api_response_display_widget.h @@ -0,0 +1,24 @@ +#ifndef EDHREC_TOP_CARDS_API_RESPONSE_DISPLAY_WIDGET_H +#define EDHREC_TOP_CARDS_API_RESPONSE_DISPLAY_WIDGET_H + +#include "../api_response/top_cards/edhrec_top_cards_api_response.h" + +#include +#include +#include + +class EdhrecTopCardsApiResponseDisplayWidget : public QWidget +{ + Q_OBJECT + +public: + explicit EdhrecTopCardsApiResponseDisplayWidget(QWidget *parent, EdhrecTopCardsApiResponse response); + void resizeEvent(QResizeEvent *event) override; + +private: + QHBoxLayout *layout; + QVBoxLayout *cardDisplayLayout; + QScrollArea *scrollArea; +}; + +#endif // EDHREC_TOP_CARDS_API_RESPONSE_DISPLAY_WIDGET_H diff --git a/cockatrice/src/client/tabs/api/edhrec/top_commander/edhrec_top_commanders_api_response_display_widget.cpp b/cockatrice/src/client/tabs/api/edhrec/top_commander/edhrec_top_commanders_api_response_display_widget.cpp index cf2f8b95b..703259097 100644 --- a/cockatrice/src/client/tabs/api/edhrec/top_commander/edhrec_top_commanders_api_response_display_widget.cpp +++ b/cockatrice/src/client/tabs/api/edhrec/top_commander/edhrec_top_commanders_api_response_display_widget.cpp @@ -21,26 +21,15 @@ EdhrecTopCommandersApiResponseDisplayWidget::EdhrecTopCommandersApiResponseDispl cardDisplayLayout = new QVBoxLayout(this); - // Create a QSplitter to hold the ListView and ScrollArea holding CardListdisplayWidgets side by side - auto splitter = new QSplitter(this); - splitter->setOrientation(Qt::Horizontal); - - auto listView = new QListView(splitter); - listView->setMinimumWidth(50); - listView->setMaximumWidth(150); - auto listModel = new QStringListModel(this); - QStringList widgetNames; - // 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); cardDisplayLayout->addWidget(cardListDisplayWidget); - widgetNames.append(cardListDisplayWidget->getBannerText()); } // Create a QScrollArea to hold the card display widgets - scrollArea = new QScrollArea(splitter); + scrollArea = new QScrollArea(this); scrollArea->setWidgetResizable(true); scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); @@ -48,40 +37,9 @@ EdhrecTopCommandersApiResponseDisplayWidget::EdhrecTopCommandersApiResponseDispl // Set the cardDisplayLayout inside the scroll area auto scrollWidget = new QWidget(scrollArea); scrollWidget->setLayout(cardDisplayLayout); - connect(splitter, &QSplitter::splitterMoved, this, &EdhrecTopCommandersApiResponseDisplayWidget::onSplitterChange); scrollArea->setWidget(scrollWidget); - // Configure the list view - listModel->setStringList(widgetNames); - listView->setModel(listModel); - listView->setEditTriggers(QAbstractItemView::NoEditTriggers); - - // Connect the list view to ensure the corresponding widget is visible - connect(listView, &QListView::clicked, this, [this](const QModelIndex &index) { - int widgetIndex = index.row(); - qDebug() << "clicked: " << widgetIndex; - auto targetWidget = cardDisplayLayout->itemAt(widgetIndex)->widget(); - if (targetWidget) { - qDebug() << "Found targetWidget" << targetWidget; - // Attempt to cast the parent to QScrollArea - auto scrollArea = qobject_cast(this->scrollArea); // Use the scroll area instance - if (scrollArea) { - qDebug() << "ScrollArea" << scrollArea; - scrollArea->ensureWidgetVisible(targetWidget); - } - } - }); - - // Add splitter to the main layout - splitter->addWidget(listView); - splitter->addWidget(scrollArea); - - layout->addWidget(splitter); -} - -void EdhrecTopCommandersApiResponseDisplayWidget::onSplitterChange() -{ - scrollArea->widget()->resize(scrollArea->size()); + layout->addWidget(scrollArea); } void EdhrecTopCommandersApiResponseDisplayWidget::resizeEvent(QResizeEvent *event) diff --git a/cockatrice/src/client/tabs/api/edhrec/top_commander/edhrec_top_commanders_api_response_display_widget.h b/cockatrice/src/client/tabs/api/edhrec/top_commander/edhrec_top_commanders_api_response_display_widget.h index 28f444e08..bb1e9fe5f 100644 --- a/cockatrice/src/client/tabs/api/edhrec/top_commander/edhrec_top_commanders_api_response_display_widget.h +++ b/cockatrice/src/client/tabs/api/edhrec/top_commander/edhrec_top_commanders_api_response_display_widget.h @@ -15,9 +15,6 @@ public: explicit EdhrecTopCommandersApiResponseDisplayWidget(QWidget *parent, EdhrecTopCommandersApiResponse response); void resizeEvent(QResizeEvent *event) override; -public slots: - void onSplitterChange(); - private: QHBoxLayout *layout; QVBoxLayout *cardDisplayLayout; diff --git a/cockatrice/src/client/tabs/api/edhrec/top_tags/edhrec_top_tags_api_response_display_widget.cpp b/cockatrice/src/client/tabs/api/edhrec/top_tags/edhrec_top_tags_api_response_display_widget.cpp index af45c8b47..255dbae27 100644 --- a/cockatrice/src/client/tabs/api/edhrec/top_tags/edhrec_top_tags_api_response_display_widget.cpp +++ b/cockatrice/src/client/tabs/api/edhrec/top_tags/edhrec_top_tags_api_response_display_widget.cpp @@ -20,26 +20,15 @@ EdhrecTopTagsApiResponseDisplayWidget::EdhrecTopTagsApiResponseDisplayWidget(QWi cardDisplayLayout = new QVBoxLayout(this); - // Create a QSplitter to hold the ListView and ScrollArea holding CardListdisplayWidgets side by side - auto splitter = new QSplitter(this); - splitter->setOrientation(Qt::Horizontal); - - auto listView = new QListView(splitter); - listView->setMinimumWidth(50); - listView->setMaximumWidth(150); - auto listModel = new QStringListModel(this); - QStringList widgetNames; - // 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); cardDisplayLayout->addWidget(cardListDisplayWidget); - widgetNames.append(cardListDisplayWidget->getBannerText()); } // Create a QScrollArea to hold the card display widgets - scrollArea = new QScrollArea(splitter); + scrollArea = new QScrollArea(this); scrollArea->setWidgetResizable(true); scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); @@ -47,46 +36,14 @@ EdhrecTopTagsApiResponseDisplayWidget::EdhrecTopTagsApiResponseDisplayWidget(QWi // Set the cardDisplayLayout inside the scroll area auto scrollWidget = new QWidget(scrollArea); scrollWidget->setLayout(cardDisplayLayout); - connect(splitter, &QSplitter::splitterMoved, this, &EdhrecTopTagsApiResponseDisplayWidget::onSplitterChange); scrollArea->setWidget(scrollWidget); - // Configure the list view - listModel->setStringList(widgetNames); - listView->setModel(listModel); - listView->setEditTriggers(QAbstractItemView::NoEditTriggers); - - // Connect the list view to ensure the corresponding widget is visible - connect(listView, &QListView::clicked, this, [this](const QModelIndex &index) { - int widgetIndex = index.row(); - qDebug() << "clicked: " << widgetIndex; - auto targetWidget = cardDisplayLayout->itemAt(widgetIndex)->widget(); - if (targetWidget) { - qDebug() << "Found targetWidget" << targetWidget; - // Attempt to cast the parent to QScrollArea - auto scrollArea = qobject_cast(this->scrollArea); // Use the scroll area instance - if (scrollArea) { - qDebug() << "ScrollArea" << scrollArea; - scrollArea->ensureWidgetVisible(targetWidget); - } - } - }); - - // Add splitter to the main layout - splitter->addWidget(listView); - splitter->addWidget(scrollArea); - - layout->addWidget(splitter); -} - -void EdhrecTopTagsApiResponseDisplayWidget::onSplitterChange() -{ - scrollArea->widget()->resize(scrollArea->size()); + layout->addWidget(scrollArea); } void EdhrecTopTagsApiResponseDisplayWidget::resizeEvent(QResizeEvent *event) { QWidget::resizeEvent(event); - qDebug() << event->size(); layout->invalidate(); layout->activate(); layout->update(); diff --git a/cockatrice/src/client/tabs/api/edhrec/top_tags/edhrec_top_tags_api_response_display_widget.h b/cockatrice/src/client/tabs/api/edhrec/top_tags/edhrec_top_tags_api_response_display_widget.h index e2cd3fdbc..3c9e750bd 100644 --- a/cockatrice/src/client/tabs/api/edhrec/top_tags/edhrec_top_tags_api_response_display_widget.h +++ b/cockatrice/src/client/tabs/api/edhrec/top_tags/edhrec_top_tags_api_response_display_widget.h @@ -15,9 +15,6 @@ public: explicit EdhrecTopTagsApiResponseDisplayWidget(QWidget *parent, EdhrecTopTagsApiResponse response); void resizeEvent(QResizeEvent *event) override; -public slots: - void onSplitterChange(); - private: QHBoxLayout *layout; QVBoxLayout *cardDisplayLayout;