diff --git a/cockatrice/src/dlg_filter_games.cpp b/cockatrice/src/dlg_filter_games.cpp index b4ce11c8..eb2e8f78 100644 --- a/cockatrice/src/dlg_filter_games.cpp +++ b/cockatrice/src/dlg_filter_games.cpp @@ -10,6 +10,7 @@ #include #include #include +#include DlgFilterGames::DlgFilterGames(const QMap &_allGameTypes, QWidget *parent) : QDialog(parent), @@ -50,7 +51,7 @@ DlgFilterGames::DlgFilterGames(const QMap &_allGameTypes, QWidget QCheckBox *temp = new QCheckBox(gameTypesIterator.value()); temp->setChecked( settings.value( - "game_type/" + gameTypesIterator.value(), + "game_type/" + hashGameType(gameTypesIterator.value()), false ).toBool() ); @@ -145,7 +146,7 @@ void DlgFilterGames::actOk() { checkboxIterator.next(); settings.setValue( - "game_type/" + gameTypeIterator.value(), + "game_type/" + hashGameType(gameTypeIterator.value()), checkboxIterator.value()->isChecked() ); } @@ -156,6 +157,10 @@ void DlgFilterGames::actOk() { accept(); } +QString DlgFilterGames::hashGameType(const QString &gameType) const { + return QCryptographicHash::hash(gameType.toUtf8(), QCryptographicHash::Md5).toHex(); +} + bool DlgFilterGames::getUnavailableGamesVisible() const { return unavailableGamesVisibleCheckBox->isChecked(); diff --git a/cockatrice/src/dlg_filter_games.h b/cockatrice/src/dlg_filter_games.h index ac727d19..2480e642 100644 --- a/cockatrice/src/dlg_filter_games.h +++ b/cockatrice/src/dlg_filter_games.h @@ -21,6 +21,12 @@ private: QSpinBox *maxPlayersFilterMaxSpinBox; const QMap &allGameTypes; + + /* + * The game type might contain special characters, so to use it in + * QSettings we just hash it. + */ + QString hashGameType(const QString &gameType) const; private slots: void actOk(); public: