Game filter for games created by buddy (#5991)

This commit is contained in:
RickyRister 2025-06-14 08:10:24 -07:00 committed by GitHub
parent 6cb4e203f1
commit 61a6b32137
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 45 additions and 2 deletions

View file

@ -37,6 +37,9 @@ DlgFilterGames::DlgFilterGames(const QMap<int, QString> &_allGameTypes,
hideIgnoredUserGames = new QCheckBox(tr("Hide 'ignored user' games")); hideIgnoredUserGames = new QCheckBox(tr("Hide 'ignored user' games"));
hideIgnoredUserGames->setChecked(gamesProxyModel->getHideIgnoredUserGames()); hideIgnoredUserGames->setChecked(gamesProxyModel->getHideIgnoredUserGames());
hideNotBuddyCreatedGames = new QCheckBox(tr("Hide games not created by buddy"));
hideNotBuddyCreatedGames->setChecked(gamesProxyModel->getHideNotBuddyCreatedGames());
maxGameAgeComboBox = new QComboBox(); maxGameAgeComboBox = new QComboBox();
maxGameAgeComboBox->setEditable(false); maxGameAgeComboBox->setEditable(false);
maxGameAgeComboBox->addItems(gameAgeMap.values()); maxGameAgeComboBox->addItems(gameAgeMap.values());
@ -111,6 +114,7 @@ DlgFilterGames::DlgFilterGames(const QMap<int, QString> &_allGameTypes,
restrictionsLayout->addWidget(hidePasswordProtectedGames, 2, 0); restrictionsLayout->addWidget(hidePasswordProtectedGames, 2, 0);
restrictionsLayout->addWidget(hideBuddiesOnlyGames, 3, 0); restrictionsLayout->addWidget(hideBuddiesOnlyGames, 3, 0);
restrictionsLayout->addWidget(hideIgnoredUserGames, 4, 0); restrictionsLayout->addWidget(hideIgnoredUserGames, 4, 0);
restrictionsLayout->addWidget(hideNotBuddyCreatedGames, 5, 0);
auto *restrictionsGroupBox = new QGroupBox(tr("Restrictions")); auto *restrictionsGroupBox = new QGroupBox(tr("Restrictions"));
restrictionsGroupBox->setLayout(restrictionsLayout); restrictionsGroupBox->setLayout(restrictionsLayout);
@ -209,6 +213,11 @@ bool DlgFilterGames::getHideIgnoredUserGames() const
return hideIgnoredUserGames->isChecked(); return hideIgnoredUserGames->isChecked();
} }
bool DlgFilterGames::getHideNotBuddyCreatedGames() const
{
return hideNotBuddyCreatedGames->isChecked();
}
QString DlgFilterGames::getGameNameFilter() const QString DlgFilterGames::getGameNameFilter() const
{ {
return gameNameFilterEdit->text(); return gameNameFilterEdit->text();

View file

@ -26,6 +26,7 @@ private:
QCheckBox *hideGamesThatStarted; QCheckBox *hideGamesThatStarted;
QCheckBox *hidePasswordProtectedGames; QCheckBox *hidePasswordProtectedGames;
QCheckBox *hideIgnoredUserGames; QCheckBox *hideIgnoredUserGames;
QCheckBox *hideNotBuddyCreatedGames;
QLineEdit *gameNameFilterEdit; QLineEdit *gameNameFilterEdit;
QLineEdit *creatorNameFilterEdit; QLineEdit *creatorNameFilterEdit;
QMap<int, QCheckBox *> gameTypeFilterCheckBoxes; QMap<int, QCheckBox *> gameTypeFilterCheckBoxes;
@ -58,6 +59,7 @@ public:
void setHideBuddiesOnlyGames(bool _hideBuddiesOnlyGames); void setHideBuddiesOnlyGames(bool _hideBuddiesOnlyGames);
bool getHideIgnoredUserGames() const; bool getHideIgnoredUserGames() const;
void setHideIgnoredUserGames(bool _hideIgnoredUserGames); void setHideIgnoredUserGames(bool _hideIgnoredUserGames);
bool getHideNotBuddyCreatedGames() const;
QString getGameNameFilter() const; QString getGameNameFilter() const;
void setGameNameFilter(const QString &_gameNameFilter); void setGameNameFilter(const QString &_gameNameFilter);
QString getCreatorNameFilter() const; QString getCreatorNameFilter() const;

View file

@ -160,6 +160,7 @@ void GameSelector::actSetFilter()
gameListProxyModel->setHideGamesThatStarted(dlg.getHideGamesThatStarted()); gameListProxyModel->setHideGamesThatStarted(dlg.getHideGamesThatStarted());
gameListProxyModel->setHidePasswordProtectedGames(dlg.getHidePasswordProtectedGames()); gameListProxyModel->setHidePasswordProtectedGames(dlg.getHidePasswordProtectedGames());
gameListProxyModel->setHideIgnoredUserGames(dlg.getHideIgnoredUserGames()); gameListProxyModel->setHideIgnoredUserGames(dlg.getHideIgnoredUserGames());
gameListProxyModel->setHideNotBuddyCreatedGames(dlg.getHideNotBuddyCreatedGames());
gameListProxyModel->setGameNameFilter(dlg.getGameNameFilter()); gameListProxyModel->setGameNameFilter(dlg.getGameNameFilter());
gameListProxyModel->setCreatorNameFilter(dlg.getCreatorNameFilter()); gameListProxyModel->setCreatorNameFilter(dlg.getCreatorNameFilter());
gameListProxyModel->setGameTypeFilter(dlg.getGameTypeFilter()); gameListProxyModel->setGameTypeFilter(dlg.getGameTypeFilter());

View file

@ -314,6 +314,12 @@ void GamesProxyModel::setHidePasswordProtectedGames(bool _showPasswordProtectedG
invalidateFilter(); invalidateFilter();
} }
void GamesProxyModel::setHideNotBuddyCreatedGames(bool value)
{
hideNotBuddyCreatedGames = value;
invalidateFilter();
}
void GamesProxyModel::setGameNameFilter(const QString &_gameNameFilter) void GamesProxyModel::setGameNameFilter(const QString &_gameNameFilter)
{ {
gameNameFilter = _gameNameFilter; gameNameFilter = _gameNameFilter;
@ -391,6 +397,7 @@ void GamesProxyModel::resetFilterParameters()
hidePasswordProtectedGames = false; hidePasswordProtectedGames = false;
hideBuddiesOnlyGames = false; hideBuddiesOnlyGames = false;
hideIgnoredUserGames = false; hideIgnoredUserGames = false;
hideNotBuddyCreatedGames = false;
gameNameFilter = QString(); gameNameFilter = QString();
creatorNameFilter = QString(); creatorNameFilter = QString();
gameTypeFilter.clear(); gameTypeFilter.clear();
@ -408,8 +415,8 @@ void GamesProxyModel::resetFilterParameters()
bool GamesProxyModel::areFilterParametersSetToDefaults() const bool GamesProxyModel::areFilterParametersSetToDefaults() const
{ {
return !hideFullGames && !hideGamesThatStarted && !hidePasswordProtectedGames && !hideBuddiesOnlyGames && return !hideFullGames && !hideGamesThatStarted && !hidePasswordProtectedGames && !hideBuddiesOnlyGames &&
!hideIgnoredUserGames && gameNameFilter.isEmpty() && creatorNameFilter.isEmpty() && !hideIgnoredUserGames && !hideNotBuddyCreatedGames && gameNameFilter.isEmpty() &&
gameTypeFilter.isEmpty() && maxPlayersFilterMin == DEFAULT_MAX_PLAYERS_MIN && creatorNameFilter.isEmpty() && gameTypeFilter.isEmpty() && maxPlayersFilterMin == DEFAULT_MAX_PLAYERS_MIN &&
maxPlayersFilterMax == DEFAULT_MAX_PLAYERS_MAX && maxGameAge == DEFAULT_MAX_GAME_AGE && maxPlayersFilterMax == DEFAULT_MAX_PLAYERS_MAX && maxGameAge == DEFAULT_MAX_GAME_AGE &&
!showOnlyIfSpectatorsCanWatch && !showSpectatorPasswordProtected && !showOnlyIfSpectatorsCanChat && !showOnlyIfSpectatorsCanWatch && !showSpectatorPasswordProtected && !showOnlyIfSpectatorsCanChat &&
!showOnlyIfSpectatorsCanSeeHands; !showOnlyIfSpectatorsCanSeeHands;
@ -423,6 +430,7 @@ void GamesProxyModel::loadFilterParameters(const QMap<int, QString> &allGameType
hidePasswordProtectedGames = gameFilters.isHidePasswordProtectedGames(); hidePasswordProtectedGames = gameFilters.isHidePasswordProtectedGames();
hideIgnoredUserGames = gameFilters.isHideIgnoredUserGames(); hideIgnoredUserGames = gameFilters.isHideIgnoredUserGames();
hideBuddiesOnlyGames = gameFilters.isHideBuddiesOnlyGames(); hideBuddiesOnlyGames = gameFilters.isHideBuddiesOnlyGames();
hideNotBuddyCreatedGames = gameFilters.isHideNotBuddyCreatedGames();
gameNameFilter = gameFilters.getGameNameFilter(); gameNameFilter = gameFilters.getGameNameFilter();
creatorNameFilter = gameFilters.getCreatorNameFilter(); creatorNameFilter = gameFilters.getCreatorNameFilter();
maxPlayersFilterMin = gameFilters.getMinPlayers(); maxPlayersFilterMin = gameFilters.getMinPlayers();
@ -452,6 +460,7 @@ void GamesProxyModel::saveFilterParameters(const QMap<int, QString> &allGameType
gameFilters.setHideGamesThatStarted(hideGamesThatStarted); gameFilters.setHideGamesThatStarted(hideGamesThatStarted);
gameFilters.setHidePasswordProtectedGames(hidePasswordProtectedGames); gameFilters.setHidePasswordProtectedGames(hidePasswordProtectedGames);
gameFilters.setHideIgnoredUserGames(hideIgnoredUserGames); gameFilters.setHideIgnoredUserGames(hideIgnoredUserGames);
gameFilters.setHideNotBuddyCreatedGames(hideNotBuddyCreatedGames);
gameFilters.setGameNameFilter(gameNameFilter); gameFilters.setGameNameFilter(gameNameFilter);
gameFilters.setCreatorNameFilter(creatorNameFilter); gameFilters.setCreatorNameFilter(creatorNameFilter);
@ -498,6 +507,9 @@ bool GamesProxyModel::filterAcceptsRow(int sourceRow) const
if (hideIgnoredUserGames && userListProxy->isUserIgnored(QString::fromStdString(game.creator_info().name()))) { if (hideIgnoredUserGames && userListProxy->isUserIgnored(QString::fromStdString(game.creator_info().name()))) {
return false; return false;
} }
if (hideNotBuddyCreatedGames && !userListProxy->isUserBuddy(QString::fromStdString(game.creator_info().name()))) {
return false;
}
if (hideFullGames && game.player_count() == game.max_players()) if (hideFullGames && game.player_count() == game.max_players())
return false; return false;
if (hideGamesThatStarted && game.started()) if (hideGamesThatStarted && game.started())

View file

@ -80,6 +80,7 @@ private:
bool hideFullGames; bool hideFullGames;
bool hideGamesThatStarted; bool hideGamesThatStarted;
bool hidePasswordProtectedGames; bool hidePasswordProtectedGames;
bool hideNotBuddyCreatedGames;
QString gameNameFilter, creatorNameFilter; QString gameNameFilter, creatorNameFilter;
QSet<int> gameTypeFilter; QSet<int> gameTypeFilter;
quint32 maxPlayersFilterMin, maxPlayersFilterMax; quint32 maxPlayersFilterMin, maxPlayersFilterMax;
@ -115,6 +116,11 @@ public:
return hidePasswordProtectedGames; return hidePasswordProtectedGames;
} }
void setHidePasswordProtectedGames(bool _showPasswordProtectedGames); void setHidePasswordProtectedGames(bool _showPasswordProtectedGames);
bool getHideNotBuddyCreatedGames() const
{
return hideNotBuddyCreatedGames;
}
void setHideNotBuddyCreatedGames(bool value);
QString getGameNameFilter() const QString getGameNameFilter() const
{ {
return gameNameFilter; return gameNameFilter;

View file

@ -72,6 +72,17 @@ bool GameFiltersSettings::isHideIgnoredUserGames()
return !(previous == QVariant()) && previous.toBool(); return !(previous == QVariant()) && previous.toBool();
} }
void GameFiltersSettings::setHideNotBuddyCreatedGames(bool hide)
{
setValue(hide, "hide_not_buddy_created_games", "filter_games");
}
bool GameFiltersSettings::isHideNotBuddyCreatedGames()
{
QVariant previous = getValue("hide_not_buddy_created_games", "filter_games");
return !(previous == QVariant()) && previous.toBool();
}
void GameFiltersSettings::setGameNameFilter(QString gameName) void GameFiltersSettings::setGameNameFilter(QString gameName)
{ {
setValue(gameName, "game_name_filter", "filter_games"); setValue(gameName, "game_name_filter", "filter_games");

View file

@ -14,6 +14,7 @@ public:
bool isHideGamesThatStarted(); bool isHideGamesThatStarted();
bool isHidePasswordProtectedGames(); bool isHidePasswordProtectedGames();
bool isHideIgnoredUserGames(); bool isHideIgnoredUserGames();
bool isHideNotBuddyCreatedGames();
QString getGameNameFilter(); QString getGameNameFilter();
QString getCreatorNameFilter(); QString getCreatorNameFilter();
int getMinPlayers(); int getMinPlayers();
@ -30,6 +31,7 @@ public:
void setHideFullGames(bool hide); void setHideFullGames(bool hide);
void setHideGamesThatStarted(bool hide); void setHideGamesThatStarted(bool hide);
void setHidePasswordProtectedGames(bool hide); void setHidePasswordProtectedGames(bool hide);
void setHideNotBuddyCreatedGames(bool hide);
void setGameNameFilter(QString gameName); void setGameNameFilter(QString gameName);
void setCreatorNameFilter(QString creatorName); void setCreatorNameFilter(QString creatorName);
void setMinPlayers(int min); void setMinPlayers(int min);