diff --git a/cockatrice/CMakeLists.txt b/cockatrice/CMakeLists.txt index ca7912eaf..fbb779701 100644 --- a/cockatrice/CMakeLists.txt +++ b/cockatrice/CMakeLists.txt @@ -153,6 +153,7 @@ set(cockatrice_SOURCES src/dialogs/dlg_convert_deck_to_cod_format.cpp src/dialogs/dlg_create_game.cpp src/dialogs/dlg_create_token.cpp + src/dialogs/dlg_default_tags_editor.cpp src/dialogs/dlg_edit_avatar.cpp src/dialogs/dlg_edit_password.cpp src/dialogs/dlg_edit_tokens.cpp diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp index d446589d0..b77ebe7f7 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp @@ -154,16 +154,17 @@ void DeckPreviewDeckTagsDisplayWidget::openTagEditDlg() } } } else if (parentWidget()) { - // If we're the child of a TabDeckEditor, we are buried under a ton of childWidgets in the DeckInfoDock. + // If we're the child of an AbstractTabDeckEditor, we are buried under a ton of childWidgets in the + // DeckInfoDock. QWidget *currentParent = parentWidget(); while (currentParent) { - if (qobject_cast(currentParent)) { + if (qobject_cast(currentParent)) { break; } currentParent = currentParent->parentWidget(); } - if (qobject_cast(currentParent)) { - auto *deckEditor = qobject_cast(currentParent); + if (qobject_cast(currentParent)) { + auto *deckEditor = qobject_cast(currentParent); QStringList knownTags; QStringList allFiles = getAllFiles(SettingsCache::instance().getDeckPath()); DeckLoader loader; diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.cpp b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.cpp index 4d844f6f8..daf0cf745 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.cpp +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.cpp @@ -1,5 +1,7 @@ #include "deck_preview_tag_dialog.h" +#include "../../../../../dialogs/dlg_default_tags_editor.h" +#include "../../../../../settings/cache_settings.h" #include "deck_preview_tag_item_widget.h" #include @@ -8,92 +10,17 @@ #include #include #include +#include #include -DeckPreviewTagDialog::DeckPreviewTagDialog(const QStringList &knownTags, const QStringList &activeTags, QWidget *parent) - : QDialog(parent), activeTags(activeTags) +DeckPreviewTagDialog::DeckPreviewTagDialog(const QStringList &knownTags, + const QStringList &_activeTags, + QWidget *parent) + : QDialog(parent), activeTags(_activeTags), knownTags_(knownTags) { resize(400, 500); - QStringList defaultTags = { - // Strategies - "🏃ïļ Aggro", - "🧙‍ïļ Control", - "⚔ïļ Midrange", - "🌀 Combo", - "🊓 Mill", - "🔒 Stax", - "🗚ïļ Landfall", - "ðŸ›Ąïļ Pillowfort", - "ðŸŒą Ramp", - "⚡ Storm", - "💀 Aristocrats", - "☠ïļ Reanimator", - "ðŸ‘đ Sacrifice", - "ðŸ”Ĩ Burn", - "🌟 Lifegain", - "ðŸ”Ū Spellslinger", - "ðŸ‘Ĩ Tokens", - "🎭 Blink", - "âģ Time Manipulation", - "🌍 Domain", - "ðŸ’Ŧ Proliferate", - "📜 Saga", - "ðŸŽē Chaos", - "🊄 Auras", - "ðŸ”Ŧ Pingers", - - // Themes - "👑 Monarch", - "🚀 Vehicles", - "💉 Infect", - "ðŸĐļ Madness", - "🌀 Morph", - - // Card Types - "⚔ïļ Creature", - "💎 Artifact", - "🌔 Enchantment", - "📖 Sorcery", - "⚡ Instant", - "🌌 Planeswalker", - "🌏 Land", - "🊄 Aura", - - // Kindred Types - "🐉 Kindred", - "🧙 Humans", - "⚔ïļ Soldiers", - "ðŸ›Ąïļ Knights", - "ðŸŽŧ Bards", - "🧝 Elves", - "ðŸŒē Dryads", - "😇 Angels", - "ðŸŽĐ Wizards", - "🧛 Vampires", - "ðŸĶī Skeletons", - "💀 Zombies", - "ðŸ‘đ Demons", - "ðŸ‘ū Eldrazi", - "🐉 Dragons", - "🐠 Merfolk", - "ðŸĶ Cats", - "🐚 Wolves", - "🐚 Werewolves", - "ðŸĶ‡ Bats", - "🐀 Rats", - "ðŸĶ… Birds", - "ðŸĶ— Insects", - "🍄 Fungus", - "🐚 Sea Creatures", - "🐗 Boars", - "ðŸĶŠ Foxes", - "ðŸĶ„ Unicorns", - "🐘 Elephants", - "ðŸŧ Bears", - "ðŸĶ Rhinos", - "ðŸĶ‚ Scorpions", - }; + QStringList defaultTags = SettingsCache::instance().getVisualDeckStorageDefaultTagsList(); // Merge knownTags with defaultTags, ensuring no duplicates QStringList combinedTags = defaultTags + knownTags + activeTags; @@ -128,12 +55,23 @@ DeckPreviewTagDialog::DeckPreviewTagDialog(const QStringList &knownTags, const Q } // Add tag input layout - addTagLayout = new QHBoxLayout(this); + auto *addTagLayout = new QHBoxLayout(); newTagInput = new QLineEdit(this); addTagButton = new QPushButton(this); - addTagButton->setEnabled(false); + editButton = new QPushButton(this); + connect(editButton, &QPushButton::clicked, this, [this]() { + auto *editor = new DlgDefaultTagsEditor(this); + editor->setAttribute(Qt::WA_DeleteOnClose); + editor->setModal(true); + editor->show(); + QTimer::singleShot(0, editor, [editor]() { + editor->raise(); + editor->activateWindow(); + }); + }); addTagLayout->addWidget(newTagInput); addTagLayout->addWidget(addTagButton); + addTagLayout->addWidget(editButton); mainLayout->addLayout(addTagLayout); connect(addTagButton, &QPushButton::clicked, this, &DeckPreviewTagDialog::addTag); @@ -144,6 +82,7 @@ DeckPreviewTagDialog::DeckPreviewTagDialog(const QStringList &knownTags, const Q buttonLayout = new QHBoxLayout(this); okButton = new QPushButton(this); cancelButton = new QPushButton(this); + buttonLayout->addStretch(); buttonLayout->addWidget(okButton); buttonLayout->addWidget(cancelButton); @@ -151,6 +90,10 @@ DeckPreviewTagDialog::DeckPreviewTagDialog(const QStringList &knownTags, const Q connect(okButton, &QPushButton::clicked, this, &DeckPreviewTagDialog::accept); connect(cancelButton, &QPushButton::clicked, this, &DeckPreviewTagDialog::reject); + + connect(&SettingsCache::instance(), &SettingsCache::visualDeckStorageDefaultTagsListChanged, this, + &DeckPreviewTagDialog::refreshTagList); + retranslateUi(); } @@ -162,9 +105,31 @@ void DeckPreviewTagDialog::retranslateUi() addTagButton->setText(tr("Add Tag")); filterInput->setPlaceholderText(tr("Filter tags...")); okButton->setText(tr("OK")); + editButton->setText(tr("Edit default tags")); cancelButton->setText(tr("Cancel")); } +void DeckPreviewTagDialog::refreshTagList() +{ + // First, clear the current tags in the list view + tagListView->clear(); + + // Get the updated list of tags from SettingsCache + QStringList defaultTags = SettingsCache::instance().getVisualDeckStorageDefaultTagsList(); + QStringList combinedTags = defaultTags + knownTags_ + activeTags; + combinedTags.removeDuplicates(); + + // Re-populate the tag list view + for (const auto &tag : combinedTags) { + auto *item = new QListWidgetItem(tagListView); + auto *tagWidget = new DeckPreviewTagItemWidget(tag, activeTags.contains(tag), this); + tagListView->addItem(item); + tagListView->setItemWidget(item, tagWidget); + + connect(tagWidget->checkBox(), &QCheckBox::toggled, this, &DeckPreviewTagDialog::onCheckboxStateChanged); + } +} + QStringList DeckPreviewTagDialog::getActiveTags() const { return activeTags; diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.h b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.h index 9d6b5792b..cfb338dcb 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.h +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.h @@ -25,6 +25,7 @@ private slots: void addTag(); void onCheckboxStateChanged(); void retranslateUi(); + void refreshTagList(); private: QVBoxLayout *mainLayout; @@ -36,8 +37,10 @@ private: QPushButton *addTagButton; QHBoxLayout *buttonLayout; QPushButton *okButton; + QPushButton *editButton; QPushButton *cancelButton; QStringList activeTags; + QStringList knownTags_; }; #endif // DECK_PREVIEW_TAG_DIALOG_H diff --git a/cockatrice/src/dialogs/dlg_default_tags_editor.cpp b/cockatrice/src/dialogs/dlg_default_tags_editor.cpp new file mode 100644 index 000000000..fbd737d4a --- /dev/null +++ b/cockatrice/src/dialogs/dlg_default_tags_editor.cpp @@ -0,0 +1,149 @@ +#include "dlg_default_tags_editor.h" + +#include "../settings/cache_settings.h" + +#include +#include + +DlgDefaultTagsEditor::DlgDefaultTagsEditor(QWidget *parent) : QDialog(parent) +{ + mainLayout = new QVBoxLayout(this); + + // Input field + Add button (horizontal layout) + inputLayout = new QHBoxLayout(); + inputField = new QLineEdit(this); + addButton = new QPushButton(this); + inputLayout->addWidget(inputField); + inputLayout->addWidget(addButton); + mainLayout->addLayout(inputLayout); + + // List widget for tags + listWidget = new QListWidget(this); + listWidget->setSelectionMode(QAbstractItemView::SingleSelection); + listWidget->setEditTriggers(QAbstractItemView::DoubleClicked | QAbstractItemView::EditKeyPressed); + mainLayout->addWidget(listWidget); + + // Button layout (Confirm and Cancel) + buttonLayout = new QHBoxLayout(); + confirmButton = new QPushButton(this); + cancelButton = new QPushButton(this); + buttonLayout->addWidget(confirmButton); + buttonLayout->addWidget(cancelButton); + mainLayout->addLayout(buttonLayout); + + loadStringList(); + retranslateUi(); + + // Connect signals + connect(addButton, &QPushButton::clicked, this, &DlgDefaultTagsEditor::addItem); + connect(cancelButton, &QPushButton::clicked, this, &DlgDefaultTagsEditor::reject); // Cancel closes dialog + connect(confirmButton, &QPushButton::clicked, this, &DlgDefaultTagsEditor::confirmChanges); + connect(inputField, &QLineEdit::returnPressed, this, &DlgDefaultTagsEditor::addItem); +} + +void DlgDefaultTagsEditor::retranslateUi() +{ + setWindowTitle(tr("Edit Tags")); + addButton->setText(tr("Add")); + confirmButton->setText(tr("Confirm")); + cancelButton->setText(tr("Cancel")); + inputField->setPlaceholderText(tr("Enter a tag and press Enter")); +} + +void DlgDefaultTagsEditor::loadStringList() +{ + listWidget->clear(); + QStringList tags = SettingsCache::instance().getVisualDeckStorageDefaultTagsList(); + for (const QString &tag : tags) { + auto *item = new QListWidgetItem(); // Create item but don't insert yet + + QWidget *widget = new QWidget(this); + QHBoxLayout *layout = new QHBoxLayout(widget); + layout->setContentsMargins(2, 2, 2, 2); + layout->setSpacing(5); + + QLineEdit *lineEdit = new QLineEdit(tag, this); + lineEdit->setFrame(false); + lineEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + layout->addWidget(lineEdit); + + QPushButton *deleteButton = new QPushButton(tr("✖"), this); + deleteButton->setFixedSize(25, 25); + layout->addWidget(deleteButton); + + widget->setLayout(layout); + + // Set item height explicitly to match the widget (widgets get squished without it) + item->setSizeHint(widget->sizeHint()); + + listWidget->addItem(item); + listWidget->setItemWidget(item, widget); + + connect(deleteButton, &QPushButton::clicked, this, [this, item]() { deleteItem(item); }); + } +} + +void DlgDefaultTagsEditor::addItem() +{ + QString newTag = inputField->text().trimmed(); + if (newTag.isEmpty()) { + QMessageBox::warning(this, tr("Invalid Input"), tr("Tag name cannot be empty!")); + return; + } + + // Prevent duplicate tags + for (int i = 0; i < listWidget->count(); ++i) { + QWidget *widget = listWidget->itemWidget(listWidget->item(i)); + if (!widget) + continue; + QLineEdit *lineEdit = widget->findChild(); + if (lineEdit && lineEdit->text() == newTag) { + QMessageBox::warning(this, tr("Duplicate Tag"), tr("This tag already exists.")); + return; + } + } + + // Add new tag + auto *item = new QListWidgetItem(listWidget); + QWidget *widget = new QWidget(this); + QHBoxLayout *layout = new QHBoxLayout(widget); + layout->setContentsMargins(0, 0, 0, 0); + + // Editable tag label + QLineEdit *lineEdit = new QLineEdit(newTag, this); + lineEdit->setFrame(false); + layout->addWidget(lineEdit); + + // Delete button + QPushButton *deleteButton = new QPushButton(tr("✖"), this); + deleteButton->setFixedSize(24, 24); + layout->addWidget(deleteButton); + + widget->setLayout(layout); + listWidget->setItemWidget(item, widget); + + connect(deleteButton, &QPushButton::clicked, this, [this, item]() { deleteItem(item); }); + + inputField->clear(); +} + +void DlgDefaultTagsEditor::deleteItem(QListWidgetItem *item) +{ + delete listWidget->takeItem(listWidget->row(item)); +} + +void DlgDefaultTagsEditor::confirmChanges() +{ + QStringList updatedList; + for (int i = 0; i < listWidget->count(); ++i) { + QWidget *widget = listWidget->itemWidget(listWidget->item(i)); + if (!widget) + continue; + QLineEdit *lineEdit = widget->findChild(); + if (lineEdit) { + updatedList.append(lineEdit->text()); + } + } + SettingsCache::instance().setVisualDeckStorageDefaultTagsList(updatedList); + accept(); // Close dialog and confirm changes +} diff --git a/cockatrice/src/dialogs/dlg_default_tags_editor.h b/cockatrice/src/dialogs/dlg_default_tags_editor.h new file mode 100644 index 000000000..8dd58e018 --- /dev/null +++ b/cockatrice/src/dialogs/dlg_default_tags_editor.h @@ -0,0 +1,36 @@ +#ifndef DLG_DEFAULT_TAGS_EDITOR_H +#define DLG_DEFAULT_TAGS_EDITOR_H + +#include +#include +#include +#include +#include + +class DlgDefaultTagsEditor : public QDialog +{ + Q_OBJECT + +public: + explicit DlgDefaultTagsEditor(QWidget *parent = nullptr); + +private slots: + void addItem(); + void deleteItem(QListWidgetItem *item); + void confirmChanges(); + +private: + QVBoxLayout *mainLayout; + QHBoxLayout *inputLayout; + QListWidget *listWidget; + QHBoxLayout *buttonLayout; + QLineEdit *inputField; + QPushButton *addButton; + QPushButton *confirmButton; + QPushButton *cancelButton; + + void loadStringList(); + void retranslateUi(); +}; + +#endif // DLG_DEFAULT_TAGS_EDITOR_H diff --git a/cockatrice/src/settings/cache_settings.cpp b/cockatrice/src/settings/cache_settings.cpp index 8292f40df..a2c9fd2a1 100644 --- a/cockatrice/src/settings/cache_settings.cpp +++ b/cockatrice/src/settings/cache_settings.cpp @@ -276,6 +276,9 @@ SettingsCache::SettingsCache() visualDeckStorageSortingOrder = settings->value("interface/visualdeckstoragesortingorder", 0).toInt(); visualDeckStorageShowFolders = settings->value("interface/visualdeckstorageshowfolders", true).toBool(); visualDeckStorageShowTagFilter = settings->value("interface/visualdeckstorageshowtagfilter", true).toBool(); + visualDeckStorageDefaultTagsList = + settings->value("interface/visualdeckstoragedefaulttagslist", defaultTags).toStringList(); + visualDeckStorageSearchFolderNames = settings->value("interface/visualdeckstoragesearchfoldernames", true).toBool(); visualDeckStorageShowBannerCardComboBox = settings->value("interface/visualdeckstorageshowbannercardcombobox", true).toBool(); visualDeckStorageShowTagsOnDeckPreviews = @@ -742,6 +745,19 @@ void SettingsCache::setVisualDeckStorageShowTagFilter(QT_STATE_CHANGED_T _showTa emit visualDeckStorageShowTagFilterChanged(visualDeckStorageShowTagFilter); } +void SettingsCache::setVisualDeckStorageDefaultTagsList(QStringList _defaultTagsList) +{ + visualDeckStorageDefaultTagsList = _defaultTagsList; + settings->setValue("interface/visualdeckstoragedefaulttagslist", visualDeckStorageDefaultTagsList); + emit visualDeckStorageDefaultTagsListChanged(); +} + +void SettingsCache::setVisualDeckStorageSearchFolderNames(QT_STATE_CHANGED_T value) +{ + visualDeckStorageSearchFolderNames = value; + settings->setValue("interface/visualdeckstoragesearchfoldernames", visualDeckStorageSearchFolderNames); +} + void SettingsCache::setVisualDeckStorageShowBannerCardComboBox(QT_STATE_CHANGED_T _showBannerCardComboBox) { visualDeckStorageShowBannerCardComboBox = _showBannerCardComboBox; diff --git a/cockatrice/src/settings/cache_settings.h b/cockatrice/src/settings/cache_settings.h index dd8cade5b..aaf40edf8 100644 --- a/cockatrice/src/settings/cache_settings.h +++ b/cockatrice/src/settings/cache_settings.h @@ -42,6 +42,86 @@ constexpr int NETWORK_CACHE_SIZE_MAX = 1024 * 1024; // 1 TB #define DEFAULT_FONT_SIZE 12 +inline QStringList defaultTags = { + // Strategies + "🏃ïļ Aggro", + "🧙‍ïļ Control", + "⚔ïļ Midrange", + "🌀 Combo", + "🊓 Mill", + "🔒 Stax", + "🗚ïļ Landfall", + "ðŸ›Ąïļ Pillowfort", + "ðŸŒą Ramp", + "⚡ Storm", + "💀 Aristocrats", + "☠ïļ Reanimator", + "ðŸ‘đ Sacrifice", + "ðŸ”Ĩ Burn", + "🌟 Lifegain", + "ðŸ”Ū Spellslinger", + "ðŸ‘Ĩ Tokens", + "🎭 Blink", + "âģ Time Manipulation", + "🌍 Domain", + "ðŸ’Ŧ Proliferate", + "📜 Saga", + "ðŸŽē Chaos", + "🊄 Auras", + "ðŸ”Ŧ Pingers", + + // Themes + "👑 Monarch", + "🚀 Vehicles", + "💉 Infect", + "ðŸĐļ Madness", + "🌀 Morph", + + // Card Types + "⚔ïļ Creature", + "💎 Artifact", + "🌔 Enchantment", + "📖 Sorcery", + "⚡ Instant", + "🌌 Planeswalker", + "🌏 Land", + "🊄 Aura", + + // Kindred Types + "🐉 Kindred", + "🧙 Humans", + "⚔ïļ Soldiers", + "ðŸ›Ąïļ Knights", + "ðŸŽŧ Bards", + "🧝 Elves", + "ðŸŒē Dryads", + "😇 Angels", + "ðŸŽĐ Wizards", + "🧛 Vampires", + "ðŸĶī Skeletons", + "💀 Zombies", + "ðŸ‘đ Demons", + "ðŸ‘ū Eldrazi", + "🐉 Dragons", + "🐠 Merfolk", + "ðŸĶ Cats", + "🐚 Wolves", + "🐚 Werewolves", + "ðŸĶ‡ Bats", + "🐀 Rats", + "ðŸĶ… Birds", + "ðŸĶ— Insects", + "🍄 Fungus", + "🐚 Sea Creatures", + "🐗 Boars", + "ðŸĶŠ Foxes", + "ðŸĶ„ Unicorns", + "🐘 Elephants", + "ðŸŧ Bears", + "ðŸĶ Rhinos", + "ðŸĶ‚ Scorpions", +}; + class QSettings; class CardCounterSettings; @@ -66,6 +146,7 @@ signals: void deckEditorBannerCardComboBoxVisibleChanged(bool _visible); void deckEditorTagsWidgetVisibleChanged(bool _visible); void visualDeckStorageShowTagFilterChanged(bool _visible); + void visualDeckStorageDefaultTagsListChanged(); void visualDeckStorageShowBannerCardComboBoxChanged(bool _visible); void visualDeckStorageShowTagsOnDeckPreviewsChanged(bool _visible); void visualDeckStorageCardSizeChanged(); @@ -149,6 +230,8 @@ private: bool visualDeckStorageShowBannerCardComboBox; bool visualDeckStorageShowTagsOnDeckPreviews; bool visualDeckStorageShowTagFilter; + QStringList visualDeckStorageDefaultTagsList; + bool visualDeckStorageSearchFolderNames; int visualDeckStorageCardSize; bool visualDeckStorageDrawUnusedColorIdentities; int visualDeckStorageUnusedColorIdentitiesOpacity; @@ -460,6 +543,14 @@ public: { return visualDeckStorageShowTagFilter; } + QStringList getVisualDeckStorageDefaultTagsList() const + { + return visualDeckStorageDefaultTagsList; + } + bool getVisualDeckStorageSearchFolderNames() const + { + return visualDeckStorageSearchFolderNames; + } bool getVisualDeckStorageShowBannerCardComboBox() const { return visualDeckStorageShowBannerCardComboBox; @@ -857,6 +948,8 @@ public slots: void setVisualDeckStorageSortingOrder(int _visualDeckStorageSortingOrder); void setVisualDeckStorageShowFolders(QT_STATE_CHANGED_T value); void setVisualDeckStorageShowTagFilter(QT_STATE_CHANGED_T _showTags); + void setVisualDeckStorageDefaultTagsList(QStringList _defaultTagsList); + void setVisualDeckStorageSearchFolderNames(QT_STATE_CHANGED_T value); void setVisualDeckStorageShowBannerCardComboBox(QT_STATE_CHANGED_T _showBannerCardComboBox); void setVisualDeckStorageShowTagsOnDeckPreviews(QT_STATE_CHANGED_T _showTags); void setVisualDeckStorageCardSize(int _visualDeckStorageCardSize); diff --git a/dbconverter/src/mocks.cpp b/dbconverter/src/mocks.cpp index 601ba706d..150660d31 100644 --- a/dbconverter/src/mocks.cpp +++ b/dbconverter/src/mocks.cpp @@ -230,6 +230,12 @@ void SettingsCache::setVisualDeckStorageShowFolders(QT_STATE_CHANGED_T /* value void SettingsCache::setVisualDeckStorageShowTagFilter(QT_STATE_CHANGED_T /* _showTags */) { } +void SettingsCache::setVisualDeckStorageDefaultTagsList(QStringList /* _defaultTagsList */) +{ +} +void SettingsCache::setVisualDeckStorageSearchFolderNames(QT_STATE_CHANGED_T /* value */) +{ +} void SettingsCache::setVisualDeckStorageShowBannerCardComboBox(QT_STATE_CHANGED_T /* _showBannerCardComboBox */) { } diff --git a/tests/carddatabase/mocks.cpp b/tests/carddatabase/mocks.cpp index 157595d2b..9d1573856 100644 --- a/tests/carddatabase/mocks.cpp +++ b/tests/carddatabase/mocks.cpp @@ -234,6 +234,12 @@ void SettingsCache::setVisualDeckStorageShowFolders(QT_STATE_CHANGED_T /* value void SettingsCache::setVisualDeckStorageShowTagFilter(QT_STATE_CHANGED_T /* _showTags */) { } +void SettingsCache::setVisualDeckStorageDefaultTagsList(QStringList /* _defaultTagsList */) +{ +} +void SettingsCache::setVisualDeckStorageSearchFolderNames(QT_STATE_CHANGED_T /* value */) +{ +} void SettingsCache::setVisualDeckStorageShowBannerCardComboBox(QT_STATE_CHANGED_T /* _showBannerCardComboBox */) { }