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