Propagate display type from visual deck editor to card group display widget correctly on initialization. (#5978)

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
BruebachL 2025-06-13 01:37:57 +02:00 committed by GitHub
parent 7495d2dc65
commit 9af3fbc35f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 16 additions and 13 deletions

View file

@ -12,12 +12,13 @@ DeckCardZoneDisplayWidget::DeckCardZoneDisplayWidget(QWidget *parent,
QString _zoneName, QString _zoneName,
QString _activeGroupCriteria, QString _activeGroupCriteria,
QStringList _activeSortCriteria, QStringList _activeSortCriteria,
DisplayType _displayType,
int bannerOpacity, int bannerOpacity,
int subBannerOpacity, int subBannerOpacity,
CardSizeWidget *_cardSizeWidget) CardSizeWidget *_cardSizeWidget)
: QWidget(parent), deckListModel(_deckListModel), zoneName(_zoneName), activeGroupCriteria(_activeGroupCriteria), : QWidget(parent), deckListModel(_deckListModel), zoneName(_zoneName), activeGroupCriteria(_activeGroupCriteria),
activeSortCriteria(_activeSortCriteria), bannerOpacity(bannerOpacity), subBannerOpacity(subBannerOpacity), activeSortCriteria(_activeSortCriteria), displayType(_displayType), bannerOpacity(bannerOpacity),
cardSizeWidget(_cardSizeWidget) subBannerOpacity(subBannerOpacity), cardSizeWidget(_cardSizeWidget)
{ {
layout = new QVBoxLayout(this); layout = new QVBoxLayout(this);
setLayout(layout); setLayout(layout);
@ -60,7 +61,7 @@ void DeckCardZoneDisplayWidget::displayCards()
deleteCardGroupIfItDoesNotExist(); deleteCardGroupIfItDoesNotExist();
} }
void DeckCardZoneDisplayWidget::refreshDisplayType(const QString &_displayType) void DeckCardZoneDisplayWidget::refreshDisplayType(const DisplayType &_displayType)
{ {
displayType = _displayType; displayType = _displayType;
QLayoutItem *item; QLayoutItem *item;
@ -102,7 +103,7 @@ void DeckCardZoneDisplayWidget::addCardGroupIfItDoesNotExist()
continue; continue;
} }
if (displayType == "overlap") { if (displayType == DisplayType::Overlap) {
auto *display_widget = new OverlappedCardGroupDisplayWidget( auto *display_widget = new OverlappedCardGroupDisplayWidget(
cardGroupContainer, deckListModel, zoneName, cardGroup, activeGroupCriteria, activeSortCriteria, cardGroupContainer, deckListModel, zoneName, cardGroup, activeGroupCriteria, activeSortCriteria,
subBannerOpacity, cardSizeWidget); subBannerOpacity, cardSizeWidget);
@ -112,7 +113,7 @@ void DeckCardZoneDisplayWidget::addCardGroupIfItDoesNotExist()
connect(this, &DeckCardZoneDisplayWidget::activeSortCriteriaChanged, display_widget, connect(this, &DeckCardZoneDisplayWidget::activeSortCriteriaChanged, display_widget,
&CardGroupDisplayWidget::onActiveSortCriteriaChanged); &CardGroupDisplayWidget::onActiveSortCriteriaChanged);
cardGroupLayout->addWidget(display_widget); cardGroupLayout->addWidget(display_widget);
} else if (displayType == "flat") { } else if (displayType == DisplayType::Flat) {
auto *display_widget = new FlatCardGroupDisplayWidget(cardGroupContainer, deckListModel, zoneName, auto *display_widget = new FlatCardGroupDisplayWidget(cardGroupContainer, deckListModel, zoneName,
cardGroup, activeGroupCriteria, activeSortCriteria, cardGroup, activeGroupCriteria, activeSortCriteria,
subBannerOpacity, cardSizeWidget); subBannerOpacity, cardSizeWidget);

View file

@ -5,6 +5,7 @@
#include "../../../../game/cards/card_info.h" #include "../../../../game/cards/card_info.h"
#include "../general/display/banner_widget.h" #include "../general/display/banner_widget.h"
#include "../general/layout_containers/overlap_widget.h" #include "../general/layout_containers/overlap_widget.h"
#include "../visual_deck_editor/visual_deck_editor_widget.h"
#include "card_info_picture_with_text_overlay_widget.h" #include "card_info_picture_with_text_overlay_widget.h"
#include "card_size_widget.h" #include "card_size_widget.h"
@ -21,6 +22,7 @@ public:
QString zoneName, QString zoneName,
QString activeGroupCriteria, QString activeGroupCriteria,
QStringList activeSortCriteria, QStringList activeSortCriteria,
DisplayType displayType,
int bannerOpacity, int bannerOpacity,
int subBannerOpacity, int subBannerOpacity,
CardSizeWidget *_cardSizeWidget); CardSizeWidget *_cardSizeWidget);
@ -33,7 +35,7 @@ public slots:
void onClick(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *card); void onClick(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *card);
void onHover(CardInfoPtr card); void onHover(CardInfoPtr card);
void displayCards(); void displayCards();
void refreshDisplayType(const QString &displayType); void refreshDisplayType(const DisplayType &displayType);
void addCardGroupIfItDoesNotExist(); void addCardGroupIfItDoesNotExist();
void deleteCardGroupIfItDoesNotExist(); void deleteCardGroupIfItDoesNotExist();
void onActiveGroupCriteriaChanged(QString activeGroupCriteria); void onActiveGroupCriteriaChanged(QString activeGroupCriteria);
@ -48,6 +50,7 @@ signals:
private: private:
QString activeGroupCriteria; QString activeGroupCriteria;
QStringList activeSortCriteria; QStringList activeSortCriteria;
DisplayType displayType = DisplayType::Overlap;
int bannerOpacity = 20; int bannerOpacity = 20;
int subBannerOpacity = 10; int subBannerOpacity = 10;
CardSizeWidget *cardSizeWidget; CardSizeWidget *cardSizeWidget;
@ -55,7 +58,6 @@ private:
BannerWidget *banner; BannerWidget *banner;
QWidget *cardGroupContainer; QWidget *cardGroupContainer;
QVBoxLayout *cardGroupLayout; QVBoxLayout *cardGroupLayout;
QString displayType = "flat";
OverlapWidget *overlapWidget; OverlapWidget *overlapWidget;
}; };

