mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-09-27 08:24:39 -07:00
[Filters] Pass CardSearchLanguage as a single struct
This commit is contained in:
parent
2191ce9c75
commit
0967644640
18 changed files with 187 additions and 196 deletions
|
|
@ -68,8 +68,8 @@ void CardSearchModel::updateSearchResults(const QString &query)
|
|||
// The completer suggestions match against the same languages the card
|
||||
// search uses, so typing a localized name finds the card.
|
||||
QString matchName = card->getName();
|
||||
if (searchLanguageMode != SearchLanguageMode::English && !searchLanguage.isEmpty() && searchLanguage != "en") {
|
||||
matchName = card->getLocalizedName(searchLanguage);
|
||||
if (searchLanguage.mode != SearchLanguageMode::English && !searchLanguage.isEnglishOnly()) {
|
||||
matchName = card->getLocalizedName(searchLanguage.language);
|
||||
}
|
||||
const QString lowerName = matchName.toLower();
|
||||
if (!lowerName.contains(lowerQuery)) {
|
||||
|
|
@ -88,9 +88,9 @@ void CardSearchModel::updateSearchResults(const QString &query)
|
|||
auto sortByDistanceThenLength = [this](const SearchResult &a, const SearchResult &b) {
|
||||
QString nameA = a.card->getName();
|
||||
QString nameB = b.card->getName();
|
||||
if (searchLanguageMode != SearchLanguageMode::English && !searchLanguage.isEmpty() && searchLanguage != "en") {
|
||||
nameA = a.card->getLocalizedName(searchLanguage);
|
||||
nameB = b.card->getLocalizedName(searchLanguage);
|
||||
if (searchLanguage.mode != SearchLanguageMode::English && !searchLanguage.isEnglishOnly()) {
|
||||
nameA = a.card->getLocalizedName(searchLanguage.language);
|
||||
nameB = b.card->getLocalizedName(searchLanguage.language);
|
||||
}
|
||||
if (a.distance != b.distance) {
|
||||
return a.distance < b.distance;
|
||||
|
|
@ -112,4 +112,4 @@ void CardSearchModel::updateSearchResults(const QString &query)
|
|||
}
|
||||
|
||||
endResetModel();
|
||||
}
|
||||
}
|
||||
|
|
@ -27,13 +27,12 @@ public:
|
|||
|
||||
void updateSearchResults(const QString &query); // Update results based on input
|
||||
|
||||
void setSearchLanguage(const QString &searchLang, SearchLanguageMode mode)
|
||||
void setSearchLanguage(const CardSearchLanguage &searchLang)
|
||||
{
|
||||
if (searchLanguage == searchLang && searchLanguageMode == mode) {
|
||||
if (searchLanguage == searchLang) {
|
||||
return;
|
||||
}
|
||||
searchLanguage = searchLang;
|
||||
searchLanguageMode = mode;
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
@ -45,8 +44,7 @@ private:
|
|||
|
||||
CardDatabaseDisplayModel *sourceModel;
|
||||
QList<SearchResult> searchResults;
|
||||
QString searchLanguage;
|
||||
SearchLanguageMode searchLanguageMode = SearchLanguageMode::English;
|
||||
CardSearchLanguage searchLanguage;
|
||||
};
|
||||
|
||||
#endif // CARD_SEARCH_MODEL_H
|
||||
#endif // CARD_SEARCH_MODEL_H
|
||||
|
|
@ -179,7 +179,7 @@ bool CardDatabaseDisplayModel::filterAcceptsRow(int sourceRow, const QModelIndex
|
|||
}
|
||||
|
||||
if (filterString != nullptr) {
|
||||
if (filterTree != nullptr && !filterTree->acceptsCard(info, searchLanguage, searchLanguageMode)) {
|
||||
if (filterTree != nullptr && !filterTree->acceptsCard(info, searchLanguage)) {
|
||||
return false;
|
||||
}
|
||||
return filterString->check(info);
|
||||
|
|
@ -190,10 +190,14 @@ bool CardDatabaseDisplayModel::filterAcceptsRow(int sourceRow, const QModelIndex
|
|||
|
||||
bool CardDatabaseDisplayModel::rowMatchesCardName(CardInfoPtr info) const
|
||||
{
|
||||
if (!cardName.isEmpty() && !info->getName().contains(cardName, Qt::CaseInsensitive) &&
|
||||
searchLanguageMode != SearchLanguageMode::English && !searchLanguage.isEmpty() && searchLanguage != "en" &&
|
||||
!info->getLocalizedName(searchLanguage).contains(cardName, Qt::CaseInsensitive)) {
|
||||
return false;
|
||||
if (!cardName.isEmpty()) {
|
||||
const bool matchesEnglish = info->getName().contains(cardName, Qt::CaseInsensitive);
|
||||
const bool matchesLocalized =
|
||||
!searchLanguage.isEnglishOnly() &&
|
||||
info->getLocalizedName(searchLanguage.language).contains(cardName, Qt::CaseInsensitive);
|
||||
if (!matchesEnglish && !matchesLocalized) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!cardNameSet.isEmpty() && !cardNameSet.contains(info->getName())) {
|
||||
|
|
@ -201,7 +205,7 @@ bool CardDatabaseDisplayModel::rowMatchesCardName(CardInfoPtr info) const
|
|||
}
|
||||
|
||||
if (filterTree != nullptr) {
|
||||
return filterTree->acceptsCard(info, searchLanguage, searchLanguageMode);
|
||||
return filterTree->acceptsCard(info, searchLanguage);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
@ -241,18 +245,17 @@ void CardDatabaseDisplayModel::setStringFilter(const QString &_src)
|
|||
{
|
||||
searchText = _src;
|
||||
delete filterString;
|
||||
filterString = new FilterString(_src, searchLanguage, searchLanguageMode);
|
||||
filterString = new FilterString(_src, searchLanguage);
|
||||
dirty();
|
||||
}
|
||||
|
||||
void CardDatabaseDisplayModel::setSearchLanguage(const QString &searchLang, SearchLanguageMode mode)
|
||||
void CardDatabaseDisplayModel::setSearchLanguage(const CardSearchLanguage &searchLang)
|
||||
{
|
||||
if (searchLanguage == searchLang && searchLanguageMode == mode) {
|
||||
if (searchLanguage == searchLang) {
|
||||
return;
|
||||
}
|
||||
|
||||
searchLanguage = searchLang;
|
||||
searchLanguageMode = mode;
|
||||
|
||||
if (filterString != nullptr) {
|
||||
setStringFilter(searchText);
|
||||
|
|
|
|||
|
|
@ -33,8 +33,7 @@ private:
|
|||
FilterString *filterString;
|
||||
int loadedRowCount;
|
||||
QTimer dirtyTimer;
|
||||
QString searchLanguage;
|
||||
SearchLanguageMode searchLanguageMode = SearchLanguageMode::English;
|
||||
CardSearchLanguage searchLanguage;
|
||||
QString searchText;
|
||||
|
||||
/** The translation table that will be used for sanitizeCardName. */
|
||||
|
|
@ -65,7 +64,7 @@ public:
|
|||
cardNameSet = _cardNameSet;
|
||||
dirty();
|
||||
}
|
||||
void setSearchLanguage(const QString &searchLang, SearchLanguageMode mode);
|
||||
void setSearchLanguage(const CardSearchLanguage &searchLang);
|
||||
|
||||
void dirty()
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue