From ba73cda339014487bd153b909cad9a8965ef3f44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Mon, 2 Dec 2024 03:03:05 +0100 Subject: [PATCH] Adjust font size when adjusting card size. --- .../printing_selector_card_display_widget.cpp | 4 +-- ...e_and_collectors_number_display_widget.cpp | 36 ++++++++++++++++++- ...ame_and_collectors_number_display_widget.h | 7 +++- 3 files changed, 43 insertions(+), 4 deletions(-) diff --git a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_card_display_widget.cpp b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_card_display_widget.cpp index c540ac1dd..82e443ba8 100644 --- a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_card_display_widget.cpp +++ b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_card_display_widget.cpp @@ -30,8 +30,8 @@ PrintingSelectorCardDisplayWidget::PrintingSelectorCardDisplayWidget(QWidget *pa const QString combinedSetName = QString(setInfoForCard.getPtr()->getLongName() + " (" + setInfoForCard.getPtr()->getShortName() + ")"); - setNameAndCollectorsNumberDisplayWidget = - new SetNameAndCollectorsNumberDisplayWidget(this, combinedSetName, setInfoForCard.getProperty("num")); + setNameAndCollectorsNumberDisplayWidget = new SetNameAndCollectorsNumberDisplayWidget( + this, combinedSetName, setInfoForCard.getProperty("num"), cardSizeSlider); layout->addWidget(overlayWidget, 0, Qt::AlignHCenter); layout->addWidget(setNameAndCollectorsNumberDisplayWidget, 1, Qt::AlignHCenter | Qt::AlignBottom); diff --git a/cockatrice/src/client/ui/widgets/printing_selector/set_name_and_collectors_number_display_widget.cpp b/cockatrice/src/client/ui/widgets/printing_selector/set_name_and_collectors_number_display_widget.cpp index f8c4fb87f..c11bd2001 100644 --- a/cockatrice/src/client/ui/widgets/printing_selector/set_name_and_collectors_number_display_widget.cpp +++ b/cockatrice/src/client/ui/widgets/printing_selector/set_name_and_collectors_number_display_widget.cpp @@ -1,8 +1,11 @@ #include "set_name_and_collectors_number_display_widget.h" +#include + SetNameAndCollectorsNumberDisplayWidget::SetNameAndCollectorsNumberDisplayWidget(QWidget *parent, const QString &_setName, - const QString &_collectorsNumber) + const QString &_collectorsNumber, + QSlider *_cardSizeSlider) : QWidget(parent) { layout = new QVBoxLayout(this); @@ -19,10 +22,41 @@ SetNameAndCollectorsNumberDisplayWidget::SetNameAndCollectorsNumberDisplayWidget collectorsNumber->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); collectorsNumber->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + cardSizeSlider = _cardSizeSlider; + + connect(cardSizeSlider, &QSlider::valueChanged, this, &SetNameAndCollectorsNumberDisplayWidget::adjustFontSize); + layout->addWidget(setName); layout->addWidget(collectorsNumber); } + +void SetNameAndCollectorsNumberDisplayWidget::adjustFontSize(int scalePercentage) +{ + // Define the base font size and the range + const int minFontSize = 8; // Minimum font size + const int maxFontSize = 32; // Maximum font size + const int basePercentage = 100; // Scale at 100% + + // Calculate the new font size + int newFontSize = minFontSize + (scalePercentage - basePercentage) * (maxFontSize - minFontSize) / (250 - 25); + + // Clamp the font size to the defined range + newFontSize = std::clamp(newFontSize, minFontSize, maxFontSize); + + // Update the fonts for both labels + QFont setNameFont = setName->font(); + setNameFont.setPointSize(newFontSize); + setName->setFont(setNameFont); + + QFont collectorsNumberFont = collectorsNumber->font(); + collectorsNumberFont.setPointSize(newFontSize); + collectorsNumber->setFont(collectorsNumberFont); + + // Optionally trigger a resize to accommodate new font size + adjustSize(); +} + void SetNameAndCollectorsNumberDisplayWidget::resizeEvent(QResizeEvent *event) { QWidget::resizeEvent(event); // Ensure the parent class handles the event first diff --git a/cockatrice/src/client/ui/widgets/printing_selector/set_name_and_collectors_number_display_widget.h b/cockatrice/src/client/ui/widgets/printing_selector/set_name_and_collectors_number_display_widget.h index 3fa051f9d..8be8c947d 100644 --- a/cockatrice/src/client/ui/widgets/printing_selector/set_name_and_collectors_number_display_widget.h +++ b/cockatrice/src/client/ui/widgets/printing_selector/set_name_and_collectors_number_display_widget.h @@ -2,6 +2,7 @@ #define SET_NAME_AND_COLLECTORS_NUMBER_DISPLAY_WIDGET_H #include +#include #include #include @@ -9,13 +10,17 @@ class SetNameAndCollectorsNumberDisplayWidget : public QWidget { Q_OBJECT public: - SetNameAndCollectorsNumberDisplayWidget(QWidget *parent, const QString &setName, const QString &collectorsNumber); + SetNameAndCollectorsNumberDisplayWidget(QWidget *parent, const QString &setName, const QString &collectorsNumber, QSlider *cardSizeSlider); void resizeEvent(QResizeEvent *event) override; +public slots: + void adjustFontSize(int scalePercentage); + private: QVBoxLayout *layout; QLabel *setName; QLabel *collectorsNumber; + QSlider *cardSizeSlider; }; #endif // SET_NAME_AND_COLLECTORS_NUMBER_DISPLAY_WIDGET_H