View file

@ -193,7 +193,7 @@ void VisualDeckEditorWidget::retranslateUi()
searchPushButton->setToolTip(tr("Search for closest match in the database (with auto-suggestions) and add " searchPushButton->setToolTip(tr("Search for closest match in the database (with auto-suggestions) and add "
"preferred printing to the deck on pressing enter")); "preferred printing to the deck on pressing enter"));
sortCriteriaButton->setToolTip(tr("Configure how cards are sorted within their groups")); sortCriteriaButton->setToolTip(tr("Configure how cards are sorted within their groups"));
displayTypeButton->setText(tr("Flat Layout")); displayTypeButton->setText(tr("Overlap Layout"));
displayTypeButton->setToolTip( displayTypeButton->setToolTip(
tr("Change how cards are displayed within zones (i.e. overlapped or fully visible.)")); tr("Change how cards are displayed within zones (i.e. overlapped or fully visible.)"));
} }
@ -212,14 +212,13 @@ void VisualDeckEditorWidget::updateDisplayType()
// Update UI and emit signal // Update UI and emit signal
switch (currentDisplayType) { switch (currentDisplayType) {
case DisplayType::Flat: case DisplayType::Flat:
emit displayTypeChanged("flat");
displayTypeButton->setText(tr("Flat Layout")); displayTypeButton->setText(tr("Flat Layout"));
break; break;
case DisplayType::Overlap: case DisplayType::Overlap:
emit displayTypeChanged("overlap");
displayTypeButton->setText(tr("Overlap Layout")); displayTypeButton->setText(tr("Overlap Layout"));
break; break;
} }
emit displayTypeChanged(currentDisplayType);
} }
void VisualDeckEditorWidget::addZoneIfDoesNotExist() void VisualDeckEditorWidget::addZoneIfDoesNotExist()
@ -239,8 +238,9 @@ void VisualDeckEditorWidget::addZoneIfDoesNotExist()
if (found) { if (found) {
continue; continue;
} }
DeckCardZoneDisplayWidget *zoneDisplayWidget = new DeckCardZoneDisplayWidget( DeckCardZoneDisplayWidget *zoneDisplayWidget =
zoneContainer, deckListModel, zone, activeGroupCriteria, activeSortCriteria, 20, 10, cardSizeWidget); new DeckCardZoneDisplayWidget(zoneContainer, deckListModel, zone, activeGroupCriteria, activeSortCriteria,
currentDisplayType, 20, 10, cardSizeWidget);
connect(zoneDisplayWidget, &DeckCardZoneDisplayWidget::cardHovered, this, &VisualDeckEditorWidget::onHover); connect(zoneDisplayWidget, &DeckCardZoneDisplayWidget::cardHovered, this, &VisualDeckEditorWidget::onHover);
connect(zoneDisplayWidget, &DeckCardZoneDisplayWidget::cardClicked, this, &VisualDeckEditorWidget::onCardClick); connect(zoneDisplayWidget, &DeckCardZoneDisplayWidget::cardClicked, this, &VisualDeckEditorWidget::onCardClick);
connect(this, &VisualDeckEditorWidget::activeSortCriteriaChanged, zoneDisplayWidget, connect(this, &VisualDeckEditorWidget::activeSortCriteriaChanged, zoneDisplayWidget,

View file

@ -50,7 +50,7 @@ signals:
void activeSortCriteriaChanged(QStringList activeSortCriteria); void activeSortCriteriaChanged(QStringList activeSortCriteria);
void cardClicked(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *instance, QString zoneName); void cardClicked(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *instance, QString zoneName);
void cardAdditionRequested(CardInfoPtr card); void cardAdditionRequested(CardInfoPtr card);
void displayTypeChanged(QString displayType); void displayTypeChanged(DisplayType displayType);
protected slots: protected slots:
void onHover(CardInfoPtr hoveredCard); void onHover(CardInfoPtr hoveredCard);