From 05d06f9016e35346fc7f89178e5d237c3e11fcf3 Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Wed, 26 Feb 2025 17:59:59 +0100 Subject: [PATCH] Sort Tags in TagFilterWidget (#5660) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Lukas BrĂ¼bach --- .../visual_deck_storage_tag_filter_widget.cpp | 24 +++++++++++++++++++ .../visual_deck_storage_tag_filter_widget.h | 1 + 2 files changed, 25 insertions(+) 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 97b810d21..983ab13bd 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 @@ -67,6 +67,7 @@ void VisualDeckStorageTagFilterWidget::refreshTags() QStringList allTags = gatherAllTags(); removeTagsNotInList(gatherAllTags()); addTagsIfNotPresent(gatherAllTags()); + sortTags(); } void VisualDeckStorageTagFilterWidget::removeTagsNotInList(const QStringList &tags) @@ -112,6 +113,29 @@ void VisualDeckStorageTagFilterWidget::addTagIfNotPresent(const QString &tag) } } +void VisualDeckStorageTagFilterWidget::sortTags() +{ + auto *flowWidget = findChild(); + if (!flowWidget) + return; + + // Get all tag widgets + QList tagWidgets = findChildren(); + + // Sort widgets by tag name + std::sort(tagWidgets.begin(), tagWidgets.end(), [](DeckPreviewTagDisplayWidget *a, DeckPreviewTagDisplayWidget *b) { + return a->getTagName().toLower() < b->getTagName().toLower(); + }); + + // Clear and re-add widgets in sorted order + for (DeckPreviewTagDisplayWidget *tagWidget : tagWidgets) { + flowWidget->removeWidget(tagWidget); + } + for (DeckPreviewTagDisplayWidget *tagWidget : tagWidgets) { + flowWidget->addWidget(tagWidget); + } +} + QStringList VisualDeckStorageTagFilterWidget::gatherAllTags() { 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 ce8ca8d14..a8726790e 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 @@ -17,6 +17,7 @@ public: void removeTagsNotInList(const QStringList &tags); void addTagsIfNotPresent(const QStringList &tags); void addTagIfNotPresent(const QString &tag); + void sortTags(); QStringList getAllKnownTags(); VisualDeckStorageWidget *parent;