Merge pull request #2049 from Cockatrice/filterBuddiesOnly
filter buddies only
This commit is contained in:
commit
066aff96d7
7 changed files with 56 additions and 3 deletions
|
@ -16,6 +16,9 @@ DlgFilterGames::DlgFilterGames(const QMap<int, QString> &_allGameTypes, const Ga
|
|||
allGameTypes(_allGameTypes),
|
||||
gamesProxyModel(_gamesProxyModel)
|
||||
{
|
||||
showBuddiesOnlyGames = new QCheckBox(tr("Show '&buddies only' games"));
|
||||
showBuddiesOnlyGames->setChecked(gamesProxyModel->getShowBuddiesOnlyGames());
|
||||
|
||||
unavailableGamesVisibleCheckBox = new QCheckBox(tr("Show &unavailable games"));
|
||||
unavailableGamesVisibleCheckBox->setChecked(gamesProxyModel->getUnavailableGamesVisible());
|
||||
|
||||
|
@ -73,14 +76,23 @@ DlgFilterGames::DlgFilterGames(const QMap<int, QString> &_allGameTypes, const Ga
|
|||
QGroupBox *maxPlayersGroupBox = new QGroupBox(tr("Maximum player count"));
|
||||
maxPlayersGroupBox->setLayout(maxPlayersFilterLayout);
|
||||
|
||||
QGridLayout *restrictionsLayout = new QGridLayout;
|
||||
restrictionsLayout->addWidget(unavailableGamesVisibleCheckBox, 0, 0);
|
||||
restrictionsLayout->addWidget(showPasswordProtectedGames, 1, 0);
|
||||
restrictionsLayout->addWidget(showBuddiesOnlyGames, 2, 0);
|
||||
|
||||
QGroupBox *restrictionsGroupBox = new QGroupBox(tr("Restrictions"));
|
||||
restrictionsGroupBox->setLayout(restrictionsLayout);
|
||||
|
||||
|
||||
QGridLayout *leftGrid = new QGridLayout;
|
||||
leftGrid->addWidget(gameNameFilterLabel, 0, 0);
|
||||
leftGrid->addWidget(gameNameFilterEdit, 0, 1);
|
||||
leftGrid->addWidget(creatorNameFilterLabel, 1, 0);
|
||||
leftGrid->addWidget(creatorNameFilterEdit, 1, 1);
|
||||
leftGrid->addWidget(maxPlayersGroupBox, 2, 0, 1, 2);
|
||||
leftGrid->addWidget(unavailableGamesVisibleCheckBox, 3, 0, 1, 2);
|
||||
leftGrid->addWidget(showPasswordProtectedGames, 4, 0, 1, 2);
|
||||
leftGrid->addWidget(restrictionsGroupBox, 3, 0, 1, 2);
|
||||
|
||||
|
||||
QVBoxLayout *leftColumn = new QVBoxLayout;
|
||||
leftColumn->addLayout(leftGrid);
|
||||
|
@ -119,6 +131,16 @@ void DlgFilterGames::setUnavailableGamesVisible(bool _unavailableGamesVisible)
|
|||
unavailableGamesVisibleCheckBox->setChecked(_unavailableGamesVisible);
|
||||
}
|
||||
|
||||
bool DlgFilterGames::getShowBuddiesOnlyGames() const
|
||||
{
|
||||
return showBuddiesOnlyGames->isChecked();
|
||||
}
|
||||
|
||||
void DlgFilterGames::setShowBuddiesOnlyGames(bool _showBuddiesOnlyGames)
|
||||
{
|
||||
showBuddiesOnlyGames->setChecked(_showBuddiesOnlyGames);
|
||||
}
|
||||
|
||||
bool DlgFilterGames::getShowPasswordProtectedGames() const
|
||||
{
|
||||
return showPasswordProtectedGames->isChecked();
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include <QDialog>
|
||||
#include <QSet>
|
||||
#include <QMap>
|
||||
#include <QCheckBox>
|
||||
#include "gamesmodel.h"
|
||||
|
||||
class QCheckBox;
|
||||
|
@ -13,6 +14,7 @@ class QSpinBox;
|
|||
class DlgFilterGames : public QDialog {
|
||||
Q_OBJECT
|
||||
private:
|
||||
QCheckBox *showBuddiesOnlyGames;
|
||||
QCheckBox *unavailableGamesVisibleCheckBox;
|
||||
QCheckBox *showPasswordProtectedGames;
|
||||
QLineEdit *gameNameFilterEdit;
|
||||
|
@ -33,6 +35,8 @@ public:
|
|||
void setUnavailableGamesVisible(bool _unavailableGamesVisible);
|
||||
bool getShowPasswordProtectedGames() const;
|
||||
void setShowPasswordProtectedGames(bool _passwordProtectedGamesHidden);
|
||||
bool getShowBuddiesOnlyGames() const;
|
||||
void setShowBuddiesOnlyGames(bool _showBuddiesOnlyGames);
|
||||
QString getGameNameFilter() const;
|
||||
void setGameNameFilter(const QString &_gameNameFilter);
|
||||
QString getCreatorNameFilter() const;
|
||||
|
|
|
@ -109,6 +109,7 @@ void GameSelector::actSetFilter()
|
|||
|
||||
clearFilterButton->setEnabled(true);
|
||||
|
||||
gameListProxyModel->setShowBuddiesOnlyGames(dlg.getShowBuddiesOnlyGames());
|
||||
gameListProxyModel->setUnavailableGamesVisible(dlg.getUnavailableGamesVisible());
|
||||
gameListProxyModel->setShowPasswordProtectedGames(dlg.getShowPasswordProtectedGames());
|
||||
gameListProxyModel->setGameNameFilter(dlg.getGameNameFilter());
|
||||
|
|
|
@ -231,6 +231,11 @@ GamesProxyModel::GamesProxyModel(QObject *parent, ServerInfo_User *_ownUser)
|
|||
setDynamicSortFilter(true);
|
||||
}
|
||||
|
||||
void GamesProxyModel::setShowBuddiesOnlyGames(bool _showBuddiesOnlyGames) {
|
||||
showBuddiesOnlyGames = _showBuddiesOnlyGames;
|
||||
invalidateFilter();
|
||||
}
|
||||
|
||||
void GamesProxyModel::setUnavailableGamesVisible(bool _unavailableGamesVisible)
|
||||
{
|
||||
unavailableGamesVisible = _unavailableGamesVisible;
|
||||
|
@ -303,6 +308,7 @@ void GamesProxyModel::loadFilterParameters(const QMap<int, QString> &allGameType
|
|||
|
||||
void GamesProxyModel::saveFilterParameters(const QMap<int, QString> &allGameTypes)
|
||||
{
|
||||
settingsCache->gameFilters().setShowBuddiesOnlyGames(showBuddiesOnlyGames);
|
||||
settingsCache->gameFilters().setUnavailableGamesVisible(unavailableGamesVisible);
|
||||
settingsCache->gameFilters().setShowPasswordProtectedGames(showPasswordProtectedGames);
|
||||
settingsCache->gameFilters().setGameNameFilter(gameNameFilter);
|
||||
|
@ -325,6 +331,10 @@ bool GamesProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &/*sourc
|
|||
return false;
|
||||
|
||||
const ServerInfo_Game &game = model->getGame(sourceRow);
|
||||
|
||||
if (!showBuddiesOnlyGames && game.only_buddies()) {
|
||||
return false;
|
||||
}
|
||||
if (!unavailableGamesVisible) {
|
||||
if (game.player_count() == game.max_players())
|
||||
return false;
|
||||
|
|
|
@ -46,6 +46,7 @@ class GamesProxyModel : public QSortFilterProxyModel {
|
|||
Q_OBJECT
|
||||
private:
|
||||
ServerInfo_User *ownUser;
|
||||
bool showBuddiesOnlyGames;
|
||||
bool unavailableGamesVisible;
|
||||
bool showPasswordProtectedGames;
|
||||
QString gameNameFilter, creatorNameFilter;
|
||||
|
@ -56,6 +57,8 @@ private:
|
|||
public:
|
||||
GamesProxyModel(QObject *parent = 0, ServerInfo_User *_ownUser = 0);
|
||||
|
||||
bool getShowBuddiesOnlyGames() const {return showBuddiesOnlyGames; }
|
||||
void setShowBuddiesOnlyGames(bool _showBuddiesOnlyGames);
|
||||
bool getUnavailableGamesVisible() const { return unavailableGamesVisible; }
|
||||
void setUnavailableGamesVisible(bool _unavailableGamesVisible);
|
||||
bool getShowPasswordProtectedGames() const { return showPasswordProtectedGames; }
|
||||
|
|
|
@ -15,6 +15,17 @@ QString GameFiltersSettings::hashGameType(const QString &gameType) const
|
|||
return QCryptographicHash::hash(gameType.toUtf8(), QCryptographicHash::Md5).toHex();
|
||||
}
|
||||
|
||||
void GameFiltersSettings::setShowBuddiesOnlyGames(bool show)
|
||||
{
|
||||
setValue(show, "show_buddies_only_games", "filter_games");
|
||||
}
|
||||
|
||||
bool GameFiltersSettings::isShowBuddiesOnlyGames()
|
||||
{
|
||||
QVariant previous = getValue("show_buddies_only_games", "filter_games");
|
||||
return previous == QVariant() ? true : previous.toBool();
|
||||
}
|
||||
|
||||
void GameFiltersSettings::setUnavailableGamesVisible(bool enabled)
|
||||
{
|
||||
setValue(enabled, "unavailable_games_visible","filter_games");
|
||||
|
|
|
@ -7,7 +7,8 @@ class GameFiltersSettings : public SettingsManager
|
|||
{
|
||||
Q_OBJECT
|
||||
friend class SettingsCache;
|
||||
public:
|
||||
public:
|
||||
bool isShowBuddiesOnlyGames();
|
||||
bool isUnavailableGamesVisible();
|
||||
bool isShowPasswordProtectedGames();
|
||||
QString getGameNameFilter();
|
||||
|
@ -15,6 +16,7 @@ public:
|
|||
int getMaxPlayers();
|
||||
bool isGameTypeEnabled(QString gametype);
|
||||
|
||||
void setShowBuddiesOnlyGames(bool show);
|
||||
void setUnavailableGamesVisible(bool enabled);
|
||||
void setShowPasswordProtectedGames(bool show);
|
||||
void setGameNameFilter(QString gameName);
|
||||
|
|
Loading…
Reference in a new issue