Block signals on every filter, which theoretically, should make it so that strain doesn't increase proportionally with filter amount.

This commit is contained in:
Lukas Brübach 2025-04-07 12:42:10 +02:00
parent d45310191f
commit f08bd6aac4
4 changed files with 43 additions and 0 deletions

View file

@ -1,5 +1,6 @@
#include "visual_database_display_color_filter_widget.h"
#include "../../../../game/filters/filter_tree.h"
#include "../cards/additional_info/mana_symbol_widget.h"
#include <QSet>
@ -99,6 +100,8 @@ void VisualDatabaseDisplayColorFilterWidget::updateColorFilter()
blockSync = true;
// Clear previous filters
filterModel->blockSignals(true);
filterModel->filterTree()->blockSignals(true);
filterModel->clearFiltersOfType(CardFilter::Attr::AttrColor);
QSet<QString> selectedColors;
@ -160,6 +163,13 @@ void VisualDatabaseDisplayColorFilterWidget::updateColorFilter()
break;
}
filterModel->blockSignals(false);
filterModel->filterTree()->blockSignals(false);
if (filterModel->filterTree()->nodeAt(0)) {
filterModel->filterTree()->nodeAt(0)->nodeChanged();
}
emit filterModel->layoutChanged();
blockSync = false;
}

View file

@ -1,6 +1,7 @@
#include "visual_database_display_main_type_filter_widget.h"
#include "../../../../game/cards/card_database_manager.h"
#include "../../../../game/filters/filter_tree.h"
#include "../../../../game/filters/filter_tree_model.h"
#include <QPushButton>
@ -102,6 +103,8 @@ void VisualDatabaseDisplayMainTypeFilterWidget::handleMainTypeToggled(const QStr
void VisualDatabaseDisplayMainTypeFilterWidget::updateMainTypeFilter()
{
// Clear existing filters related to main type
filterModel->blockSignals(true);
filterModel->filterTree()->blockSignals(true);
filterModel->clearFiltersOfType(CardFilter::Attr::AttrMainType);
if (exactMatchMode) {
@ -140,6 +143,14 @@ void VisualDatabaseDisplayMainTypeFilterWidget::updateMainTypeFilter()
}
}
}
filterModel->blockSignals(false);
filterModel->filterTree()->blockSignals(false);
if (filterModel->filterTree()->nodeAt(0)) {
filterModel->filterTree()->nodeAt(0)->nodeChanged();
}
emit filterModel->layoutChanged();
}
void VisualDatabaseDisplayMainTypeFilterWidget::updateFilterMode(bool checked)

View file

@ -1,6 +1,7 @@
#include "visual_database_display_set_filter_widget.h"
#include "../../../../game/cards/card_database_manager.h"
#include "../../../../game/filters/filter_tree.h"
#include "../../../../game/filters/filter_tree_model.h"
#include <QLineEdit>
@ -48,6 +49,9 @@ void VisualDatabaseDisplaySetFilterWidget::createSetButtons()
std::sort(shared_pointerses.begin(), shared_pointerses.end(),
[](const auto &a, const auto &b) { return a->getReleaseDate() > b->getReleaseDate(); });
int setsToPreactivate = 10;
int setsActivated = 0;
for (const auto &shared_pointer : shared_pointerses) {
QString shortName = shared_pointer->getShortName();
QString longName = shared_pointer->getLongName();
@ -63,7 +67,13 @@ void VisualDatabaseDisplaySetFilterWidget::createSetButtons()
// Connect toggle signal
connect(button, &QPushButton::toggled, this,
[this, shortName](bool checked) { handleSetToggled(shortName, checked); });
if (setsActivated < setsToPreactivate) {
setsActivated++;
activeSets[shortName] = true;
button->setChecked(true);
}
}
updateSetFilter();
updateSetButtonsVisibility(); // Ensure visibility is updated initially
}
@ -95,6 +105,8 @@ void VisualDatabaseDisplaySetFilterWidget::handleSetToggled(const QString &setSh
void VisualDatabaseDisplaySetFilterWidget::updateSetFilter()
{
// Clear existing filters related to sets
filterModel->blockSignals(true);
filterModel->filterTree()->blockSignals(true);
filterModel->clearFiltersOfType(CardFilter::Attr::AttrSet);
if (exactMatchMode) {
@ -131,6 +143,13 @@ void VisualDatabaseDisplaySetFilterWidget::updateSetFilter()
}
}
}
filterModel->blockSignals(false);
filterModel->filterTree()->blockSignals(false);
if (filterModel->filterTree()->nodeAt(0)) {
filterModel->filterTree()->nodeAt(0)->nodeChanged();
}
emit filterModel->layoutChanged();
}
void VisualDatabaseDisplaySetFilterWidget::syncWithFilterModel()

View file

@ -110,6 +110,7 @@ void VisualDatabaseDisplaySubTypeFilterWidget::handleSubTypeToggled(const QStrin
void VisualDatabaseDisplaySubTypeFilterWidget::updateSubTypeFilter()
{
filterModel->blockSignals(true);
// Clear existing filters related to sub types
filterModel->clearFiltersOfType(CardFilter::Attr::AttrSubType);
@ -149,6 +150,8 @@ void VisualDatabaseDisplaySubTypeFilterWidget::updateSubTypeFilter()
}
}
}
filterModel->blockSignals(false);
emit filterModel->layoutChanged();
}
void VisualDatabaseDisplaySubTypeFilterWidget::updateFilterMode(bool checked)