diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.cpp index 983ab13bd..25cb5a1e5 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.cpp @@ -64,13 +64,13 @@ void VisualDeckStorageTagFilterWidget::filterDecksBySelectedTags(const QList allTags = gatherAllTags(); + removeTagsNotInList(allTags); + addTagsIfNotPresent(allTags); sortTags(); } -void VisualDeckStorageTagFilterWidget::removeTagsNotInList(const QStringList &tags) +void VisualDeckStorageTagFilterWidget::removeTagsNotInList(const QSet &tags) { // Iterate through all DeckPreviewTagDisplayWidgets for (DeckPreviewTagDisplayWidget *tagWidget : findChildren()) { @@ -83,7 +83,7 @@ void VisualDeckStorageTagFilterWidget::removeTagsNotInList(const QStringList &ta } } -void VisualDeckStorageTagFilterWidget::addTagsIfNotPresent(const QStringList &tags) +void VisualDeckStorageTagFilterWidget::addTagsIfNotPresent(const QSet &tags) { for (const QString &tag : tags) { addTagIfNotPresent(tag); @@ -136,20 +136,22 @@ void VisualDeckStorageTagFilterWidget::sortTags() } } -QStringList VisualDeckStorageTagFilterWidget::gatherAllTags() +QSet VisualDeckStorageTagFilterWidget::gatherAllTags() const { - QStringList allTags; + QSet allTags; QList deckWidgets = parent->findChildren(); for (DeckPreviewWidget *widget : deckWidgets) { if (widget->checkVisibility()) { - allTags << widget->deckLoader->getTags(); + for (const QString &tag : widget->deckLoader->getTags()) { + allTags.insert(tag); + } } } return allTags; } -QStringList VisualDeckStorageTagFilterWidget::getAllKnownTags() +QStringList VisualDeckStorageTagFilterWidget::getAllKnownTags() const { QStringList allTags; diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.h b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.h index a8726790e..3198e9769 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.h +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.h @@ -10,16 +10,18 @@ class VisualDeckStorageTagFilterWidget : public QWidget { Q_OBJECT -public: - explicit VisualDeckStorageTagFilterWidget(VisualDeckStorageWidget *_parent); - QStringList gatherAllTags(); - void filterDecksBySelectedTags(const QList &deckPreviews) const; - void removeTagsNotInList(const QStringList &tags); - void addTagsIfNotPresent(const QStringList &tags); + VisualDeckStorageWidget *parent; + + QSet gatherAllTags() const; + void removeTagsNotInList(const QSet &tags); + void addTagsIfNotPresent(const QSet &tags); void addTagIfNotPresent(const QString &tag); void sortTags(); - QStringList getAllKnownTags(); - VisualDeckStorageWidget *parent; + +public: + explicit VisualDeckStorageTagFilterWidget(VisualDeckStorageWidget *_parent); + QStringList getAllKnownTags() const; + void filterDecksBySelectedTags(const QList &deckPreviews) const; public slots: void refreshTags();