mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-18 16:32:16 -07:00
Change splitter size, include some colored labels.
This commit is contained in:
parent
cb71b33a2b
commit
280d1aca26
3 changed files with 46 additions and 18 deletions
|
|
@ -1,15 +1,40 @@
|
||||||
#include "edhrec_commander_api_response_card_details_display_widget.h"
|
#include "edhrec_commander_api_response_card_details_display_widget.h"
|
||||||
|
|
||||||
#include "../../../../game/cards/card_database_manager.h"
|
#include "../../../../game/cards/card_database_manager.h"
|
||||||
|
|
||||||
EdhrecCommanderApiResponseCardDetailsDisplayWidget::EdhrecCommanderApiResponseCardDetailsDisplayWidget(
|
EdhrecCommanderApiResponseCardDetailsDisplayWidget::EdhrecCommanderApiResponseCardDetailsDisplayWidget(
|
||||||
QWidget *parent,
|
QWidget *parent,
|
||||||
EdhrecCommanderApiResponseCardDetails toDisplay)
|
const EdhrecCommanderApiResponseCardDetails &_toDisplay)
|
||||||
: QWidget(parent)
|
: QWidget(parent), toDisplay(_toDisplay)
|
||||||
{
|
{
|
||||||
layout = new QHBoxLayout(this);
|
layout = new QVBoxLayout(this);
|
||||||
setLayout(layout);
|
setLayout(layout);
|
||||||
|
|
||||||
cardPictureWidget = new CardInfoPictureWidget(this);
|
cardPictureWidget = new CardInfoPictureWidget(this);
|
||||||
cardPictureWidget->setCard(CardDatabaseManager::getInstance()->getCard(toDisplay.name));
|
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(cardPictureWidget);
|
||||||
|
layout->addWidget(label);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,17 +6,20 @@
|
||||||
|
|
||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
#include <QLabel>
|
||||||
|
|
||||||
class EdhrecCommanderApiResponseCardDetailsDisplayWidget : public QWidget
|
class EdhrecCommanderApiResponseCardDetailsDisplayWidget : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit EdhrecCommanderApiResponseCardDetailsDisplayWidget(QWidget *parent,
|
explicit EdhrecCommanderApiResponseCardDetailsDisplayWidget(QWidget *parent,
|
||||||
EdhrecCommanderApiResponseCardDetails toDisplay);
|
const EdhrecCommanderApiResponseCardDetails &_toDisplay);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QHBoxLayout *layout;
|
EdhrecCommanderApiResponseCardDetails toDisplay;
|
||||||
|
QVBoxLayout *layout;
|
||||||
CardInfoPictureWidget *cardPictureWidget;
|
CardInfoPictureWidget *cardPictureWidget;
|
||||||
|
QLabel *label;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // EDHREC_COMMANDER_API_RESPONSE_CARD_DETAILS_DISPLAY_WIDGET_H
|
#endif // EDHREC_COMMANDER_API_RESPONSE_CARD_DETAILS_DISPLAY_WIDGET_H
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
#include "edhrec_commander_api_response_display_widget.h"
|
#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 "../../../ui/widgets/cards/card_info_picture_widget.h"
|
||||||
#include "api_response/edhrec_commander_api_response.h"
|
#include "api_response/edhrec_commander_api_response.h"
|
||||||
#include "edhrec_commander_api_response_card_list_display_widget.h"
|
#include "edhrec_commander_api_response_card_list_display_widget.h"
|
||||||
|
|
@ -21,12 +20,13 @@ EdhrecCommanderApiResponseDisplayWidget::EdhrecCommanderApiResponseDisplayWidget
|
||||||
|
|
||||||
cardDisplayLayout = new QVBoxLayout(this);
|
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);
|
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);
|
||||||
auto listView = new QListView(splitter); // Set list view as part of the splitter
|
listView->setMinimumWidth(50);
|
||||||
|
listView->setMaximumWidth(150);
|
||||||
auto listModel = new QStringListModel(this);
|
auto listModel = new QStringListModel(this);
|
||||||
QStringList widgetNames;
|
QStringList widgetNames;
|
||||||
|
|
||||||
|
|
@ -44,16 +44,16 @@ EdhrecCommanderApiResponseDisplayWidget::EdhrecCommanderApiResponseDisplayWidget
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a QScrollArea to hold the card display widgets
|
// 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->setWidgetResizable(true);
|
||||||
scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
||||||
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||||
|
|
||||||
// Set the cardDisplayLayout inside the scroll area
|
// Set the cardDisplayLayout inside the scroll area
|
||||||
auto scrollWidget = new QWidget(scrollArea); // Create a QWidget to contain the layout
|
auto scrollWidget = new QWidget(scrollArea);
|
||||||
scrollWidget->setLayout(cardDisplayLayout); // Set the layout for the widget
|
scrollWidget->setLayout(cardDisplayLayout);
|
||||||
connect(splitter, &QSplitter::splitterMoved, this, &EdhrecCommanderApiResponseDisplayWidget::onSplitterChange);
|
connect(splitter, &QSplitter::splitterMoved, this, &EdhrecCommanderApiResponseDisplayWidget::onSplitterChange);
|
||||||
scrollArea->setWidget(scrollWidget); // Set the widget inside the scroll area
|
scrollArea->setWidget(scrollWidget);
|
||||||
|
|
||||||
// Configure the list view
|
// Configure the list view
|
||||||
listModel->setStringList(widgetNames);
|
listModel->setStringList(widgetNames);
|
||||||
|
|
@ -77,10 +77,10 @@ EdhrecCommanderApiResponseDisplayWidget::EdhrecCommanderApiResponseDisplayWidget
|
||||||
});
|
});
|
||||||
|
|
||||||
// Add splitter to the main layout
|
// Add splitter to the main layout
|
||||||
splitter->addWidget(listView); // Add listView to the splitter
|
splitter->addWidget(listView);
|
||||||
splitter->addWidget(scrollArea); // Add scrollArea to the splitter
|
splitter->addWidget(scrollArea);
|
||||||
|
|
||||||
layout->addWidget(splitter); // Add the splitter to the main layout
|
layout->addWidget(splitter);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EdhrecCommanderApiResponseDisplayWidget::onSplitterChange()
|
void EdhrecCommanderApiResponseDisplayWidget::onSplitterChange()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue