From f12259500e9080bb261af797b8a69c097ff81d53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Mon, 25 Nov 2024 23:51:23 +0100 Subject: [PATCH] Resize setName to picture width on initialization. Also add a new signal to card_info_picture_widget to emit when the scale factor changes. Hook this up to the setName resizing method to ensure card size updates trigger it appropriately after initialization. Clean up unused enter and resize methods that just delegated to base-class. --- .../cards/card_info_picture_widget.cpp | 2 ++ .../widgets/cards/card_info_picture_widget.h | 1 + .../printing_selector/printing_selector.cpp | 1 + .../printing_selector_card_display_widget.cpp | 19 ++++++------------- .../printing_selector_card_display_widget.h | 5 +++-- .../printing_selector_card_overlay_widget.cpp | 7 +++++++ 6 files changed, 20 insertions(+), 15 deletions(-) diff --git a/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.cpp b/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.cpp index f0b5d6f65..284660037 100644 --- a/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.cpp +++ b/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.cpp @@ -99,6 +99,8 @@ void CardInfoPictureWidget::setScaleFactor(const int scale) setFixedSize(newWidth, newHeight); updatePixmap(); + + emit cardScaleFactorChanged(scale); } /** diff --git a/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.h b/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.h index e18df00d8..f274d8ad1 100644 --- a/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.h +++ b/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.h @@ -29,6 +29,7 @@ public slots: signals: void hoveredOnCard(CardInfoPtr hoveredCard); + void cardScaleFactorChanged(int _scale); protected: void resizeEvent(QResizeEvent *event) override; diff --git a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector.cpp b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector.cpp index 655c038e0..8353bbcd4 100644 --- a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector.cpp +++ b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector.cpp @@ -312,6 +312,7 @@ void PrintingSelector::getAllSetsForCurrentCard() new PrintingSelectorCardDisplayWidget(this, deckEditor, deckModel, deckView, cardSizeSlider, selectedCard, prependedSets[currentIndex], currentZone); flowWidget->addWidget(cardDisplayWidget); + cardDisplayWidget->clampSetNameToPicture(); } // Stop timer when done 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 1945fa09f..c540ac1dd 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 @@ -33,21 +33,14 @@ PrintingSelectorCardDisplayWidget::PrintingSelectorCardDisplayWidget(QWidget *pa setNameAndCollectorsNumberDisplayWidget = new SetNameAndCollectorsNumberDisplayWidget(this, combinedSetName, setInfoForCard.getProperty("num")); - layout->addWidget(overlayWidget); + layout->addWidget(overlayWidget, 0, Qt::AlignHCenter); layout->addWidget(setNameAndCollectorsNumberDisplayWidget, 1, Qt::AlignHCenter | Qt::AlignBottom); - setMouseTracking(true); } -void PrintingSelectorCardDisplayWidget::enterEvent(QEnterEvent *event) +void PrintingSelectorCardDisplayWidget::clampSetNameToPicture() { - QWidget::enterEvent(event); + if (overlayWidget != nullptr && setNameAndCollectorsNumberDisplayWidget != nullptr) { + setNameAndCollectorsNumberDisplayWidget->setMaximumWidth(overlayWidget->width()); + } update(); -} - -void PrintingSelectorCardDisplayWidget::resizeEvent(QResizeEvent *event) -{ - QWidget::resizeEvent(event); // Ensure the parent class handles the event first - - // Set the maximum width for the setName QLabel - setNameAndCollectorsNumberDisplayWidget->setMaximumWidth(overlayWidget->width()); -} +} \ No newline at end of file diff --git a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_card_display_widget.h b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_card_display_widget.h index fa64293f3..4e04f7086 100644 --- a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_card_display_widget.h +++ b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_card_display_widget.h @@ -31,8 +31,9 @@ public: CardInfoPtr rootCard, CardInfoPerSet setInfoForCard, QString ¤tZone); - void enterEvent(QEnterEvent *event) override; - void resizeEvent(QResizeEvent *event) override; + +public slots: + void clampSetNameToPicture(); private: QVBoxLayout *layout; diff --git a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_card_overlay_widget.cpp b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_card_overlay_widget.cpp index 3dd05b9fa..91121c17d 100644 --- a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_card_overlay_widget.cpp +++ b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_card_overlay_widget.cpp @@ -1,6 +1,7 @@ #include "printing_selector_card_overlay_widget.h" #include "../../../../game/cards/card_database_manager.h" +#include "printing_selector_card_display_widget.h" #include @@ -36,6 +37,12 @@ PrintingSelectorCardOverlayWidget::PrintingSelectorCardOverlayWidget(QWidget *pa allZonesCardAmountWidget->raise(); // Ensure it's on top of the picture allZonesCardAmountWidget->setVisible(false); + // Attempt to cast the parent to PrintingSelectorCardDisplayWidget + if (const auto *parentWidget = qobject_cast(parent)) { + connect(cardInfoPicture, &CardInfoPictureWidget::cardScaleFactorChanged, parentWidget, + &PrintingSelectorCardDisplayWidget::clampSetNameToPicture); + } + connect(cardSizeSlider, &QSlider::valueChanged, cardInfoPicture, &CardInfoPictureWidget::setScaleFactor); }