mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-04-27 07:48:01 -07:00
Hide games created/hosted by people on your Ignore List (#3883)
* Implement filter for games created by ignored users.
This commit is contained in:
parent
7bfefee073
commit
0f18fa9546
9 changed files with 99 additions and 4 deletions
|
|
@ -2,6 +2,8 @@
|
|||
#include "pb/serverinfo_game.pb.h"
|
||||
#include "pixmapgenerator.h"
|
||||
#include "settingscache.h"
|
||||
#include "tab_userlists.h"
|
||||
#include "userlist.h"
|
||||
|
||||
#include <QDateTime>
|
||||
#include <QDebug>
|
||||
|
|
@ -253,8 +255,9 @@ void GamesModel::updateGameList(const ServerInfo_Game &game)
|
|||
endInsertRows();
|
||||
}
|
||||
|
||||
GamesProxyModel::GamesProxyModel(QObject *parent, bool _ownUserIsRegistered)
|
||||
: QSortFilterProxyModel(parent), ownUserIsRegistered(_ownUserIsRegistered), showBuddiesOnlyGames(false),
|
||||
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)
|
||||
{
|
||||
setSortRole(GamesModel::SORT_ROLE);
|
||||
|
|
@ -267,6 +270,12 @@ void GamesProxyModel::setShowBuddiesOnlyGames(bool _showBuddiesOnlyGames)
|
|||
invalidateFilter();
|
||||
}
|
||||
|
||||
void GamesProxyModel::setHideIgnoredUserGames(bool _hideIgnoredUserGames)
|
||||
{
|
||||
hideIgnoredUserGames = _hideIgnoredUserGames;
|
||||
invalidateFilter();
|
||||
}
|
||||
|
||||
void GamesProxyModel::setUnavailableGamesVisible(bool _unavailableGamesVisible)
|
||||
{
|
||||
unavailableGamesVisible = _unavailableGamesVisible;
|
||||
|
|
@ -323,6 +332,7 @@ void GamesProxyModel::loadFilterParameters(const QMap<int, QString> &allGameType
|
|||
|
||||
unavailableGamesVisible = settingsCache->gameFilters().isUnavailableGamesVisible();
|
||||
showPasswordProtectedGames = settingsCache->gameFilters().isShowPasswordProtectedGames();
|
||||
hideIgnoredUserGames = settingsCache->gameFilters().isHideIgnoredUserGames();
|
||||
gameNameFilter = settingsCache->gameFilters().getGameNameFilter();
|
||||
maxPlayersFilterMin = settingsCache->gameFilters().getMinPlayers();
|
||||
maxPlayersFilterMax = settingsCache->gameFilters().getMaxPlayers();
|
||||
|
|
@ -343,6 +353,7 @@ void GamesProxyModel::saveFilterParameters(const QMap<int, QString> &allGameType
|
|||
settingsCache->gameFilters().setShowBuddiesOnlyGames(showBuddiesOnlyGames);
|
||||
settingsCache->gameFilters().setUnavailableGamesVisible(unavailableGamesVisible);
|
||||
settingsCache->gameFilters().setShowPasswordProtectedGames(showPasswordProtectedGames);
|
||||
settingsCache->gameFilters().setHideIgnoredUserGames(hideIgnoredUserGames);
|
||||
settingsCache->gameFilters().setGameNameFilter(gameNameFilter);
|
||||
|
||||
QMapIterator<int, QString> gameTypeIterator(allGameTypes);
|
||||
|
|
@ -367,6 +378,10 @@ bool GamesProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex & /*sour
|
|||
if (!showBuddiesOnlyGames && game.only_buddies()) {
|
||||
return false;
|
||||
}
|
||||
if (hideIgnoredUserGames && tabSupervisor->getUserListsTab()->getIgnoreList()->getUsers().contains(
|
||||
QString::fromStdString(game.creator_info().name()))) {
|
||||
return false;
|
||||
}
|
||||
if (!unavailableGamesVisible) {
|
||||
if (game.player_count() == game.max_players())
|
||||
return false;
|
||||
|
|
@ -398,3 +413,8 @@ bool GamesProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex & /*sour
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
void GamesProxyModel::refresh()
|
||||
{
|
||||
invalidateFilter();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue