mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-13 17:44:48 -07:00
[VDD] Implement ExactMatch Name filter (#6409)
* [VDD] Implement ExactMatch Name filter Took 7 minutes Took 4 minutes * Update cockatrice/src/interface/widgets/visual_database_display/visual_database_display_name_filter_widget.cpp Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com> --------- Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de> Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>
This commit is contained in:
parent
2b690f8c87
commit
da70344547
5 changed files with 15 additions and 4 deletions
|
|
@ -51,7 +51,7 @@ VisualDatabaseDisplayNameFilterWidget::VisualDatabaseDisplayNameFilterWidget(QWi
|
||||||
|
|
||||||
void VisualDatabaseDisplayNameFilterWidget::retranslateUi()
|
void VisualDatabaseDisplayNameFilterWidget::retranslateUi()
|
||||||
{
|
{
|
||||||
searchBox->setPlaceholderText(tr("Filter by name..."));
|
searchBox->setPlaceholderText(tr("Filter by name... (Exact match)"));
|
||||||
loadFromDeckButton->setText(tr("Load from Deck"));
|
loadFromDeckButton->setText(tr("Load from Deck"));
|
||||||
loadFromDeckButton->setToolTip(tr("Apply all card names in currently loaded deck as exact match name filters"));
|
loadFromDeckButton->setToolTip(tr("Apply all card names in currently loaded deck as exact match name filters"));
|
||||||
loadFromClipboardButton->setText(tr("Load from Clipboard"));
|
loadFromClipboardButton->setText(tr("Load from Clipboard"));
|
||||||
|
|
@ -123,14 +123,14 @@ void VisualDatabaseDisplayNameFilterWidget::updateFilterModel()
|
||||||
{
|
{
|
||||||
// Clear existing name filters
|
// Clear existing name filters
|
||||||
emit filterModel->layoutAboutToBeChanged();
|
emit filterModel->layoutAboutToBeChanged();
|
||||||
filterModel->clearFiltersOfType(CardFilter::Attr::AttrName);
|
filterModel->clearFiltersOfType(CardFilter::Attr::AttrNameExact);
|
||||||
|
|
||||||
filterModel->blockSignals(true);
|
filterModel->blockSignals(true);
|
||||||
filterModel->filterTree()->blockSignals(true);
|
filterModel->filterTree()->blockSignals(true);
|
||||||
|
|
||||||
for (const auto &name : activeFilters.keys()) {
|
for (const auto &name : activeFilters.keys()) {
|
||||||
QString nameString = name;
|
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);
|
filterModel->blockSignals(false);
|
||||||
|
|
@ -146,7 +146,7 @@ void VisualDatabaseDisplayNameFilterWidget::updateFilterModel()
|
||||||
void VisualDatabaseDisplayNameFilterWidget::syncWithFilterModel()
|
void VisualDatabaseDisplayNameFilterWidget::syncWithFilterModel()
|
||||||
{
|
{
|
||||||
QStringList currentFilters;
|
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) {
|
if (filter->type() == CardFilter::Type::TypeOr) {
|
||||||
currentFilters.append(filter->term());
|
currentFilters.append(filter->term());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,8 @@ const QString CardFilter::attrName(Attr a)
|
||||||
switch (a) {
|
switch (a) {
|
||||||
case AttrName:
|
case AttrName:
|
||||||
return tr("Name");
|
return tr("Name");
|
||||||
|
case AttrNameExact:
|
||||||
|
return tr("Name (Exact)");
|
||||||
case AttrType:
|
case AttrType:
|
||||||
return tr("Type");
|
return tr("Type");
|
||||||
case AttrColor:
|
case AttrColor:
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ public:
|
||||||
AttrLoyalty,
|
AttrLoyalty,
|
||||||
AttrManaCost,
|
AttrManaCost,
|
||||||
AttrName,
|
AttrName,
|
||||||
|
AttrNameExact,
|
||||||
AttrPow,
|
AttrPow,
|
||||||
AttrRarity,
|
AttrRarity,
|
||||||
AttrSet,
|
AttrSet,
|
||||||
|
|
|
||||||
|
|
@ -153,6 +153,11 @@ bool FilterItem::acceptName(const CardInfoPtr info) const
|
||||||
return info->getName().contains(term, Qt::CaseInsensitive);
|
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
|
bool FilterItem::acceptType(const CardInfoPtr info) const
|
||||||
{
|
{
|
||||||
return info->getCardType().contains(term, Qt::CaseInsensitive);
|
return info->getCardType().contains(term, Qt::CaseInsensitive);
|
||||||
|
|
@ -401,6 +406,8 @@ bool FilterItem::acceptCardAttr(const CardInfoPtr info, CardFilter::Attr attr) c
|
||||||
switch (attr) {
|
switch (attr) {
|
||||||
case CardFilter::AttrName:
|
case CardFilter::AttrName:
|
||||||
return acceptName(info);
|
return acceptName(info);
|
||||||
|
case CardFilter::AttrNameExact:
|
||||||
|
return acceptNameExact(info);
|
||||||
case CardFilter::AttrType:
|
case CardFilter::AttrType:
|
||||||
return acceptType(info);
|
return acceptType(info);
|
||||||
case CardFilter::AttrColor:
|
case CardFilter::AttrColor:
|
||||||
|
|
|
||||||
|
|
@ -203,6 +203,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]] bool acceptName(CardInfoPtr info) const;
|
[[nodiscard]] bool acceptName(CardInfoPtr info) const;
|
||||||
|
[[nodiscard]] bool acceptNameExact(CardInfoPtr info) const;
|
||||||
[[nodiscard]] bool acceptType(CardInfoPtr info) const;
|
[[nodiscard]] bool acceptType(CardInfoPtr info) const;
|
||||||
[[nodiscard]] bool acceptMainType(CardInfoPtr info) const;
|
[[nodiscard]] bool acceptMainType(CardInfoPtr info) const;
|
||||||
[[nodiscard]] bool acceptSubType(CardInfoPtr info) const;
|
[[nodiscard]] bool acceptSubType(CardInfoPtr info) const;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue