Give deckList a signal to emit when the tags change and hook up the display widget to that. (#5497)

* Give deckList a signal to emit when the tags change and hook up the display widget to that.

* Reload from file when loading a visual deck to ensure latest changes propagate to the decklist.

* Eliminate loadVisualDeck and use loadDeckFromFile instead.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
BruebachL 2025-01-19 13:32:39 +01:00 committed by GitHub
parent 55b490ade0
commit ec0caaf421
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 23 additions and 23 deletions

View file

@ -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 ...")));
}

View file

@ -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

View file

@ -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();
}
}

View file

@ -78,6 +78,7 @@ void VisualDeckStorageWidget::deckPreviewClickedEvent(QMouseEvent *event, DeckPr
void VisualDeckStorageWidget::deckPreviewDoubleClickedEvent(QMouseEvent *event, DeckPreviewWidget *instance)
{
emit deckPreviewDoubleClicked(event, instance);
emit deckLoadRequested(instance->filePath);
}
void VisualDeckStorageWidget::refreshBannerCards()

View file

@ -35,6 +35,7 @@ signals:
void bannerCardsRefreshed();
void deckPreviewClicked(QMouseEvent *event, DeckPreviewWidget *instance);
void deckPreviewDoubleClicked(QMouseEvent *event, DeckPreviewWidget *instance);
void deckLoadRequested(QString &filePath);
private:
QVBoxLayout *layout;