From 13d906f0cfed3b8dc01a108dcc4f34b00d31d55e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Mon, 12 Jan 2026 11:43:09 +0100 Subject: [PATCH] [VDD] Use Font Awesome Icons Took 49 minutes Took 5 seconds --- cockatrice/cockatrice.qrc | 7 +++ .../resources/icons/circle_half_stroke.svg | 1 + cockatrice/resources/icons/dragon.svg | 1 + cockatrice/resources/icons/floppy_disk.svg | 1 + cockatrice/resources/icons/gear.svg | 1 + cockatrice/resources/icons/pen_to_square.svg | 1 + cockatrice/resources/icons/scale_balanced.svg | 1 + cockatrice/resources/icons/scroll.svg | 1 + ...l_database_display_color_filter_widget.cpp | 56 +++++++++---------- ...ual_database_display_color_filter_widget.h | 6 +- ...database_display_filter_toolbar_widget.cpp | 15 ++--- 11 files changed, 52 insertions(+), 39 deletions(-) create mode 100644 cockatrice/resources/icons/circle_half_stroke.svg create mode 100644 cockatrice/resources/icons/dragon.svg create mode 100644 cockatrice/resources/icons/floppy_disk.svg create mode 100644 cockatrice/resources/icons/gear.svg create mode 100644 cockatrice/resources/icons/pen_to_square.svg create mode 100644 cockatrice/resources/icons/scale_balanced.svg create mode 100644 cockatrice/resources/icons/scroll.svg diff --git a/cockatrice/cockatrice.qrc b/cockatrice/cockatrice.qrc index 0f7bca2f1..6e90d342d 100644 --- a/cockatrice/cockatrice.qrc +++ b/cockatrice/cockatrice.qrc @@ -15,18 +15,23 @@ resources/icons/arrow_top_green.svg resources/icons/arrow_up_green.svg resources/icons/arrow_undo.svg + resources/icons/circle_half_stroke.svg resources/icons/clearsearch.svg resources/icons/cogwheel.svg resources/icons/conceded.svg resources/icons/decrement.svg resources/icons/delete.svg + resources/icons/dragon.svg resources/icons/dropdown_collapsed.svg resources/icons/dropdown_expanded.svg + resources/icons/floppy_disk.svg resources/icons/forgot_password.svg + resources/icons/gear.svg resources/icons/increment.svg resources/icons/info.svg resources/icons/lock.svg resources/icons/not_ready_start.svg + resources/icons/pen_to_square.svg resources/icons/pencil.svg resources/icons/pin.svg resources/icons/player.svg @@ -34,7 +39,9 @@ resources/icons/reload.svg resources/icons/remove_row.svg resources/icons/rename.svg + resources/icons/scale_balanced.svg resources/icons/scales.svg + resources/icons/scroll.svg resources/icons/search.svg resources/icons/settings.svg resources/icons/share.svg diff --git a/cockatrice/resources/icons/circle_half_stroke.svg b/cockatrice/resources/icons/circle_half_stroke.svg new file mode 100644 index 000000000..42e4dbca2 --- /dev/null +++ b/cockatrice/resources/icons/circle_half_stroke.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cockatrice/resources/icons/dragon.svg b/cockatrice/resources/icons/dragon.svg new file mode 100644 index 000000000..f45af39ef --- /dev/null +++ b/cockatrice/resources/icons/dragon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cockatrice/resources/icons/floppy_disk.svg b/cockatrice/resources/icons/floppy_disk.svg new file mode 100644 index 000000000..3c5b5054d --- /dev/null +++ b/cockatrice/resources/icons/floppy_disk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cockatrice/resources/icons/gear.svg b/cockatrice/resources/icons/gear.svg new file mode 100644 index 000000000..fdee3a297 --- /dev/null +++ b/cockatrice/resources/icons/gear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cockatrice/resources/icons/pen_to_square.svg b/cockatrice/resources/icons/pen_to_square.svg new file mode 100644 index 000000000..60ff1d9c4 --- /dev/null +++ b/cockatrice/resources/icons/pen_to_square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cockatrice/resources/icons/scale_balanced.svg b/cockatrice/resources/icons/scale_balanced.svg new file mode 100644 index 000000000..fae468d38 --- /dev/null +++ b/cockatrice/resources/icons/scale_balanced.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cockatrice/resources/icons/scroll.svg b/cockatrice/resources/icons/scroll.svg new file mode 100644 index 000000000..f4828e679 --- /dev/null +++ b/cockatrice/resources/icons/scroll.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.cpp index 3ca709071..57c6da762 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.cpp @@ -31,12 +31,12 @@ VisualDatabaseDisplayColorFilterWidget::VisualDatabaseDisplayColorFilterWidget(Q &VisualDatabaseDisplayColorFilterWidget::handleColorToggled); } - toggleButton = new QPushButton(this); - toggleButton->setCheckable(true); - layout->addWidget(toggleButton); + modeComboBox = new QComboBox(this); + layout->addWidget(modeComboBox); + + connect(modeComboBox, QOverload::of(&QComboBox::currentIndexChanged), this, + &VisualDatabaseDisplayColorFilterWidget::updateFilterMode); - // Connect the button's toggled signal - connect(toggleButton, &QPushButton::toggled, this, &VisualDatabaseDisplayColorFilterWidget::updateFilterMode); connect(filterModel, &FilterTreeModel::layoutChanged, this, [this]() { QTimer::singleShot(100, this, &VisualDatabaseDisplayColorFilterWidget::syncWithFilterModel); }); @@ -46,19 +46,22 @@ VisualDatabaseDisplayColorFilterWidget::VisualDatabaseDisplayColorFilterWidget(Q void VisualDatabaseDisplayColorFilterWidget::retranslateUi() { - switch (currentMode) { - case FilterMode::ExactMatch: - toggleButton->setText(tr("Mode: Exact Match")); - break; - case FilterMode::Includes: - toggleButton->setText(tr("Mode: Includes")); - break; - case FilterMode::IncludeExclude: - toggleButton->setText(tr("Mode: Include/Exclude")); - break; + modeComboBox->blockSignals(true); + modeComboBox->clear(); + + modeComboBox->addItem(tr("Exact match"), QVariant::fromValue(FilterMode::ExactMatch)); + modeComboBox->addItem(tr("Includes"), QVariant::fromValue(FilterMode::Includes)); + modeComboBox->addItem(tr("Include / Exclude"), QVariant::fromValue(FilterMode::IncludeExclude)); + + modeComboBox->setToolTip(tr("How selected and unselected colors are combined in the filter")); + + // Restore current mode + const int index = modeComboBox->findData(QVariant::fromValue(currentMode)); + if (index >= 0) { + modeComboBox->setCurrentIndex(index); } - toggleButton->setToolTip(tr("Filter mode (AND/OR/NOT conjunctions of filters)")); + modeComboBox->blockSignals(false); } void VisualDatabaseDisplayColorFilterWidget::handleColorToggled(QChar color, bool active) @@ -145,24 +148,19 @@ void VisualDatabaseDisplayColorFilterWidget::removeFilter(QChar color) void VisualDatabaseDisplayColorFilterWidget::updateFilterMode() { - switch (currentMode) { - case FilterMode::ExactMatch: - currentMode = FilterMode::Includes; // Switch to Includes - break; - case FilterMode::Includes: - currentMode = FilterMode::IncludeExclude; // Switch to Include/Exclude - break; - case FilterMode::IncludeExclude: - currentMode = FilterMode::ExactMatch; // Switch to Exact Match - break; + const QVariant data = modeComboBox->currentData(); + if (!data.isValid()) { + return; } + currentMode = data.value(); + filterModel->blockSignals(true); filterModel->filterTree()->blockSignals(true); filterModel->clearFiltersOfType(CardFilter::Attr::AttrColor); - QList manaSymbolWidgets = findChildren(); + const QList manaSymbolWidgets = findChildren(); for (ManaSymbolWidget *manaSymbolWidget : manaSymbolWidgets) { handleColorToggled(manaSymbolWidget->getSymbolChar(), manaSymbolWidget->isColorActive()); @@ -173,9 +171,7 @@ void VisualDatabaseDisplayColorFilterWidget::updateFilterMode() emit filterModel->filterTree()->changed(); emit filterModel->layoutChanged(); - - retranslateUi(); // Update button text based on the mode - emit filterModeChanged(currentMode); // Signal mode change + emit filterModeChanged(currentMode); } void VisualDatabaseDisplayColorFilterWidget::setManaSymbolActive(QChar color, bool active) diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.h b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.h index 7b4c365c0..698ea9e97 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.h +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.h @@ -9,8 +9,8 @@ #include "../../../filters/filter_tree_model.h" +#include #include -#include #include class VisualDatabaseDisplayColorFilterCircleWidget : public QWidget @@ -39,6 +39,8 @@ enum class FilterMode IncludeExclude // Include selected colors (OR) and exclude unselected colors (AND NOT). }; +Q_DECLARE_METATYPE(FilterMode) + class VisualDatabaseDisplayColorFilterWidget : public QWidget { Q_OBJECT @@ -62,7 +64,7 @@ private slots: private: FilterTreeModel *filterModel; QHBoxLayout *layout; - QPushButton *toggleButton; + QComboBox *modeComboBox; FilterMode currentMode = FilterMode::Includes; // Default mode }; diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.cpp index 1509dbaa7..28fb46c6c 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.cpp @@ -53,27 +53,27 @@ VisualDatabaseDisplayFilterToolbarWidget::VisualDatabaseDisplayFilterToolbarWidg }); quickFilterSaveLoadWidget = new SettingsButtonWidget(this); - quickFilterSaveLoadWidget->setButtonIcon(QPixmap("theme:icons/lock")); + quickFilterSaveLoadWidget->setButtonIcon(QPixmap("theme:icons/floppy_disk")); quickFilterSaveLoadWidget->setButtonText("Save/Load"); quickFilterNameWidget = new SettingsButtonWidget(this); - quickFilterNameWidget->setButtonIcon(QPixmap("theme:icons/rename")); + quickFilterNameWidget->setButtonIcon(QPixmap("theme:icons/pen_to_square")); quickFilterNameWidget->setButtonText("Name"); quickFilterMainTypeWidget = new SettingsButtonWidget(this); - quickFilterMainTypeWidget->setButtonIcon(QPixmap("theme:icons/player")); + quickFilterMainTypeWidget->setButtonIcon(QPixmap("theme:icons/circle_half_stroke")); quickFilterMainTypeWidget->setButtonText("Main Type"); quickFilterSubTypeWidget = new SettingsButtonWidget(this); - quickFilterSubTypeWidget->setButtonIcon(QPixmap("theme:icons/player")); + quickFilterSubTypeWidget->setButtonIcon(QPixmap("theme:icons/dragon")); quickFilterSubTypeWidget->setButtonText("Sub Type"); quickFilterSetWidget = new SettingsButtonWidget(this); - quickFilterSetWidget->setButtonIcon(QPixmap("theme:icons/scales")); + quickFilterSetWidget->setButtonIcon(QPixmap("theme:icons/scroll")); quickFilterSetWidget->setButtonText("Sets"); quickFilterFormatLegalityWidget = new SettingsButtonWidget(this); - quickFilterFormatLegalityWidget->setButtonIcon(QPixmap("theme:icons/player")); + quickFilterFormatLegalityWidget->setButtonIcon(QPixmap("theme:icons/scale_balanced")); quickFilterFormatLegalityWidget->setButtonText("Formats"); retranslateUi(); @@ -110,12 +110,13 @@ void VisualDatabaseDisplayFilterToolbarWidget::initialize() filterContainerLayout->addWidget(sortColumnCombo); filterContainerLayout->addWidget(sortOrderCombo); filterContainerLayout->addWidget(filterByLabel); - filterContainerLayout->addWidget(quickFilterSaveLoadWidget); filterContainerLayout->addWidget(quickFilterNameWidget); filterContainerLayout->addWidget(quickFilterMainTypeWidget); filterContainerLayout->addWidget(quickFilterSubTypeWidget); filterContainerLayout->addWidget(quickFilterSetWidget); filterContainerLayout->addWidget(quickFilterFormatLegalityWidget); + filterContainerLayout->addStretch(); + filterContainerLayout->addWidget(quickFilterSaveLoadWidget); } void VisualDatabaseDisplayFilterToolbarWidget::retranslateUi()