From 3aa8e91b2056762b6e1c8812c945d7496c3ee29b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Sat, 18 Jan 2025 22:33:15 +0100 Subject: [PATCH] Give deckList a signal to emit when the tags change and hook up the display widget to that. --- .../deck_preview_deck_tags_display_widget.cpp | 12 +++++++++++- .../deck_preview_deck_tags_display_widget.h | 2 ++ .../deck_preview_tag_addition_widget.cpp | 1 - common/decklist.h | 4 ++++ 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp index e849d2716..f4cab85fe 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp @@ -21,11 +21,21 @@ DeckPreviewDeckTagsDisplayWidget::DeckPreviewDeckTagsDisplayWidget(DeckPreviewWi setFixedHeight(100); - auto *flowWidget = new FlowWidget(this, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAsNeeded); + connect(deckLoader, &DeckList::deckTagsChanged, this, &DeckPreviewDeckTagsDisplayWidget::refreshTags); + flowWidget = new FlowWidget(this, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAsNeeded); for (const QString &tag : this->deckLoader->getTags()) { flowWidget->addWidget(new DeckPreviewTagDisplayWidget(this, tag)); } flowWidget->addWidget(new DeckPreviewTagAdditionWidget(this, tr("Edit tags ..."))); layout->addWidget(flowWidget); +} + +void DeckPreviewDeckTagsDisplayWidget::refreshTags() +{ + flowWidget->clearLayout(); + for (const QString &tag : this->deckLoader->getTags()) { + flowWidget->addWidget(new DeckPreviewTagDisplayWidget(this, tag)); + } + flowWidget->addWidget(new DeckPreviewTagAdditionWidget(this, tr("Edit tags ..."))); } \ No newline at end of file diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.h b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.h index 4f62f764c..a6a1c8de4 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.h +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.h @@ -13,7 +13,9 @@ class DeckPreviewDeckTagsDisplayWidget : public QWidget public: explicit DeckPreviewDeckTagsDisplayWidget(DeckPreviewWidget *_parent, DeckLoader *_deckLoader); + void refreshTags(); DeckPreviewWidget *parent; DeckLoader *deckLoader; + FlowWidget *flowWidget; }; #endif // DECK_PREVIEW_DECK_TAGS_DISPLAY_WIDGET_H 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 77eb4357e..3572daaee 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 @@ -45,7 +45,6 @@ void DeckPreviewTagAdditionWidget::mousePressEvent(QMouseEvent *event) QStringList updatedTags = dialog.getActiveTags(); parent->deckLoader->setTags(updatedTags); parent->deckLoader->saveToFile(parent->parent->filePath, DeckLoader::CockatriceFormat); - parent->parent->parent->refreshBannerCards(); } } diff --git a/common/decklist.h b/common/decklist.h index 79dca4e6a..a48f152e8 100644 --- a/common/decklist.h +++ b/common/decklist.h @@ -272,6 +272,7 @@ protected: signals: void deckHashChanged(); + void deckTagsChanged(); public slots: void setName(const QString &_name = QString()) @@ -285,14 +286,17 @@ public slots: void setTags(const QStringList &_tags = QStringList()) { tags = _tags; + emit deckTagsChanged(); } void addTag(const QString &_tag) { tags.append(_tag); + emit deckTagsChanged(); } void clearTags() { tags.clear(); + emit deckTagsChanged(); } void setBannerCard(const QPair &_bannerCard = QPair()) {