From 280d1aca26b6f38e3fd447371e6ef3aca80f9d85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Wed, 22 Jan 2025 14:41:31 +0100 Subject: [PATCH] Change splitter size, include some colored labels. --- ...i_response_card_details_display_widget.cpp | 33 ++++++++++++++++--- ...api_response_card_details_display_widget.h | 7 ++-- ..._commander_api_response_display_widget.cpp | 24 +++++++------- 3 files changed, 46 insertions(+), 18 deletions(-) diff --git a/cockatrice/src/client/tabs/api/edhrec/edhrec_commander_api_response_card_details_display_widget.cpp b/cockatrice/src/client/tabs/api/edhrec/edhrec_commander_api_response_card_details_display_widget.cpp index 20dcc4fbb..2be00146d 100644 --- a/cockatrice/src/client/tabs/api/edhrec/edhrec_commander_api_response_card_details_display_widget.cpp +++ b/cockatrice/src/client/tabs/api/edhrec/edhrec_commander_api_response_card_details_display_widget.cpp @@ -1,15 +1,40 @@ #include "edhrec_commander_api_response_card_details_display_widget.h" - #include "../../../../game/cards/card_database_manager.h" EdhrecCommanderApiResponseCardDetailsDisplayWidget::EdhrecCommanderApiResponseCardDetailsDisplayWidget( QWidget *parent, - EdhrecCommanderApiResponseCardDetails toDisplay) - : QWidget(parent) + const EdhrecCommanderApiResponseCardDetails &_toDisplay) + : QWidget(parent), toDisplay(_toDisplay) { - layout = new QHBoxLayout(this); + layout = new QVBoxLayout(this); setLayout(layout); + cardPictureWidget = new CardInfoPictureWidget(this); cardPictureWidget->setCard(CardDatabaseManager::getInstance()->getCard(toDisplay.name)); + + label = new QLabel(this); + label->setText(toDisplay.label); + label->setAlignment(Qt::AlignHCenter); + + // Set label color based on inclusion rate + int inclusionRate = (toDisplay.numDecks * 100) / toDisplay.potentialDecks; + + QColor labelColor; + if (inclusionRate <= 30) { + labelColor = QColor(255, 0, 0); // Red + } else if (inclusionRate <= 60) { + int red = 255 - ((inclusionRate - 30) * 2); + int green = (inclusionRate - 30) * 4; // Adjust green to make the transition smoother + labelColor = QColor(red, green, 0); // purple-ish + } else if (inclusionRate <= 90) { + int green = (inclusionRate - 60) * 5; // Increase green + labelColor = QColor(100, green, 100); // Green shades + } else { + labelColor = QColor(100, 200, 100); // Dark Green + } + + label->setStyleSheet(QString("color: %1").arg(labelColor.name())); + layout->addWidget(cardPictureWidget); + layout->addWidget(label); } diff --git a/cockatrice/src/client/tabs/api/edhrec/edhrec_commander_api_response_card_details_display_widget.h b/cockatrice/src/client/tabs/api/edhrec/edhrec_commander_api_response_card_details_display_widget.h index 84537d88d..e3db52fbb 100644 --- a/cockatrice/src/client/tabs/api/edhrec/edhrec_commander_api_response_card_details_display_widget.h +++ b/cockatrice/src/client/tabs/api/edhrec/edhrec_commander_api_response_card_details_display_widget.h @@ -6,17 +6,20 @@ #include #include +#include class EdhrecCommanderApiResponseCardDetailsDisplayWidget : public QWidget { Q_OBJECT public: explicit EdhrecCommanderApiResponseCardDetailsDisplayWidget(QWidget *parent, - EdhrecCommanderApiResponseCardDetails toDisplay); + const EdhrecCommanderApiResponseCardDetails &_toDisplay); private: - QHBoxLayout *layout; + EdhrecCommanderApiResponseCardDetails toDisplay; + QVBoxLayout *layout; CardInfoPictureWidget *cardPictureWidget; + QLabel *label; }; #endif // EDHREC_COMMANDER_API_RESPONSE_CARD_DETAILS_DISPLAY_WIDGET_H diff --git a/cockatrice/src/client/tabs/api/edhrec/edhrec_commander_api_response_display_widget.cpp b/cockatrice/src/client/tabs/api/edhrec/edhrec_commander_api_response_display_widget.cpp index 2710fecf1..77f483b7e 100644 --- a/cockatrice/src/client/tabs/api/edhrec/edhrec_commander_api_response_display_widget.cpp +++ b/cockatrice/src/client/tabs/api/edhrec/edhrec_commander_api_response_display_widget.cpp @@ -1,6 +1,5 @@ #include "edhrec_commander_api_response_display_widget.h" -#include "../../../../game/cards/card_database_manager.h" #include "../../../ui/widgets/cards/card_info_picture_widget.h" #include "api_response/edhrec_commander_api_response.h" #include "edhrec_commander_api_response_card_list_display_widget.h" @@ -21,12 +20,13 @@ EdhrecCommanderApiResponseDisplayWidget::EdhrecCommanderApiResponseDisplayWidget cardDisplayLayout = new QVBoxLayout(this); - // Create a QSplitter to hold the ListView and ScrollArea side by side + // Create a QSplitter to hold the ListView and ScrollArea holding CardListdisplayWidgets side by side auto splitter = new QSplitter(this); - splitter->setOrientation(Qt::Horizontal); // Horizontal splitter to divide ListView and ScrollArea + splitter->setOrientation(Qt::Horizontal); - // Create the list view - auto listView = new QListView(splitter); // Set list view as part of the splitter + auto listView = new QListView(splitter); + listView->setMinimumWidth(50); + listView->setMaximumWidth(150); auto listModel = new QStringListModel(this); QStringList widgetNames; @@ -44,16 +44,16 @@ EdhrecCommanderApiResponseDisplayWidget::EdhrecCommanderApiResponseDisplayWidget } // Create a QScrollArea to hold the card display widgets - scrollArea = new QScrollArea(splitter); // Set scroll area as part of the splitter + scrollArea = new QScrollArea(splitter); scrollArea->setWidgetResizable(true); scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // Set the cardDisplayLayout inside the scroll area - auto scrollWidget = new QWidget(scrollArea); // Create a QWidget to contain the layout - scrollWidget->setLayout(cardDisplayLayout); // Set the layout for the widget + auto scrollWidget = new QWidget(scrollArea); + scrollWidget->setLayout(cardDisplayLayout); connect(splitter, &QSplitter::splitterMoved, this, &EdhrecCommanderApiResponseDisplayWidget::onSplitterChange); - scrollArea->setWidget(scrollWidget); // Set the widget inside the scroll area + scrollArea->setWidget(scrollWidget); // Configure the list view listModel->setStringList(widgetNames); @@ -77,10 +77,10 @@ EdhrecCommanderApiResponseDisplayWidget::EdhrecCommanderApiResponseDisplayWidget }); // Add splitter to the main layout - splitter->addWidget(listView); // Add listView to the splitter - splitter->addWidget(scrollArea); // Add scrollArea to the splitter + splitter->addWidget(listView); + splitter->addWidget(scrollArea); - layout->addWidget(splitter); // Add the splitter to the main layout + layout->addWidget(splitter); } void EdhrecCommanderApiResponseDisplayWidget::onSplitterChange()