Fix #3957: Properly set filters to defaults on initial load and disable "Clear filters" button if filters are set to defaults. (#4088)

* Fix #3957: Properly set filters to defaults on initial load and disable "Clear filters" button if filters are set to defaults

* Reuse resetFilterParameters() in GamesProxyModel constructor, and remove "off" designation for player min/max (as a default of 1/99 is enforced by the UI).
This commit is contained in:
Kaitlin 2020-09-09 11:24:54 -04:00 committed by GitHub
parent ade3e81682
commit 79f590c99a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 11 deletions

View file

@ -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<int, QString> &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;