From 67db245aea5299d3961c0f44cac96c51ed159f63 Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Wed, 16 Apr 2025 14:32:57 +0200 Subject: [PATCH] Add a button to quickly clear all filters, correctly emit signals in filter tree when clearing. (#5835) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Lukas BrĂ¼bach --- .../visual_database_display_widget.cpp | 7 +++++++ .../visual_database_display_widget.h | 1 + cockatrice/src/game/filters/filter_tree.cpp | 1 + cockatrice/src/game/filters/filter_tree_model.cpp | 2 ++ 4 files changed, 11 insertions(+) diff --git a/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_widget.cpp b/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_widget.cpp index c87df9255..d1e4b2db5 100644 --- a/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_widget.cpp @@ -95,8 +95,14 @@ VisualDatabaseDisplayWidget::VisualDatabaseDisplayWidget(QWidget *parent, filterContainerLayout = new QHBoxLayout(filterContainer); filterContainer->setLayout(filterContainerLayout); + clearFilterWidget = new QToolButton(); + clearFilterWidget->setFixedSize(32, 32); + clearFilterWidget->setIcon(QPixmap("theme:icons/delete")); + connect(clearFilterWidget, &QToolButton::clicked, this, [this] { filterModel->clear(); }); + quickFilterSaveLoadWidget = new SettingsButtonWidget(this); quickFilterSaveLoadWidget->setButtonIcon(QPixmap("theme:icons/lock")); + saveLoadWidget = new VisualDatabaseDisplayFilterSaveLoadWidget(this, filterModel); quickFilterNameWidget = new SettingsButtonWidget(this); quickFilterNameWidget->setButtonIcon(QPixmap("theme:icons/rename")); @@ -122,6 +128,7 @@ VisualDatabaseDisplayWidget::VisualDatabaseDisplayWidget(QWidget *parent, filterContainerLayout->addWidget(quickFilterSetWidget); searchLayout->addWidget(colorFilterWidget); + searchLayout->addWidget(clearFilterWidget); searchLayout->addWidget(searchEdit); mainLayout->addWidget(searchContainer); diff --git a/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_widget.h b/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_widget.h index d516c9559..6d75698dc 100644 --- a/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_widget.h +++ b/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_widget.h @@ -69,6 +69,7 @@ protected slots: void updateSearch(const QString &search) const; private: + QToolButton *clearFilterWidget; QWidget *filterContainer; QHBoxLayout *filterContainerLayout; SettingsButtonWidget *quickFilterSaveLoadWidget; diff --git a/cockatrice/src/game/filters/filter_tree.cpp b/cockatrice/src/game/filters/filter_tree.cpp index 03c740742..170fb35d8 100644 --- a/cockatrice/src/game/filters/filter_tree.cpp +++ b/cockatrice/src/game/filters/filter_tree.cpp @@ -536,4 +536,5 @@ void FilterTree::clear() while (childCount() > 0) { deleteAt(0); } + emit changed(); } diff --git a/cockatrice/src/game/filters/filter_tree_model.cpp b/cockatrice/src/game/filters/filter_tree_model.cpp index e2c5edd13..ec98f7c98 100644 --- a/cockatrice/src/game/filters/filter_tree_model.cpp +++ b/cockatrice/src/game/filters/filter_tree_model.cpp @@ -316,5 +316,7 @@ bool FilterTreeModel::removeRows(int row, int count, const QModelIndex &parent) void FilterTreeModel::clear() { + emit layoutAboutToBeChanged(); fTree->clear(); + emit layoutChanged(); }