From 39f87a5e78ba383269a96825e50bd273b8f24c0b Mon Sep 17 00:00:00 2001 From: RickyRister <42636155+RickyRister@users.noreply.github.com> Date: Sat, 19 Apr 2025 21:10:32 -0700 Subject: [PATCH] VDS: Optimize refreshTags in VisualDeckStorageTagFilterWidget (#5856) * make methods const * remove redundant calls to gatherAllTags * make methods private * use QSet instead of QStringList --- .../visual_deck_storage_tag_filter_widget.cpp | 20 ++++++++++--------- .../visual_deck_storage_tag_filter_widget.h | 18 +++++++++-------- 2 files changed, 21 insertions(+), 17 deletions(-) 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();