diff --git a/cockatrice/src/gameselector.cpp b/cockatrice/src/gameselector.cpp index e00c9a96..8cc57045 100644 --- a/cockatrice/src/gameselector.cpp +++ b/cockatrice/src/gameselector.cpp @@ -74,7 +74,11 @@ GameSelector::GameSelector(AbstractClient *_client, connect(filterButton, SIGNAL(clicked()), this, SLOT(actSetFilter())); clearFilterButton = new QPushButton; clearFilterButton->setIcon(QPixmap("theme:icons/clearsearch")); - clearFilterButton->setEnabled(true); + if (showFilters && gameListProxyModel->areFilterParametersSetToDefaults()) { + clearFilterButton->setEnabled(false); + } else { + clearFilterButton->setEnabled(true); + } connect(clearFilterButton, SIGNAL(clicked()), this, SLOT(actClearFilter())); if (room) { @@ -149,8 +153,6 @@ void GameSelector::actSetFilter() if (!dlg.exec()) return; - clearFilterButton->setEnabled(true); - gameListProxyModel->setShowBuddiesOnlyGames(dlg.getShowBuddiesOnlyGames()); gameListProxyModel->setUnavailableGamesVisible(dlg.getUnavailableGamesVisible()); gameListProxyModel->setShowPasswordProtectedGames(dlg.getShowPasswordProtectedGames()); @@ -161,6 +163,8 @@ void GameSelector::actSetFilter() gameListProxyModel->setMaxPlayersFilter(dlg.getMaxPlayersFilterMin(), dlg.getMaxPlayersFilterMax()); gameListProxyModel->saveFilterParameters(gameTypeMap); + clearFilterButton->setEnabled(!gameListProxyModel->areFilterParametersSetToDefaults()); + updateTitle(); } diff --git a/cockatrice/src/gamesmodel.cpp b/cockatrice/src/gamesmodel.cpp index fa4ff05b..9a87db86 100644 --- a/cockatrice/src/gamesmodel.cpp +++ b/cockatrice/src/gamesmodel.cpp @@ -258,9 +258,9 @@ void GamesModel::updateGameList(const ServerInfo_Game &game) GamesProxyModel::GamesProxyModel(QObject *parent, const TabSupervisor *_tabSupervisor) : QSortFilterProxyModel(parent), ownUserIsRegistered(_tabSupervisor->isOwnUserRegistered()), - tabSupervisor(_tabSupervisor), showBuddiesOnlyGames(false), hideIgnoredUserGames(false), - unavailableGamesVisible(false), showPasswordProtectedGames(true), maxPlayersFilterMin(-1), maxPlayersFilterMax(-1) + tabSupervisor(_tabSupervisor) { + resetFilterParameters(); setSortRole(GamesModel::SORT_ROLE); setDynamicSortFilter(true); } @@ -331,18 +331,29 @@ int GamesProxyModel::getNumFilteredGames() const void GamesProxyModel::resetFilterParameters() { - unavailableGamesVisible = false; - showPasswordProtectedGames = true; - showBuddiesOnlyGames = true; + unavailableGamesVisible = DEFAULT_UNAVAILABLE_GAMES_VISIBLE; + showPasswordProtectedGames = DEFAULT_SHOW_PASSWORD_PROTECTED_GAMES; + showBuddiesOnlyGames = DEFAULT_SHOW_BUDDIES_ONLY_GAMES; + hideIgnoredUserGames = DEFAULT_HIDE_IGNORED_USER_GAMES; gameNameFilter = QString(); creatorNameFilter = QString(); gameTypeFilter.clear(); - maxPlayersFilterMin = 1; + maxPlayersFilterMin = DEFAULT_MAX_PLAYERS_MIN; maxPlayersFilterMax = DEFAULT_MAX_PLAYERS_MAX; invalidateFilter(); } +bool GamesProxyModel::areFilterParametersSetToDefaults() const +{ + return unavailableGamesVisible == DEFAULT_UNAVAILABLE_GAMES_VISIBLE && + showPasswordProtectedGames == DEFAULT_SHOW_PASSWORD_PROTECTED_GAMES && + showBuddiesOnlyGames == DEFAULT_SHOW_BUDDIES_ONLY_GAMES && + hideIgnoredUserGames == DEFAULT_HIDE_IGNORED_USER_GAMES && gameNameFilter.isEmpty() && + creatorNameFilter.isEmpty() && gameTypeFilter.isEmpty() && maxPlayersFilterMin == DEFAULT_MAX_PLAYERS_MIN && + maxPlayersFilterMax == DEFAULT_MAX_PLAYERS_MAX; +} + void GamesProxyModel::loadFilterParameters(const QMap &allGameTypes) { GameFiltersSettings &gameFilters = SettingsCache::instance().gameFilters(); @@ -428,9 +439,9 @@ bool GamesProxyModel::filterAcceptsRow(int sourceRow) const if (!gameTypeFilter.isEmpty() && gameTypes.intersect(gameTypeFilter).isEmpty()) return false; - if ((maxPlayersFilterMin != -1) && ((int)game.max_players() < maxPlayersFilterMin)) + if ((int)game.max_players() < maxPlayersFilterMin) return false; - if ((maxPlayersFilterMax != -1) && ((int)game.max_players() > maxPlayersFilterMax)) + if ((int)game.max_players() > maxPlayersFilterMax) return false; return true; diff --git a/cockatrice/src/gamesmodel.h b/cockatrice/src/gamesmodel.h index a50c0e86..e114a110 100644 --- a/cockatrice/src/gamesmodel.h +++ b/cockatrice/src/gamesmodel.h @@ -76,6 +76,11 @@ private: QSet gameTypeFilter; int maxPlayersFilterMin, maxPlayersFilterMax; + static const bool DEFAULT_UNAVAILABLE_GAMES_VISIBLE = false; + static const bool DEFAULT_SHOW_PASSWORD_PROTECTED_GAMES = true; + static const bool DEFAULT_SHOW_BUDDIES_ONLY_GAMES = true; + static const bool DEFAULT_HIDE_IGNORED_USER_GAMES = false; + static const int DEFAULT_MAX_PLAYERS_MIN = 1; static const int DEFAULT_MAX_PLAYERS_MAX = 99; public: @@ -127,6 +132,7 @@ public: void setMaxPlayersFilter(int _maxPlayersFilterMin, int _maxPlayersFilterMax); int getNumFilteredGames() const; void resetFilterParameters(); + bool areFilterParametersSetToDefaults() const; void loadFilterParameters(const QMap &allGameTypes); void saveFilterParameters(const QMap &allGameTypes); void refresh();