diff --git a/cockatrice/src/carddatabasemodel.cpp b/cockatrice/src/carddatabasemodel.cpp index bba3722f..faa8c3a8 100644 --- a/cockatrice/src/carddatabasemodel.cpp +++ b/cockatrice/src/carddatabasemodel.cpp @@ -1,5 +1,6 @@ #include "carddatabasemodel.h" #include "filtertree.h" +#include #define CARDDBMODEL_COLUMNS 6 @@ -17,6 +18,11 @@ CardDatabaseModel::~CardDatabaseModel() { } +QMap CardDatabaseDisplayModel::characterTranslation = {{L'“', L'\"'}, + {L'”', L'\"'}, + {L'‘', L'\''}, + {L'’', L'\''}}; + int CardDatabaseModel::rowCount(const QModelIndex & /*parent*/) const { return cardList.size(); @@ -324,6 +330,16 @@ void CardDatabaseDisplayModel::filterTreeChanged() invalidate(); } +const QString CardDatabaseDisplayModel::sanitizeCardName(const QString &dirtyName, const QMap &table) +{ + std::wstring toReturn = dirtyName.toStdWString(); + for (wchar_t &ch : toReturn) { + if (table.contains(ch)) { + ch = table.value(ch); + } + } + return QString::fromStdWString(toReturn); +} TokenDisplayModel::TokenDisplayModel(QObject *parent) : CardDatabaseDisplayModel(parent) { } diff --git a/cockatrice/src/carddatabasemodel.h b/cockatrice/src/carddatabasemodel.h index a89c1f30..5400c1f4 100644 --- a/cockatrice/src/carddatabasemodel.h +++ b/cockatrice/src/carddatabasemodel.h @@ -73,6 +73,9 @@ private: FilterTree *filterTree; int loadedRowCount; + /** The translation table that will be used for sanitizeCardName. */ + static QMap characterTranslation; + public: CardDatabaseDisplayModel(QObject *parent = 0); void setFilterTree(FilterTree *filterTree); @@ -88,7 +91,7 @@ public: } void setCardName(const QString &_cardName) { - cardName = _cardName; + cardName = sanitizeCardName(_cardName, characterTranslation); invalidate(); } void setCardNameSet(const QSet &_cardNameSet) @@ -127,6 +130,8 @@ protected: void fetchMore(const QModelIndex &parent); private slots: void filterTreeChanged(); + /** Will translate all undesirable characters in DIRTYNAME according to the TABLE. */ + const QString sanitizeCardName(const QString &dirtyName, const QMap &table); }; class TokenDisplayModel : public CardDatabaseDisplayModel