From dca2580746dcde773ccefe17f8b49289cf788c37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Tue, 15 Apr 2025 18:11:55 +0200 Subject: [PATCH] Add a button to quickly clear all filters, correctly emit signals in filter tree when clearing. --- .../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(); }