diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_name_filter_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_name_filter_widget.cpp index 64eed8b16..28c4e5ab9 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_name_filter_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_name_filter_widget.cpp @@ -51,7 +51,7 @@ VisualDatabaseDisplayNameFilterWidget::VisualDatabaseDisplayNameFilterWidget(QWi void VisualDatabaseDisplayNameFilterWidget::retranslateUi() { - searchBox->setPlaceholderText(tr("Filter by name...")); + searchBox->setPlaceholderText(tr("Filter by name... (Exact match)")); loadFromDeckButton->setText(tr("Load from Deck")); loadFromDeckButton->setToolTip(tr("Apply all card names in currently loaded deck as exact match name filters")); loadFromClipboardButton->setText(tr("Load from Clipboard")); @@ -123,14 +123,14 @@ void VisualDatabaseDisplayNameFilterWidget::updateFilterModel() { // Clear existing name filters emit filterModel->layoutAboutToBeChanged(); - filterModel->clearFiltersOfType(CardFilter::Attr::AttrName); + filterModel->clearFiltersOfType(CardFilter::Attr::AttrNameExact); filterModel->blockSignals(true); filterModel->filterTree()->blockSignals(true); for (const auto &name : activeFilters.keys()) { QString nameString = name; - filterModel->addFilter(new CardFilter(nameString, CardFilter::Type::TypeOr, CardFilter::Attr::AttrName)); + filterModel->addFilter(new CardFilter(nameString, CardFilter::Type::TypeOr, CardFilter::Attr::AttrNameExact)); } filterModel->blockSignals(false); @@ -146,7 +146,7 @@ void VisualDatabaseDisplayNameFilterWidget::updateFilterModel() void VisualDatabaseDisplayNameFilterWidget::syncWithFilterModel() { QStringList currentFilters; - for (const auto &filter : filterModel->getFiltersOfType(CardFilter::Attr::AttrName)) { + for (const auto &filter : filterModel->getFiltersOfType(CardFilter::Attr::AttrNameExact)) { if (filter->type() == CardFilter::Type::TypeOr) { currentFilters.append(filter->term()); } diff --git a/libcockatrice_filters/libcockatrice/filters/filter_card.cpp b/libcockatrice_filters/libcockatrice/filters/filter_card.cpp index d49a1b9cb..5fdce7ae0 100644 --- a/libcockatrice_filters/libcockatrice/filters/filter_card.cpp +++ b/libcockatrice_filters/libcockatrice/filters/filter_card.cpp @@ -60,6 +60,8 @@ const QString CardFilter::attrName(Attr a) switch (a) { case AttrName: return tr("Name"); + case AttrNameExact: + return tr("Name (Exact)"); case AttrType: return tr("Type"); case AttrColor: diff --git a/libcockatrice_filters/libcockatrice/filters/filter_card.h b/libcockatrice_filters/libcockatrice/filters/filter_card.h index 4392a4630..732e43a09 100644 --- a/libcockatrice_filters/libcockatrice/filters/filter_card.h +++ b/libcockatrice_filters/libcockatrice/filters/filter_card.h @@ -33,6 +33,7 @@ public: AttrLoyalty, AttrManaCost, AttrName, + AttrNameExact, AttrPow, AttrRarity, AttrSet, diff --git a/libcockatrice_filters/libcockatrice/filters/filter_tree.cpp b/libcockatrice_filters/libcockatrice/filters/filter_tree.cpp index 89b772b8e..afb2d8563 100644 --- a/libcockatrice_filters/libcockatrice/filters/filter_tree.cpp +++ b/libcockatrice_filters/libcockatrice/filters/filter_tree.cpp @@ -153,6 +153,11 @@ bool FilterItem::acceptName(const CardInfoPtr info) const return info->getName().contains(term, Qt::CaseInsensitive); } +bool FilterItem::acceptNameExact(const CardInfoPtr info) const +{ + return info->getName() == term; +} + bool FilterItem::acceptType(const CardInfoPtr info) const { return info->getCardType().contains(term, Qt::CaseInsensitive); @@ -401,6 +406,8 @@ bool FilterItem::acceptCardAttr(const CardInfoPtr info, CardFilter::Attr attr) c switch (attr) { case CardFilter::AttrName: return acceptName(info); + case CardFilter::AttrNameExact: + return acceptNameExact(info); case CardFilter::AttrType: return acceptType(info); case CardFilter::AttrColor: diff --git a/libcockatrice_filters/libcockatrice/filters/filter_tree.h b/libcockatrice_filters/libcockatrice/filters/filter_tree.h index af91d2dbf..75d4241a5 100644 --- a/libcockatrice_filters/libcockatrice/filters/filter_tree.h +++ b/libcockatrice_filters/libcockatrice/filters/filter_tree.h @@ -203,6 +203,7 @@ public: } [[nodiscard]] bool acceptName(CardInfoPtr info) const; + [[nodiscard]] bool acceptNameExact(CardInfoPtr info) const; [[nodiscard]] bool acceptType(CardInfoPtr info) const; [[nodiscard]] bool acceptMainType(CardInfoPtr info) const; [[nodiscard]] bool acceptSubType(CardInfoPtr info) const;