From 209d07dd62fe934579fad99dc9ae867718a891e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Sun, 12 Jan 2025 23:01:38 +0100 Subject: [PATCH] Style tag addition widget to be consistent. --- .../deck_preview_tag_addition_widget.cpp | 76 +++++++++++++++---- .../deck_preview_tag_addition_widget.h | 2 + 2 files changed, 64 insertions(+), 14 deletions(-) diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_tag_addition_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_tag_addition_widget.cpp index 399834c12..77eb4357e 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_tag_addition_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_tag_addition_widget.cpp @@ -2,32 +2,33 @@ #include "deck_preview_tag_dialog.h" +#include #include #include +#include DeckPreviewTagAdditionWidget::DeckPreviewTagAdditionWidget(DeckPreviewDeckTagsDisplayWidget *_parent, - const QString &tagName) - : QWidget(_parent), parent(_parent), tagName_(tagName) + const QString &_tagName) + : QWidget(_parent), parent(_parent), tagName_(_tagName) { // Create layout auto *layout = new QHBoxLayout(this); layout->setContentsMargins(5, 5, 5, 5); layout->setSpacing(5); - // Create label for the tag name - tagLabel_ = new QLabel(tagName_, this); - layout->addWidget(tagLabel_); - - // Create close button - // closeButton_ = new QPushButton("x", this); - // closeButton_->setFixedSize(16, 16); // Small square button - // layout->addWidget(closeButton_); - // Adjust widget size - setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); +} - // Connect close button to the remove signal - // connect(closeButton_, &QPushButton::clicked, this, &DeckPreviewTagAdditionWidget::tagClosed); +QSize DeckPreviewTagAdditionWidget::sizeHint() const +{ + // Calculate the size based on the tag name + QFontMetrics fm(font()); + int textWidth = fm.horizontalAdvance(tagName_); + int width = textWidth + 50; // Add extra padding + int height = fm.height() + 10; // Height based on font size + padding + + return QSize(width, height); } void DeckPreviewTagAdditionWidget::mousePressEvent(QMouseEvent *event) @@ -47,3 +48,50 @@ void DeckPreviewTagAdditionWidget::mousePressEvent(QMouseEvent *event) parent->parent->parent->refreshBannerCards(); } } + +void DeckPreviewTagAdditionWidget::paintEvent(QPaintEvent *event) +{ + QPainter painter(this); + + // Set background color + QColor backgroundColor = Qt::lightGray; + painter.setBrush(backgroundColor); + painter.setPen(Qt::NoPen); + + // Draw background + painter.drawRect(rect()); + + // Draw border + QColor borderColor = Qt::gray; + QPen borderPen(borderColor, 1); + painter.setPen(borderPen); + painter.drawRect(rect().adjusted(0, 0, -1, -1)); // Adjust for pen width + + // Calculate font size based on widget height + QFont font = painter.font(); + int fontSize = std::max(10, height() / 2); // Ensure a minimum font size of 10 + font.setPointSize(fontSize); + painter.setFont(font); + + // Calculate text rect with margin + int margin = 10; // Left and right margins + QRect textRect(margin, 0, width() - margin * 2, height()); + + // Draw the text with a black border for better legibility + painter.setPen(Qt::black); + + // Draw text border by offsetting + for (int dx = -1; dx <= 1; ++dx) { + for (int dy = -1; dy <= 1; ++dy) { + if (dx != 0 || dy != 0) { + painter.drawText(textRect.translated(dx, dy), Qt::AlignLeft | Qt::AlignVCenter, tagName_); + } + } + } + + // Draw the actual text + painter.setPen(Qt::white); + painter.drawText(textRect, Qt::AlignLeft | Qt::AlignVCenter, tagName_); + + QWidget::paintEvent(event); +} diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_tag_addition_widget.h b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_tag_addition_widget.h index 07d9e5e43..9bab328d4 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_tag_addition_widget.h +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_tag_addition_widget.h @@ -13,6 +13,7 @@ class DeckPreviewTagAdditionWidget : public QWidget public: explicit DeckPreviewTagAdditionWidget(DeckPreviewDeckTagsDisplayWidget *_parent, const QString &tagName); + QSize sizeHint() const; signals: void tagClicked(); // Emitted when the tag is clicked @@ -20,6 +21,7 @@ signals: protected: void mousePressEvent(QMouseEvent *event) override; + void paintEvent(QPaintEvent *event); private: DeckPreviewDeckTagsDisplayWidget *parent;