[Card] Rename CardSearchLanguage to SearchLanguageMode

This commit is contained in:
Lukas Brübach 2026-09-20 23:53:43 +02:00
parent 04f77bd9f7
commit ad8ebde2a1
21 changed files with 72 additions and 72 deletions

View file

@ -50,7 +50,7 @@ static std::once_flag init;
struct DeckSearchLanguageContext struct DeckSearchLanguageContext
{ {
QString searchLanguage; QString searchLanguage;
CardSearchLanguage searchLanguageMode = CardSearchLanguage::English; SearchLanguageMode searchLanguageMode = SearchLanguageMode::English;
}; };
thread_local DeckSearchLanguageContext deckSearchLanguageContext; thread_local DeckSearchLanguageContext deckSearchLanguageContext;
@ -128,7 +128,7 @@ static void setupParserRules()
// actual functionality // actual functionality
search["DeckContentQuery"] = [](const peg::SemanticValues &sv) -> DeckFilter { search["DeckContentQuery"] = [](const peg::SemanticValues &sv) -> DeckFilter {
const QString searchLanguage = deckSearchLanguageContext.searchLanguage; const QString searchLanguage = deckSearchLanguageContext.searchLanguage;
const CardSearchLanguage searchLanguageMode = deckSearchLanguageContext.searchLanguageMode; const SearchLanguageMode searchLanguageMode = deckSearchLanguageContext.searchLanguageMode;
auto cardFilter = FilterString(std::any_cast<QString>(sv[0]), searchLanguage, searchLanguageMode); auto cardFilter = FilterString(std::any_cast<QString>(sv[0]), searchLanguage, searchLanguageMode);
auto numberMatcher = sv.size() > 1 ? std::any_cast<NumberMatcher>(sv[1]) : [](int count) { return count > 0; }; auto numberMatcher = sv.size() > 1 ? std::any_cast<NumberMatcher>(sv[1]) : [](int count) { return count > 0; };
@ -201,7 +201,7 @@ DeckFilterString::DeckFilterString()
DeckFilterString::DeckFilterString(const QString &expr, DeckFilterString::DeckFilterString(const QString &expr,
const QString &searchLanguage, const QString &searchLanguage,
CardSearchLanguage searchLanguageMode) SearchLanguageMode searchLanguageMode)
{ {
QByteArray ba = expr.simplified().toUtf8(); QByteArray ba = expr.simplified().toUtf8();

View file

@ -38,7 +38,7 @@ public:
DeckFilterString(); DeckFilterString();
explicit DeckFilterString(const QString &expr, explicit DeckFilterString(const QString &expr,
const QString &searchLanguage = QString(), const QString &searchLanguage = QString(),
CardSearchLanguage searchLanguageMode = CardSearchLanguage::English); SearchLanguageMode searchLanguageMode = SearchLanguageMode::English);
bool check(const DeckSearchData &data) const bool check(const DeckSearchData &data) const
{ {
return filter(data); return filter(data);

View file

@ -93,7 +93,7 @@ DlgCreateToken::DlgCreateToken(const QStringList &_predefinedTokens, QWidget *pa
CardsDisplaySettings *cardsDisplay = &SettingsCache::instance().cardsDisplay(); CardsDisplaySettings *cardsDisplay = &SettingsCache::instance().cardsDisplay();
const auto applyCardSearchLanguage = [this, cardsDisplay]() { const auto applyCardSearchLanguage = [this, cardsDisplay]() {
cardDatabaseDisplayModel->setSearchLanguage( cardDatabaseDisplayModel->setSearchLanguage(
cardsDisplay->getCardLang(), static_cast<CardSearchLanguage>(cardsDisplay->getCardSearchLanguage())); cardsDisplay->getCardLang(), static_cast<SearchLanguageMode>(cardsDisplay->getCardSearchLanguage()));
}; };
applyCardSearchLanguage(); applyCardSearchLanguage();
connect(cardsDisplay, &CardsDisplaySettings::cardLangChanged, this, applyCardSearchLanguage); connect(cardsDisplay, &CardsDisplaySettings::cardLangChanged, this, applyCardSearchLanguage);

View file

@ -258,7 +258,7 @@ void ZoneViewZone::setFilterString(const QString &_filterString)
{ {
const CardsDisplaySettings &cardsDisplay = SettingsCache::instance().cardsDisplay(); const CardsDisplaySettings &cardsDisplay = SettingsCache::instance().cardsDisplay();
filterString = FilterString(_filterString, cardsDisplay.getCardLang(), filterString = FilterString(_filterString, cardsDisplay.getCardLang(),
static_cast<CardSearchLanguage>(cardsDisplay.getCardSearchLanguage())); static_cast<SearchLanguageMode>(cardsDisplay.getCardSearchLanguage()));
reorganizeCards(); reorganizeCards();
} }

View file

@ -45,7 +45,7 @@ DeckEditorDatabaseDisplayWidget::DeckEditorDatabaseDisplayWidget(QWidget *parent
CardsDisplaySettings *cardsDisplay = &SettingsCache::instance().cardsDisplay(); CardsDisplaySettings *cardsDisplay = &SettingsCache::instance().cardsDisplay();
const auto applyCardSearchLanguage = [this, cardsDisplay]() { const auto applyCardSearchLanguage = [this, cardsDisplay]() {
databaseDisplayModel->setSearchLanguage(cardsDisplay->getCardLang(), databaseDisplayModel->setSearchLanguage(cardsDisplay->getCardLang(),
static_cast<CardSearchLanguage>(cardsDisplay->getCardSearchLanguage())); static_cast<SearchLanguageMode>(cardsDisplay->getCardSearchLanguage()));
}; };
applyCardSearchLanguage(); applyCardSearchLanguage();
connect(cardsDisplay, &CardsDisplaySettings::cardLangChanged, this, applyCardSearchLanguage); connect(cardsDisplay, &CardsDisplaySettings::cardLangChanged, this, applyCardSearchLanguage);

View file

@ -68,7 +68,7 @@ GeneralSettingsPage::GeneralSettingsPage()
cardSearchLanguageBox.addItem(""); cardSearchLanguageBox.addItem("");
cardSearchLanguageBox.addItem(""); cardSearchLanguageBox.addItem("");
const int cardSearchLanguageIndex = SettingsCache::instance().cardsDisplay().getCardSearchLanguage(); const int cardSearchLanguageIndex = SettingsCache::instance().cardsDisplay().getCardSearchLanguage();
cardSearchLanguageBox.setCurrentIndex(cardSearchLanguageIndex < 0 ? static_cast<int>(CardSearchLanguage::English) cardSearchLanguageBox.setCurrentIndex(cardSearchLanguageIndex < 0 ? static_cast<int>(SearchLanguageMode::English)
: cardSearchLanguageIndex); : cardSearchLanguageIndex);
connect(&cardSearchLanguageBox, qOverload<int>(&QComboBox::currentIndexChanged), this, connect(&cardSearchLanguageBox, qOverload<int>(&QComboBox::currentIndexChanged), this,
@ -521,10 +521,10 @@ void GeneralSettingsPage::retranslateUi()
cardLanguageNoteLabel.setText( cardLanguageNoteLabel.setText(
tr("Foreign card names, text and art apply after you update the card database (Oracle).")); tr("Foreign card names, text and art apply after you update the card database (Oracle)."));
cardSearchLanguageLabel.setText(tr("Language used in card search:")); cardSearchLanguageLabel.setText(tr("Language used in card search:"));
cardSearchLanguageBox.setItemText(static_cast<int>(CardSearchLanguage::English), tr("English")); cardSearchLanguageBox.setItemText(static_cast<int>(SearchLanguageMode::English), tr("English"));
cardSearchLanguageBox.setItemText(static_cast<int>(CardSearchLanguage::Selected), cardSearchLanguageBox.setItemText(static_cast<int>(SearchLanguageMode::Selected),
tr("Selected card language (untranslated cards still match in English)")); tr("Selected card language (untranslated cards still match in English)"));
cardSearchLanguageBox.setItemText(static_cast<int>(CardSearchLanguage::Both), cardSearchLanguageBox.setItemText(static_cast<int>(SearchLanguageMode::Both),
tr("English and selected card language")); tr("English and selected card language"));
advertiseTranslationPageLabel.setText( advertiseTranslationPageLabel.setText(
QString("<a href='%1'>%2</a>").arg(WIKI_TRANSLATION_FAQ).arg(tr("How to help with translations"))); QString("<a href='%1'>%2</a>").arg(WIKI_TRANSLATION_FAQ).arg(tr("How to help with translations")));

View file

@ -20,7 +20,7 @@ void applyCardSearchLanguage(CardSearchModel *searchModel)
{ {
const auto &cardsDisplay = SettingsCache::instance().cardsDisplay(); const auto &cardsDisplay = SettingsCache::instance().cardsDisplay();
searchModel->setSearchLanguage(cardsDisplay.getCardLang(), searchModel->setSearchLanguage(cardsDisplay.getCardLang(),
static_cast<CardSearchLanguage>(cardsDisplay.getCardSearchLanguage())); static_cast<SearchLanguageMode>(cardsDisplay.getCardSearchLanguage()));
} }
} // namespace } // namespace

View file

@ -44,7 +44,7 @@ VisualDatabaseDisplayWidget::VisualDatabaseDisplayWidget(QWidget *parent,
CardsDisplaySettings *cardsDisplay = &SettingsCache::instance().cardsDisplay(); CardsDisplaySettings *cardsDisplay = &SettingsCache::instance().cardsDisplay();
const auto applyCardSearchLanguage = [this, cardsDisplay]() { const auto applyCardSearchLanguage = [this, cardsDisplay]() {
databaseDisplayModel->setSearchLanguage(cardsDisplay->getCardLang(), databaseDisplayModel->setSearchLanguage(cardsDisplay->getCardLang(),
static_cast<CardSearchLanguage>(cardsDisplay->getCardSearchLanguage())); static_cast<SearchLanguageMode>(cardsDisplay->getCardSearchLanguage()));
}; };
applyCardSearchLanguage(); applyCardSearchLanguage();
connect(cardsDisplay, &CardsDisplaySettings::cardLangChanged, this, applyCardSearchLanguage); connect(cardsDisplay, &CardsDisplaySettings::cardLangChanged, this, applyCardSearchLanguage);

View file

@ -192,7 +192,7 @@ void VisualDeckStorageSortFilterProxyModel::updateSearchMatches()
const auto &cardsDisplay = SettingsCache::instance().cardsDisplay(); const auto &cardsDisplay = SettingsCache::instance().cardsDisplay();
DeckFilterString filterString(searchText, cardsDisplay.getCardLang(), DeckFilterString filterString(searchText, cardsDisplay.getCardLang(),
static_cast<CardSearchLanguage>(cardsDisplay.getCardSearchLanguage())); static_cast<SearchLanguageMode>(cardsDisplay.getCardSearchLanguage()));
for (int row = 0; row < count; ++row) { for (int row = 0; row < count; ++row) {
const DeckPreviewData &data = source->dataForRow(row); const DeckPreviewData &data = source->dataForRow(row);

View file

@ -18,7 +18,7 @@
/** /**
* @brief The card languages card search should run against. * @brief The card languages card search should run against.
*/ */
enum class CardSearchLanguage enum class SearchLanguageMode
{ {
English, ///< Only search the English card names and texts. English, ///< Only search the English card names and texts.
Selected, ///< Search the selected card language (untranslated cards still match in English). Selected, ///< Search the selected card language (untranslated cards still match in English).

View file

@ -83,7 +83,7 @@ static std::once_flag init;
struct SearchLanguageContext struct SearchLanguageContext
{ {
QString searchLanguage; QString searchLanguage;
CardSearchLanguage searchLanguageMode = CardSearchLanguage::English; SearchLanguageMode searchLanguageMode = SearchLanguageMode::English;
}; };
thread_local SearchLanguageContext searchLanguageContext; thread_local SearchLanguageContext searchLanguageContext;
@ -92,14 +92,14 @@ namespace
bool matchesInSearchLanguage(const QString &english, bool matchesInSearchLanguage(const QString &english,
const QString &localized, const QString &localized,
const QString &searchLanguage, const QString &searchLanguage,
CardSearchLanguage searchLanguageMode, SearchLanguageMode searchLanguageMode,
const StringMatcher &matcher) const StringMatcher &matcher)
{ {
if (searchLanguageMode == CardSearchLanguage::English) { if (searchLanguageMode == SearchLanguageMode::English) {
return matcher(english); return matcher(english);
} }
if (searchLanguageMode == CardSearchLanguage::Both && matcher(english)) { if (searchLanguageMode == SearchLanguageMode::Both && matcher(english)) {
return true; return true;
} }
@ -371,7 +371,7 @@ static void setupParserRules()
search["OracleQuery"] = [](const peg::SemanticValues &sv) -> Filter { search["OracleQuery"] = [](const peg::SemanticValues &sv) -> Filter {
const auto matcher = std::any_cast<StringMatcher>(sv[0]); const auto matcher = std::any_cast<StringMatcher>(sv[0]);
const QString searchLanguage = searchLanguageContext.searchLanguage; const QString searchLanguage = searchLanguageContext.searchLanguage;
const CardSearchLanguage searchLanguageMode = searchLanguageContext.searchLanguageMode; const SearchLanguageMode searchLanguageMode = searchLanguageContext.searchLanguageMode;
return [=](const CardData &x) { return [=](const CardData &x) {
return matchesInSearchLanguage(x->getText(), x->getLocalizedText(searchLanguage), searchLanguage, return matchesInSearchLanguage(x->getText(), x->getLocalizedText(searchLanguage), searchLanguage,
searchLanguageMode, matcher); searchLanguageMode, matcher);
@ -453,7 +453,7 @@ static void setupParserRules()
search["GenericQuery"] = [](const peg::SemanticValues &sv) -> Filter { search["GenericQuery"] = [](const peg::SemanticValues &sv) -> Filter {
const auto matcher = std::any_cast<StringMatcher>(sv[0]); const auto matcher = std::any_cast<StringMatcher>(sv[0]);
const QString searchLanguage = searchLanguageContext.searchLanguage; const QString searchLanguage = searchLanguageContext.searchLanguage;
const CardSearchLanguage searchLanguageMode = searchLanguageContext.searchLanguageMode; const SearchLanguageMode searchLanguageMode = searchLanguageContext.searchLanguageMode;
return [=](const CardData &x) { return [=](const CardData &x) {
return matchesInSearchLanguage(x->getName(), x->getLocalizedName(searchLanguage), searchLanguage, return matchesInSearchLanguage(x->getName(), x->getLocalizedName(searchLanguage), searchLanguage,
searchLanguageMode, matcher); searchLanguageMode, matcher);
@ -472,7 +472,7 @@ FilterString::FilterString()
_error = "Not initialized"; _error = "Not initialized";
} }
FilterString::FilterString(const QString &expr, const QString &searchLanguage, CardSearchLanguage searchLanguageMode) FilterString::FilterString(const QString &expr, const QString &searchLanguage, SearchLanguageMode searchLanguageMode)
{ {
QByteArray ba = expr.simplified().toUtf8(); QByteArray ba = expr.simplified().toUtf8();

View file

@ -38,7 +38,7 @@ public:
FilterString(); FilterString();
explicit FilterString(const QString &exp, explicit FilterString(const QString &exp,
const QString &searchLanguage = QString(), const QString &searchLanguage = QString(),
CardSearchLanguage searchLanguageMode = CardSearchLanguage::English); SearchLanguageMode searchLanguageMode = SearchLanguageMode::English);
[[nodiscard]] bool check(const CardData &card) const [[nodiscard]] bool check(const CardData &card) const
{ {
if (card.isNull()) { if (card.isNull()) {

View file

@ -103,7 +103,7 @@ FilterTreeNode *FilterItemList::termNode(const QString &term)
bool FilterItemList::testTypeAnd(const CardInfoPtr info, bool FilterItemList::testTypeAnd(const CardInfoPtr info,
CardFilter::Attr attr, CardFilter::Attr attr,
const QString &searchLanguage, const QString &searchLanguage,
CardSearchLanguage searchLanguageMode) const SearchLanguageMode searchLanguageMode) const
{ {
for (auto i = childNodes.constBegin(); i != childNodes.constEnd(); i++) { for (auto i = childNodes.constBegin(); i != childNodes.constEnd(); i++) {
if (!(*i)->isEnabled()) { if (!(*i)->isEnabled()) {
@ -121,7 +121,7 @@ bool FilterItemList::testTypeAnd(const CardInfoPtr info,
bool FilterItemList::testTypeAndNot(const CardInfoPtr info, bool FilterItemList::testTypeAndNot(const CardInfoPtr info,
CardFilter::Attr attr, CardFilter::Attr attr,
const QString &searchLanguage, const QString &searchLanguage,
CardSearchLanguage searchLanguageMode) const SearchLanguageMode searchLanguageMode) const
{ {
// if any one in the list is true, return false // if any one in the list is true, return false
return !testTypeOr(info, attr, searchLanguage, searchLanguageMode); return !testTypeOr(info, attr, searchLanguage, searchLanguageMode);
@ -130,7 +130,7 @@ bool FilterItemList::testTypeAndNot(const CardInfoPtr info,
bool FilterItemList::testTypeOr(const CardInfoPtr info, bool FilterItemList::testTypeOr(const CardInfoPtr info,
CardFilter::Attr attr, CardFilter::Attr attr,
const QString &searchLanguage, const QString &searchLanguage,
CardSearchLanguage searchLanguageMode) const SearchLanguageMode searchLanguageMode) const
{ {
bool noChildEnabledChild = true; bool noChildEnabledChild = true;
@ -154,7 +154,7 @@ bool FilterItemList::testTypeOr(const CardInfoPtr info,
bool FilterItemList::testTypeOrNot(const CardInfoPtr info, bool FilterItemList::testTypeOrNot(const CardInfoPtr info,
CardFilter::Attr attr, CardFilter::Attr attr,
const QString &searchLanguage, const QString &searchLanguage,
CardSearchLanguage searchLanguageMode) const SearchLanguageMode searchLanguageMode) const
{ {
// if any one in the list is false, return true // if any one in the list is false, return true
return !testTypeAnd(info, attr, searchLanguage, searchLanguageMode); return !testTypeAnd(info, attr, searchLanguage, searchLanguageMode);
@ -162,13 +162,13 @@ bool FilterItemList::testTypeOrNot(const CardInfoPtr info,
bool FilterItem::acceptName(const CardInfoPtr info, bool FilterItem::acceptName(const CardInfoPtr info,
const QString &searchLanguage, const QString &searchLanguage,
CardSearchLanguage searchLanguageMode) const SearchLanguageMode searchLanguageMode) const
{ {
if (searchLanguageMode == CardSearchLanguage::English) { if (searchLanguageMode == SearchLanguageMode::English) {
return info->getName().contains(term, Qt::CaseInsensitive); return info->getName().contains(term, Qt::CaseInsensitive);
} }
if (searchLanguageMode == CardSearchLanguage::Both && info->getName().contains(term, Qt::CaseInsensitive)) { if (searchLanguageMode == SearchLanguageMode::Both && info->getName().contains(term, Qt::CaseInsensitive)) {
return true; return true;
} }
@ -181,13 +181,13 @@ bool FilterItem::acceptName(const CardInfoPtr info,
bool FilterItem::acceptNameExact(const CardInfoPtr info, bool FilterItem::acceptNameExact(const CardInfoPtr info,
const QString &searchLanguage, const QString &searchLanguage,
CardSearchLanguage searchLanguageMode) const SearchLanguageMode searchLanguageMode) const
{ {
if (searchLanguageMode == CardSearchLanguage::English) { if (searchLanguageMode == SearchLanguageMode::English) {
return info->getName() == term; return info->getName() == term;
} }
if (searchLanguageMode == CardSearchLanguage::Both && info->getName() == term) { if (searchLanguageMode == SearchLanguageMode::Both && info->getName() == term) {
return true; return true;
} }
@ -255,13 +255,13 @@ bool FilterItem::acceptColor(const CardInfoPtr info) const
bool FilterItem::acceptText(const CardInfoPtr info, bool FilterItem::acceptText(const CardInfoPtr info,
const QString &searchLanguage, const QString &searchLanguage,
CardSearchLanguage searchLanguageMode) const SearchLanguageMode searchLanguageMode) const
{ {
if (searchLanguageMode == CardSearchLanguage::English) { if (searchLanguageMode == SearchLanguageMode::English) {
return info->getText().contains(term, Qt::CaseInsensitive); return info->getText().contains(term, Qt::CaseInsensitive);
} }
if (searchLanguageMode == CardSearchLanguage::Both && info->getText().contains(term, Qt::CaseInsensitive)) { if (searchLanguageMode == SearchLanguageMode::Both && info->getText().contains(term, Qt::CaseInsensitive)) {
return true; return true;
} }
@ -459,7 +459,7 @@ bool FilterItem::relationCheck(int cardInfo) const
bool FilterItem::acceptCardAttr(const CardInfoPtr info, bool FilterItem::acceptCardAttr(const CardInfoPtr info,
CardFilter::Attr attr, CardFilter::Attr attr,
const QString &searchLanguage, const QString &searchLanguage,
CardSearchLanguage searchLanguageMode) const SearchLanguageMode searchLanguageMode) const
{ {
switch (attr) { switch (attr) {
case CardFilter::AttrName: case CardFilter::AttrName:
@ -544,7 +544,7 @@ FilterTreeNode *FilterTree::termNode(const CardFilter *f)
bool FilterTree::testAttr(const CardInfoPtr info, bool FilterTree::testAttr(const CardInfoPtr info,
const LogicMap *lm, const LogicMap *lm,
const QString &searchLanguage, const QString &searchLanguage,
CardSearchLanguage searchLanguageMode) const SearchLanguageMode searchLanguageMode) const
{ {
const FilterItemList *fil; const FilterItemList *fil;
bool status = true; bool status = true;
@ -579,7 +579,7 @@ bool FilterTree::testAttr(const CardInfoPtr info,
bool FilterTree::acceptsCard(const CardInfoPtr info, bool FilterTree::acceptsCard(const CardInfoPtr info,
const QString &searchLanguage, const QString &searchLanguage,
CardSearchLanguage searchLanguageMode) const SearchLanguageMode searchLanguageMode) const
{ {
for (auto i = childNodes.constBegin(); i != childNodes.constEnd(); i++) { for (auto i = childNodes.constBegin(); i != childNodes.constEnd(); i++) {
if ((*i)->isEnabled() && !testAttr(info, *i, searchLanguage, searchLanguageMode)) { if ((*i)->isEnabled() && !testAttr(info, *i, searchLanguage, searchLanguageMode)) {

View file

@ -171,19 +171,19 @@ public:
[[nodiscard]] bool testTypeAnd(CardInfoPtr info, [[nodiscard]] bool testTypeAnd(CardInfoPtr info,
CardFilter::Attr attr, CardFilter::Attr attr,
const QString &searchLanguage, const QString &searchLanguage,
CardSearchLanguage searchLanguageMode) const; SearchLanguageMode searchLanguageMode) const;
[[nodiscard]] bool testTypeAndNot(CardInfoPtr info, [[nodiscard]] bool testTypeAndNot(CardInfoPtr info,
CardFilter::Attr attr, CardFilter::Attr attr,
const QString &searchLanguage, const QString &searchLanguage,
CardSearchLanguage searchLanguageMode) const; SearchLanguageMode searchLanguageMode) const;
[[nodiscard]] bool testTypeOr(CardInfoPtr info, [[nodiscard]] bool testTypeOr(CardInfoPtr info,
CardFilter::Attr attr, CardFilter::Attr attr,
const QString &searchLanguage, const QString &searchLanguage,
CardSearchLanguage searchLanguageMode) const; SearchLanguageMode searchLanguageMode) const;
[[nodiscard]] bool testTypeOrNot(CardInfoPtr info, [[nodiscard]] bool testTypeOrNot(CardInfoPtr info,
CardFilter::Attr attr, CardFilter::Attr attr,
const QString &searchLanguage, const QString &searchLanguage,
CardSearchLanguage searchLanguageMode) const; SearchLanguageMode searchLanguageMode) const;
}; };
class FilterItem : public FilterTreeNode class FilterItem : public FilterTreeNode
@ -221,15 +221,15 @@ public:
} }
[[nodiscard]] bool [[nodiscard]] bool
acceptName(CardInfoPtr info, const QString &searchLanguage, CardSearchLanguage searchLanguageMode) const; acceptName(CardInfoPtr info, const QString &searchLanguage, SearchLanguageMode searchLanguageMode) const;
[[nodiscard]] bool [[nodiscard]] bool
acceptNameExact(CardInfoPtr info, const QString &searchLanguage, CardSearchLanguage searchLanguageMode) const; acceptNameExact(CardInfoPtr info, const QString &searchLanguage, SearchLanguageMode searchLanguageMode) 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;
[[nodiscard]] bool acceptColor(CardInfoPtr info) const; [[nodiscard]] bool acceptColor(CardInfoPtr info) const;
[[nodiscard]] bool [[nodiscard]] bool
acceptText(CardInfoPtr info, const QString &searchLanguage, CardSearchLanguage searchLanguageMode) const; acceptText(CardInfoPtr info, const QString &searchLanguage, SearchLanguageMode searchLanguageMode) const;
[[nodiscard]] bool acceptSet(CardInfoPtr info) const; [[nodiscard]] bool acceptSet(CardInfoPtr info) const;
[[nodiscard]] bool acceptManaCost(CardInfoPtr info) const; [[nodiscard]] bool acceptManaCost(CardInfoPtr info) const;
[[nodiscard]] bool acceptCmc(CardInfoPtr info) const; [[nodiscard]] bool acceptCmc(CardInfoPtr info) const;
@ -239,7 +239,7 @@ public:
[[nodiscard]] bool acceptCardAttr(CardInfoPtr info, [[nodiscard]] bool acceptCardAttr(CardInfoPtr info,
CardFilter::Attr attr, CardFilter::Attr attr,
const QString &searchLanguage, const QString &searchLanguage,
CardSearchLanguage searchLanguageMode) const; SearchLanguageMode searchLanguageMode) const;
[[nodiscard]] bool acceptFormat(CardInfoPtr info) const; [[nodiscard]] bool acceptFormat(CardInfoPtr info) const;
[[nodiscard]] bool relationCheck(int cardInfo) const; [[nodiscard]] bool relationCheck(int cardInfo) const;
}; };
@ -262,7 +262,7 @@ private:
bool testAttr(CardInfoPtr info, bool testAttr(CardInfoPtr info,
const LogicMap *lm, const LogicMap *lm,
const QString &searchLanguage, const QString &searchLanguage,
CardSearchLanguage searchLanguageMode) const; SearchLanguageMode searchLanguageMode) const;
void nodeChanged() const override void nodeChanged() const override
{ {
@ -302,7 +302,7 @@ public:
} }
[[nodiscard]] bool [[nodiscard]] bool
acceptsCard(CardInfoPtr info, const QString &searchLanguage, CardSearchLanguage searchLanguageMode) const; acceptsCard(CardInfoPtr info, const QString &searchLanguage, SearchLanguageMode searchLanguageMode) const;
void removeFiltersByAttr(CardFilter::Attr filterType); void removeFiltersByAttr(CardFilter::Attr filterType);
void removeFilter(const CardFilter *toRemove); void removeFilter(const CardFilter *toRemove);
void clear(); void clear();

View file

@ -68,7 +68,7 @@ void CardSearchModel::updateSearchResults(const QString &query)
// The completer suggestions match against the same languages the card // The completer suggestions match against the same languages the card
// search uses, so typing a localized name finds the card. // search uses, so typing a localized name finds the card.
QString matchName = card->getName(); QString matchName = card->getName();
if (searchLanguageMode != CardSearchLanguage::English && !searchLanguage.isEmpty() && searchLanguage != "en") { if (searchLanguageMode != SearchLanguageMode::English && !searchLanguage.isEmpty() && searchLanguage != "en") {
matchName = card->getLocalizedName(searchLanguage); matchName = card->getLocalizedName(searchLanguage);
} }
const QString lowerName = matchName.toLower(); const QString lowerName = matchName.toLower();
@ -88,7 +88,7 @@ void CardSearchModel::updateSearchResults(const QString &query)
auto sortByDistanceThenLength = [this](const SearchResult &a, const SearchResult &b) { auto sortByDistanceThenLength = [this](const SearchResult &a, const SearchResult &b) {
QString nameA = a.card->getName(); QString nameA = a.card->getName();
QString nameB = b.card->getName(); QString nameB = b.card->getName();
if (searchLanguageMode != CardSearchLanguage::English && !searchLanguage.isEmpty() && searchLanguage != "en") { if (searchLanguageMode != SearchLanguageMode::English && !searchLanguage.isEmpty() && searchLanguage != "en") {
nameA = a.card->getLocalizedName(searchLanguage); nameA = a.card->getLocalizedName(searchLanguage);
nameB = b.card->getLocalizedName(searchLanguage); nameB = b.card->getLocalizedName(searchLanguage);
} }

View file

@ -27,7 +27,7 @@ public:
void updateSearchResults(const QString &query); // Update results based on input void updateSearchResults(const QString &query); // Update results based on input
void setSearchLanguage(const QString &searchLang, CardSearchLanguage mode) void setSearchLanguage(const QString &searchLang, SearchLanguageMode mode)
{ {
if (searchLanguage == searchLang && searchLanguageMode == mode) { if (searchLanguage == searchLang && searchLanguageMode == mode) {
return; return;
@ -46,7 +46,7 @@ private:
CardDatabaseDisplayModel *sourceModel; CardDatabaseDisplayModel *sourceModel;
QList<SearchResult> searchResults; QList<SearchResult> searchResults;
QString searchLanguage; QString searchLanguage;
CardSearchLanguage searchLanguageMode = CardSearchLanguage::English; SearchLanguageMode searchLanguageMode = SearchLanguageMode::English;
}; };
#endif // CARD_SEARCH_MODEL_H #endif // CARD_SEARCH_MODEL_H

View file

@ -191,7 +191,7 @@ bool CardDatabaseDisplayModel::filterAcceptsRow(int sourceRow, const QModelIndex
bool CardDatabaseDisplayModel::rowMatchesCardName(CardInfoPtr info) const bool CardDatabaseDisplayModel::rowMatchesCardName(CardInfoPtr info) const
{ {
if (!cardName.isEmpty() && !info->getName().contains(cardName, Qt::CaseInsensitive) && if (!cardName.isEmpty() && !info->getName().contains(cardName, Qt::CaseInsensitive) &&
searchLanguageMode != CardSearchLanguage::English && !searchLanguage.isEmpty() && searchLanguage != "en" && searchLanguageMode != SearchLanguageMode::English && !searchLanguage.isEmpty() && searchLanguage != "en" &&
!info->getLocalizedName(searchLanguage).contains(cardName, Qt::CaseInsensitive)) { !info->getLocalizedName(searchLanguage).contains(cardName, Qt::CaseInsensitive)) {
return false; return false;
} }
@ -245,7 +245,7 @@ void CardDatabaseDisplayModel::setStringFilter(const QString &_src)
dirty(); dirty();
} }
void CardDatabaseDisplayModel::setSearchLanguage(const QString &searchLang, CardSearchLanguage mode) void CardDatabaseDisplayModel::setSearchLanguage(const QString &searchLang, SearchLanguageMode mode)
{ {
if (searchLanguage == searchLang && searchLanguageMode == mode) { if (searchLanguage == searchLang && searchLanguageMode == mode) {
return; return;

View file

@ -34,7 +34,7 @@ private:
int loadedRowCount; int loadedRowCount;
QTimer dirtyTimer; QTimer dirtyTimer;
QString searchLanguage; QString searchLanguage;
CardSearchLanguage searchLanguageMode = CardSearchLanguage::English; SearchLanguageMode searchLanguageMode = SearchLanguageMode::English;
QString searchText; QString searchText;
/** The translation table that will be used for sanitizeCardName. */ /** The translation table that will be used for sanitizeCardName. */
@ -65,7 +65,7 @@ public:
cardNameSet = _cardNameSet; cardNameSet = _cardNameSet;
dirty(); dirty();
} }
void setSearchLanguage(const QString &searchLang, CardSearchLanguage mode); void setSearchLanguage(const QString &searchLang, SearchLanguageMode mode);
void dirty() void dirty()
{ {

View file

@ -112,7 +112,7 @@ QString CardsDisplaySettings::getCardLang() const
int CardsDisplaySettings::getCardSearchLanguage() const int CardsDisplaySettings::getCardSearchLanguage() const
{ {
return getValue("cardSearchLanguage", QString(), QString(), static_cast<int>(CardSearchLanguage::English)).toInt(); return getValue("cardSearchLanguage", QString(), QString(), static_cast<int>(SearchLanguageMode::English)).toInt();
} }
void CardsDisplaySettings::setDisplayCardNames(bool _displayCardNames) void CardsDisplaySettings::setDisplayCardNames(bool _displayCardNames)

View file

@ -84,42 +84,42 @@ CardInfoPtr localizedCat()
TEST_F(CardQuery, SearchLanguageEnglishMatchesOnlyEnglish) TEST_F(CardQuery, SearchLanguageEnglishMatchesOnlyEnglish)
{ {
const CardData localized = localizedCat(); const CardData localized = localizedCat();
ASSERT_TRUE(FilterString("Cat", "de", CardSearchLanguage::English).check(localized)); ASSERT_TRUE(FilterString("Cat", "de", SearchLanguageMode::English).check(localized));
ASSERT_FALSE(FilterString("Kater", "de", CardSearchLanguage::English).check(localized)); ASSERT_FALSE(FilterString("Kater", "de", SearchLanguageMode::English).check(localized));
} }
TEST_F(CardQuery, SearchLanguageSelectedMatchesLocalizedNameAndText) TEST_F(CardQuery, SearchLanguageSelectedMatchesLocalizedNameAndText)
{ {
const CardData localized = localizedCat(); const CardData localized = localizedCat();
ASSERT_TRUE(FilterString("Kater", "de", CardSearchLanguage::Selected).check(localized)); ASSERT_TRUE(FilterString("Kater", "de", SearchLanguageMode::Selected).check(localized));
ASSERT_TRUE(FilterString("o:miaut", "de", CardSearchLanguage::Selected).check(localized)); ASSERT_TRUE(FilterString("o:miaut", "de", SearchLanguageMode::Selected).check(localized));
ASSERT_FALSE(FilterString("Cat", "de", CardSearchLanguage::Selected).check(localized)); ASSERT_FALSE(FilterString("Cat", "de", SearchLanguageMode::Selected).check(localized));
} }
TEST_F(CardQuery, SearchLanguageSelectedFallsBackToEnglishForUntranslatedCards) TEST_F(CardQuery, SearchLanguageSelectedFallsBackToEnglishForUntranslatedCards)
{ {
const CardData localized = localizedCat(); const CardData localized = localizedCat();
ASSERT_TRUE(FilterString("Cat", "fr", CardSearchLanguage::Selected).check(localized)); ASSERT_TRUE(FilterString("Cat", "fr", SearchLanguageMode::Selected).check(localized));
ASSERT_FALSE(FilterString("Kater", "fr", CardSearchLanguage::Selected).check(localized)); ASSERT_FALSE(FilterString("Kater", "fr", SearchLanguageMode::Selected).check(localized));
} }
TEST_F(CardQuery, SearchLanguageBothMatchesEitherLanguage) TEST_F(CardQuery, SearchLanguageBothMatchesEitherLanguage)
{ {
const CardData localized = localizedCat(); const CardData localized = localizedCat();
ASSERT_TRUE(FilterString("Cat", "de", CardSearchLanguage::Both).check(localized)); ASSERT_TRUE(FilterString("Cat", "de", SearchLanguageMode::Both).check(localized));
ASSERT_TRUE(FilterString("Kater", "de", CardSearchLanguage::Both).check(localized)); ASSERT_TRUE(FilterString("Kater", "de", SearchLanguageMode::Both).check(localized));
} }
TEST_F(CardQuery, SearchLanguageIsBoundPerInstance) TEST_F(CardQuery, SearchLanguageIsBoundPerInstance)
{ {
const CardData localized = localizedCat(); const CardData localized = localizedCat();
FilterString germanQuery("Kater", "de", CardSearchLanguage::Selected); FilterString germanQuery("Kater", "de", SearchLanguageMode::Selected);
ASSERT_TRUE(germanQuery.check(localized)); ASSERT_TRUE(germanQuery.check(localized));
// Constructing an English-bound instance afterwards must not change the // Constructing an English-bound instance afterwards must not change the
// language the earlier instance searches in. // language the earlier instance searches in.
FilterString englishQuery("Kater", "", CardSearchLanguage::English); FilterString englishQuery("Kater", "", SearchLanguageMode::English);
ASSERT_FALSE(englishQuery.check(localized)); ASSERT_FALSE(englishQuery.check(localized));
ASSERT_TRUE(germanQuery.check(localized)); ASSERT_TRUE(germanQuery.check(localized));
} }

View file

@ -565,14 +565,14 @@ TEST_F(SettingsDefaultsTest, CardsDisplay_CardLang_SetAndGet)
TEST_F(SettingsDefaultsTest, CardsDisplay_CardSearchLanguage_Default) TEST_F(SettingsDefaultsTest, CardsDisplay_CardSearchLanguage_Default)
{ {
CardsDisplaySettings s(settingsPath, nullptr); CardsDisplaySettings s(settingsPath, nullptr);
ASSERT_EQ(s.getCardSearchLanguage(), static_cast<int>(CardSearchLanguage::English)); ASSERT_EQ(s.getCardSearchLanguage(), static_cast<int>(SearchLanguageMode::English));
} }
TEST_F(SettingsDefaultsTest, CardsDisplay_CardSearchLanguage_SetAndGet) TEST_F(SettingsDefaultsTest, CardsDisplay_CardSearchLanguage_SetAndGet)
{ {
CardsDisplaySettings s(settingsPath, nullptr); CardsDisplaySettings s(settingsPath, nullptr);
s.setCardSearchLanguage(static_cast<int>(CardSearchLanguage::Selected)); s.setCardSearchLanguage(static_cast<int>(SearchLanguageMode::Selected));
ASSERT_EQ(s.getCardSearchLanguage(), static_cast<int>(CardSearchLanguage::Selected)); ASSERT_EQ(s.getCardSearchLanguage(), static_cast<int>(SearchLanguageMode::Selected));
} }
// --- VisualDeckStorageSettings --- // --- VisualDeckStorageSettings ---