bool GamesProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &/*sourceParent*/) const { if (fullGamesVisible) return true; GamesModel *model = qobject_cast<GamesModel *>(sourceModel()); if (!model) return false; ServerInfo_Game *game = model->getGame(sourceRow); if (game->getPlayerCount() == game->getMaxPlayers()) return false; return true; }
bool GamesProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &/*sourceParent*/) const { GamesModel *model = qobject_cast<GamesModel *>(sourceModel()); if (!model) return false; const ServerInfo_Game &game = model->getGame(sourceRow); if (!unavailableGamesVisible) { if (game.player_count() == game.max_players()) return false; if (game.started()) return false; if (!(ownUser->user_level() & ServerInfo_User::IsRegistered)) if (game.only_registered()) return false; } if (!passwordProtectedGamesVisible && game.with_password()) return false; if (!gameNameFilter.isEmpty()) if (!QString::fromStdString(game.description()).contains(gameNameFilter, Qt::CaseInsensitive)) return false; if (!creatorNameFilter.isEmpty()) if (!QString::fromStdString(game.creator_info().name()).contains(creatorNameFilter, Qt::CaseInsensitive)) return false; QSet<int> gameTypes; for (int i = 0; i < game.game_types_size(); ++i) gameTypes.insert(game.game_types(i)); if (!gameTypeFilter.isEmpty() && gameTypes.intersect(gameTypeFilter).isEmpty()) return false; if ((maxPlayersFilterMin != -1) && (game.max_players() < maxPlayersFilterMin)) return false; if ((maxPlayersFilterMax != -1) && (game.max_players() > maxPlayersFilterMax)) return false; return true; }