diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.cpp index de817f59c..254a4344b 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.cpp @@ -2,6 +2,7 @@ #include "../../../filters/filter_tree_model.h" +#include #include #include #include @@ -14,6 +15,10 @@ VisualDatabaseDisplayFormatLegalityFilterWidget::VisualDatabaseDisplayFormatLega : QWidget(parent), filterModel(_filterModel) { allFormatsWithCount = CardDatabaseManager::query()->getAllFormatsWithCount(); + int maxValue = std::numeric_limits::min(); + for (int value : allFormatsWithCount) { + maxValue = std::max(maxValue, value); + } setMinimumWidth(300); setMaximumHeight(300); @@ -26,12 +31,23 @@ VisualDatabaseDisplayFormatLegalityFilterWidget::VisualDatabaseDisplayFormatLega flowWidget = new FlowWidget(this, Qt::Horizontal, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAsNeeded); layout->addWidget(flowWidget); + // Create a container for the threshold control + auto *thresholdLayout = new QHBoxLayout(); + thresholdLayout->setContentsMargins(0, 0, 0, 0); + + thresholdLabel = new QLabel(this); + thresholdLayout->addWidget(thresholdLabel); + // Create the spinbox spinBox = new QSpinBox(this); spinBox->setMinimum(1); - spinBox->setMaximum(getMaxMainTypeCount()); // Set the max value dynamically + spinBox->setMaximum(maxValue); // Set the max value dynamically spinBox->setValue(150); - layout->addWidget(spinBox); + thresholdLayout->addWidget(spinBox); + thresholdLayout->addStretch(); + + layout->addLayout(thresholdLayout); + connect(spinBox, qOverload(&QSpinBox::valueChanged), this, &VisualDatabaseDisplayFormatLegalityFilterWidget::updateFormatButtonsVisibility); @@ -53,6 +69,8 @@ VisualDatabaseDisplayFormatLegalityFilterWidget::VisualDatabaseDisplayFormatLega void VisualDatabaseDisplayFormatLegalityFilterWidget::retranslateUi() { + thresholdLabel->setText(tr("Show formats with at least:")); + spinBox->setSuffix(tr(" cards")); spinBox->setToolTip(tr("Do not display formats with less than this amount of cards in the database")); toggleButton->setToolTip(tr("Filter mode (AND/OR/NOT conjunctions of filters)")); } diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.h b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.h index 88bbdeb67..f2f443d39 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.h +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.h @@ -4,6 +4,7 @@ #include "../../../filters/filter_tree_model.h" #include "../general/layout_containers/flow_widget.h" +#include #include #include #include @@ -29,9 +30,11 @@ public: private: FilterTreeModel *filterModel; QMap allFormatsWithCount; - QSpinBox *spinBox; + QVBoxLayout *layout; FlowWidget *flowWidget; + QLabel *thresholdLabel; + QSpinBox *spinBox; QPushButton *toggleButton; // Mode switch button QMap activeFormats; // Track active filters diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.cpp index 703d63293..6c91228d1 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.cpp @@ -2,6 +2,7 @@ #include "../../../filters/filter_tree_model.h" +#include #include #include #include @@ -26,12 +27,23 @@ VisualDatabaseDisplayMainTypeFilterWidget::VisualDatabaseDisplayMainTypeFilterWi flowWidget = new FlowWidget(this, Qt::Horizontal, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAsNeeded); layout->addWidget(flowWidget); + // Create a container for the threshold control + auto *thresholdLayout = new QHBoxLayout(); + thresholdLayout->setContentsMargins(0, 0, 0, 0); + + thresholdLabel = new QLabel(this); + thresholdLayout->addWidget(thresholdLabel); + // Create the spinbox spinBox = new QSpinBox(this); spinBox->setMinimum(1); - spinBox->setMaximum(getMaxMainTypeCount()); // Set the max value dynamically + spinBox->setMaximum(getMaxMainTypeCount()); spinBox->setValue(150); - layout->addWidget(spinBox); + thresholdLayout->addWidget(spinBox); + thresholdLayout->addStretch(); + + layout->addLayout(thresholdLayout); + connect(spinBox, qOverload(&QSpinBox::valueChanged), this, &VisualDatabaseDisplayMainTypeFilterWidget::updateMainTypeButtonsVisibility); @@ -52,6 +64,8 @@ VisualDatabaseDisplayMainTypeFilterWidget::VisualDatabaseDisplayMainTypeFilterWi void VisualDatabaseDisplayMainTypeFilterWidget::retranslateUi() { + thresholdLabel->setText(tr("Show main types with at least:")); + spinBox->setSuffix(tr(" cards")); spinBox->setToolTip(tr("Do not display card main-types with less than this amount of cards in the database")); toggleButton->setToolTip(tr("Filter mode (AND/OR/NOT conjunctions of filters)")); } diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.h b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.h index f65a43a0a..03c6815f4 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.h +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.h @@ -10,6 +10,7 @@ #include "../../../filters/filter_tree_model.h" #include "../general/layout_containers/flow_widget.h" +#include #include #include #include @@ -34,9 +35,11 @@ public: private: FilterTreeModel *filterModel; QMap allMainCardTypesWithCount; - QSpinBox *spinBox; + QVBoxLayout *layout; FlowWidget *flowWidget; + QLabel *thresholdLabel; + QSpinBox *spinBox; QPushButton *toggleButton; // Mode switch button QMap activeMainTypes; // Track active filters diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_set_filter_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_set_filter_widget.cpp index dee89f06a..8423ca6fd 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_set_filter_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_set_filter_widget.cpp @@ -51,14 +51,6 @@ VisualDatabaseDisplaySetFilterWidget::VisualDatabaseDisplaySetFilterWidget(QWidg layout = new QVBoxLayout(this); setLayout(layout); - recentSetsSettingsWidget = new VisualDatabaseDisplayRecentSetFilterSettingsWidget(this); - layout->addWidget(recentSetsSettingsWidget); - - connect(&SettingsCache::instance(), &SettingsCache::visualDatabaseDisplayFilterToMostRecentSetsEnabledChanged, this, - &VisualDatabaseDisplaySetFilterWidget::filterToRecentSets); - connect(&SettingsCache::instance(), &SettingsCache::visualDatabaseDisplayFilterToMostRecentSetsAmountChanged, this, - &VisualDatabaseDisplaySetFilterWidget::filterToRecentSets); - searchBox = new QLineEdit(this); searchBox->setPlaceholderText(tr("Search sets...")); layout->addWidget(searchBox); @@ -68,6 +60,14 @@ VisualDatabaseDisplaySetFilterWidget::VisualDatabaseDisplaySetFilterWidget(QWidg flowWidget = new FlowWidget(this, Qt::Horizontal, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAsNeeded); layout->addWidget(flowWidget); + recentSetsSettingsWidget = new VisualDatabaseDisplayRecentSetFilterSettingsWidget(this); + layout->addWidget(recentSetsSettingsWidget); + + connect(&SettingsCache::instance(), &SettingsCache::visualDatabaseDisplayFilterToMostRecentSetsEnabledChanged, this, + &VisualDatabaseDisplaySetFilterWidget::filterToRecentSets); + connect(&SettingsCache::instance(), &SettingsCache::visualDatabaseDisplayFilterToMostRecentSetsAmountChanged, this, + &VisualDatabaseDisplaySetFilterWidget::filterToRecentSets); + // Create the toggle button for Exact Match/Includes mode toggleButton = new QPushButton(this); toggleButton->setCheckable(true); diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.cpp index b34bb65d3..5b790bf5d 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.cpp @@ -2,6 +2,7 @@ #include "../../../filters/filter_tree_model.h" +#include #include #include #include @@ -20,15 +21,6 @@ VisualDatabaseDisplaySubTypeFilterWidget::VisualDatabaseDisplaySubTypeFilterWidg layout = new QVBoxLayout(this); setLayout(layout); - // Create and setup the spinbox - spinBox = new QSpinBox(this); - spinBox->setMinimum(1); - spinBox->setMaximum(getMaxSubTypeCount()); - spinBox->setValue(150); - layout->addWidget(spinBox); - connect(spinBox, qOverload(&QSpinBox::valueChanged), this, - &VisualDatabaseDisplaySubTypeFilterWidget::updateSubTypeButtonsVisibility); - // Create search box searchBox = new QLineEdit(this); searchBox->setPlaceholderText(tr("Search subtypes...")); @@ -40,6 +32,26 @@ VisualDatabaseDisplaySubTypeFilterWidget::VisualDatabaseDisplaySubTypeFilterWidg flowWidget->setMaximumHeight(300); layout->addWidget(flowWidget); + // Create a container for the threshold control + auto *thresholdLayout = new QHBoxLayout(); + thresholdLayout->setContentsMargins(0, 0, 0, 0); + + thresholdLabel = new QLabel(this); + thresholdLayout->addWidget(thresholdLabel); + + // Create the spinbox + spinBox = new QSpinBox(this); + spinBox->setMinimum(1); + spinBox->setMaximum(getMaxSubTypeCount()); + spinBox->setValue(150); + thresholdLayout->addWidget(spinBox); + thresholdLayout->addStretch(); + + layout->addLayout(thresholdLayout); + + connect(spinBox, qOverload(&QSpinBox::valueChanged), this, + &VisualDatabaseDisplaySubTypeFilterWidget::updateSubTypeButtonsVisibility); + // Toggle button setup (Exact Match / Includes mode) toggleButton = new QPushButton(this); toggleButton->setCheckable(true); @@ -57,6 +69,8 @@ VisualDatabaseDisplaySubTypeFilterWidget::VisualDatabaseDisplaySubTypeFilterWidg void VisualDatabaseDisplaySubTypeFilterWidget::retranslateUi() { + thresholdLabel->setText(tr("Show sub types with at least:")); + spinBox->setSuffix(tr(" cards")); spinBox->setToolTip(tr("Do not display card sub-types with less than this amount of cards in the database")); toggleButton->setToolTip(tr("Filter mode (AND/OR/NOT conjunctions of filters)")); } diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.h b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.h index c02db29be..8b0267413 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.h +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.h @@ -10,6 +10,7 @@ #include "../../../filters/filter_tree_model.h" #include "../general/layout_containers/flow_widget.h" +#include #include #include #include @@ -33,10 +34,12 @@ public: private: FilterTreeModel *filterModel; QMap allSubCardTypesWithCount; - QSpinBox *spinBox; + QVBoxLayout *layout; QLineEdit *searchBox; FlowWidget *flowWidget; + QLabel *thresholdLabel; + QSpinBox *spinBox; QPushButton *toggleButton; // Mode switch button QMap activeSubTypes; // Track active filters