radio buttons for game types
This commit is contained in:
parent
8644016d3c
commit
0df4b34fe4
2 changed files with 27 additions and 32 deletions
|
@ -3,24 +3,21 @@
|
||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QGridLayout>
|
#include <QGridLayout>
|
||||||
#include <QVBoxLayout>
|
#include <QRadioButton>
|
||||||
#include <QHBoxLayout>
|
|
||||||
#include <QSpinBox>
|
#include <QSpinBox>
|
||||||
#include <QGroupBox>
|
#include <QGroupBox>
|
||||||
#include <QDialogButtonBox>
|
#include <QDialogButtonBox>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QSet>
|
#include <QSet>
|
||||||
|
#include <QWizard>
|
||||||
#include "dlg_creategame.h"
|
#include "dlg_creategame.h"
|
||||||
#include "tab_room.h"
|
#include "tab_room.h"
|
||||||
#include "settingscache.h"
|
#include "settingscache.h"
|
||||||
|
|
||||||
#include "pending_command.h"
|
#include "pending_command.h"
|
||||||
#include "pb/room_commands.pb.h"
|
|
||||||
#include "pb/serverinfo_game.pb.h"
|
#include "pb/serverinfo_game.pb.h"
|
||||||
#include "pb/response.pb.h"
|
|
||||||
|
|
||||||
void DlgCreateGame::sharedCtor()
|
void DlgCreateGame::sharedCtor() {
|
||||||
{
|
|
||||||
rememberGameSettings = new QCheckBox(tr("Re&member settings"));
|
rememberGameSettings = new QCheckBox(tr("Re&member settings"));
|
||||||
descriptionLabel = new QLabel(tr("&Description:"));
|
descriptionLabel = new QLabel(tr("&Description:"));
|
||||||
descriptionEdit = new QLineEdit;
|
descriptionEdit = new QLineEdit;
|
||||||
|
@ -45,10 +42,11 @@ void DlgCreateGame::sharedCtor()
|
||||||
QMapIterator<int, QString> gameTypeIterator(gameTypes);
|
QMapIterator<int, QString> gameTypeIterator(gameTypes);
|
||||||
while (gameTypeIterator.hasNext()) {
|
while (gameTypeIterator.hasNext()) {
|
||||||
gameTypeIterator.next();
|
gameTypeIterator.next();
|
||||||
QCheckBox *gameTypeCheckBox = new QCheckBox(gameTypeIterator.value());
|
QRadioButton *gameTypeRadioButton = new QRadioButton(gameTypeIterator.value(), this);
|
||||||
gameTypeLayout->addWidget(gameTypeCheckBox);
|
gameTypeLayout->addWidget(gameTypeRadioButton);
|
||||||
gameTypeCheckBoxes.insert(gameTypeIterator.key(), gameTypeCheckBox);
|
gameTypeCheckBoxes.insert(gameTypeIterator.key(), gameTypeRadioButton);
|
||||||
gameTypeCheckBoxes[gameTypeIterator.key()]->setChecked((settingsCache->getGameTypes().contains(gameTypeIterator.value() + ", ") ? true : false));
|
bool isChecked = settingsCache->getGameTypes().contains(gameTypeIterator.value() + ", ");
|
||||||
|
gameTypeCheckBoxes[gameTypeIterator.key()]->setChecked(isChecked);
|
||||||
}
|
}
|
||||||
QGroupBox *gameTypeGroupBox = new QGroupBox(tr("Game type"));
|
QGroupBox *gameTypeGroupBox = new QGroupBox(tr("Game type"));
|
||||||
gameTypeGroupBox->setLayout(gameTypeLayout);
|
gameTypeGroupBox->setLayout(gameTypeLayout);
|
||||||
|
@ -59,8 +57,7 @@ void DlgCreateGame::sharedCtor()
|
||||||
|
|
||||||
onlyBuddiesCheckBox = new QCheckBox(tr("Only &buddies can join"));
|
onlyBuddiesCheckBox = new QCheckBox(tr("Only &buddies can join"));
|
||||||
onlyRegisteredCheckBox = new QCheckBox(tr("Only ®istered users can join"));
|
onlyRegisteredCheckBox = new QCheckBox(tr("Only ®istered users can join"));
|
||||||
if (room && room->getUserInfo()->user_level() & ServerInfo_User::IsRegistered)
|
if (room && room->getUserInfo()->user_level() & ServerInfo_User::IsRegistered) {
|
||||||
{
|
|
||||||
onlyRegisteredCheckBox->setChecked(true);
|
onlyRegisteredCheckBox->setChecked(true);
|
||||||
} else {
|
} else {
|
||||||
onlyBuddiesCheckBox->setEnabled(false);
|
onlyBuddiesCheckBox->setEnabled(false);
|
||||||
|
@ -109,15 +106,13 @@ void DlgCreateGame::sharedCtor()
|
||||||
}
|
}
|
||||||
|
|
||||||
DlgCreateGame::DlgCreateGame(TabRoom *_room, const QMap<int, QString> &_gameTypes, QWidget *parent)
|
DlgCreateGame::DlgCreateGame(TabRoom *_room, const QMap<int, QString> &_gameTypes, QWidget *parent)
|
||||||
: QDialog(parent), room(_room), gameTypes(_gameTypes)
|
: QDialog(parent), room(_room), gameTypes(_gameTypes) {
|
||||||
{
|
|
||||||
sharedCtor();
|
sharedCtor();
|
||||||
|
|
||||||
rememberGameSettings->setChecked(settingsCache->getRememberGameSettings());
|
rememberGameSettings->setChecked(settingsCache->getRememberGameSettings());
|
||||||
descriptionEdit->setText(settingsCache->getGameDescription());
|
descriptionEdit->setText(settingsCache->getGameDescription());
|
||||||
maxPlayersEdit->setValue(settingsCache->getMaxPlayers());
|
maxPlayersEdit->setValue(settingsCache->getMaxPlayers());
|
||||||
if (room && room->getUserInfo()->user_level() & ServerInfo_User::IsRegistered)
|
if (room && room->getUserInfo()->user_level() & ServerInfo_User::IsRegistered) {
|
||||||
{
|
|
||||||
onlyBuddiesCheckBox->setChecked(settingsCache->getOnlyBuddies());
|
onlyBuddiesCheckBox->setChecked(settingsCache->getOnlyBuddies());
|
||||||
onlyRegisteredCheckBox->setChecked(settingsCache->getOnlyRegistered());
|
onlyRegisteredCheckBox->setChecked(settingsCache->getOnlyRegistered());
|
||||||
} else {
|
} else {
|
||||||
|
@ -129,7 +124,7 @@ DlgCreateGame::DlgCreateGame(TabRoom *_room, const QMap<int, QString> &_gameType
|
||||||
spectatorsCanTalkCheckBox->setChecked(settingsCache->getSpectatorsCanTalk());
|
spectatorsCanTalkCheckBox->setChecked(settingsCache->getSpectatorsCanTalk());
|
||||||
spectatorsSeeEverythingCheckBox->setChecked(settingsCache->getSpectatorsCanSeeEverything());
|
spectatorsSeeEverythingCheckBox->setChecked(settingsCache->getSpectatorsCanSeeEverything());
|
||||||
|
|
||||||
if (!rememberGameSettings->isChecked()){
|
if (!rememberGameSettings->isChecked()) {
|
||||||
actReset();
|
actReset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,8 +139,7 @@ DlgCreateGame::DlgCreateGame(TabRoom *_room, const QMap<int, QString> &_gameType
|
||||||
}
|
}
|
||||||
|
|
||||||
DlgCreateGame::DlgCreateGame(const ServerInfo_Game &gameInfo, const QMap<int, QString> &_gameTypes, QWidget *parent)
|
DlgCreateGame::DlgCreateGame(const ServerInfo_Game &gameInfo, const QMap<int, QString> &_gameTypes, QWidget *parent)
|
||||||
: QDialog(parent), room(0), gameTypes(_gameTypes)
|
: QDialog(parent), room(0), gameTypes(_gameTypes) {
|
||||||
{
|
|
||||||
sharedCtor();
|
sharedCtor();
|
||||||
|
|
||||||
rememberGameSettings->setEnabled(false);
|
rememberGameSettings->setEnabled(false);
|
||||||
|
@ -176,7 +170,7 @@ DlgCreateGame::DlgCreateGame(const ServerInfo_Game &gameInfo, const QMap<int, QS
|
||||||
while (gameTypeIterator.hasNext()) {
|
while (gameTypeIterator.hasNext()) {
|
||||||
gameTypeIterator.next();
|
gameTypeIterator.next();
|
||||||
|
|
||||||
QCheckBox *gameTypeCheckBox = gameTypeCheckBoxes.value(gameTypeIterator.key());
|
QRadioButton *gameTypeCheckBox = gameTypeCheckBoxes.value(gameTypeIterator.key());
|
||||||
gameTypeCheckBox->setEnabled(false);
|
gameTypeCheckBox->setEnabled(false);
|
||||||
gameTypeCheckBox->setChecked(types.contains(gameTypeIterator.key()));
|
gameTypeCheckBox->setChecked(types.contains(gameTypeIterator.key()));
|
||||||
}
|
}
|
||||||
|
@ -186,8 +180,7 @@ DlgCreateGame::DlgCreateGame(const ServerInfo_Game &gameInfo, const QMap<int, QS
|
||||||
setWindowTitle(tr("Game information"));
|
setWindowTitle(tr("Game information"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void DlgCreateGame::actReset()
|
void DlgCreateGame::actReset() {
|
||||||
{
|
|
||||||
descriptionEdit->setText("");
|
descriptionEdit->setText("");
|
||||||
maxPlayersEdit->setValue(2);
|
maxPlayersEdit->setValue(2);
|
||||||
|
|
||||||
|
@ -200,18 +193,20 @@ void DlgCreateGame::actReset()
|
||||||
spectatorsCanTalkCheckBox->setChecked(false);
|
spectatorsCanTalkCheckBox->setChecked(false);
|
||||||
spectatorsSeeEverythingCheckBox->setChecked(false);
|
spectatorsSeeEverythingCheckBox->setChecked(false);
|
||||||
|
|
||||||
QMapIterator<int, QCheckBox *> gameTypeCheckBoxIterator(gameTypeCheckBoxes);
|
QMapIterator<int, QRadioButton *> gameTypeCheckBoxIterator(gameTypeCheckBoxes);
|
||||||
while (gameTypeCheckBoxIterator.hasNext()) {
|
while (gameTypeCheckBoxIterator.hasNext()) {
|
||||||
gameTypeCheckBoxIterator.next();
|
gameTypeCheckBoxIterator.next();
|
||||||
|
// must set auto enclusive to false to be able to set the check to false
|
||||||
|
gameTypeCheckBoxIterator.value()->setAutoExclusive(false);
|
||||||
gameTypeCheckBoxIterator.value()->setChecked(false);
|
gameTypeCheckBoxIterator.value()->setChecked(false);
|
||||||
|
gameTypeCheckBoxIterator.value()->setAutoExclusive(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
descriptionEdit->setFocus();
|
descriptionEdit->setFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DlgCreateGame::actOK()
|
void DlgCreateGame::actOK() {
|
||||||
{
|
|
||||||
Command_CreateGame cmd;
|
Command_CreateGame cmd;
|
||||||
cmd.set_description(descriptionEdit->text().simplified().toStdString());
|
cmd.set_description(descriptionEdit->text().simplified().toStdString());
|
||||||
cmd.set_password(passwordEdit->text().toStdString());
|
cmd.set_password(passwordEdit->text().toStdString());
|
||||||
|
@ -224,7 +219,7 @@ void DlgCreateGame::actOK()
|
||||||
cmd.set_spectators_see_everything(spectatorsSeeEverythingCheckBox->isChecked());
|
cmd.set_spectators_see_everything(spectatorsSeeEverythingCheckBox->isChecked());
|
||||||
|
|
||||||
QString gameTypes = QString();
|
QString gameTypes = QString();
|
||||||
QMapIterator<int, QCheckBox *> gameTypeCheckBoxIterator(gameTypeCheckBoxes);
|
QMapIterator<int, QRadioButton *> gameTypeCheckBoxIterator(gameTypeCheckBoxes);
|
||||||
while (gameTypeCheckBoxIterator.hasNext()) {
|
while (gameTypeCheckBoxIterator.hasNext()) {
|
||||||
gameTypeCheckBoxIterator.next();
|
gameTypeCheckBoxIterator.next();
|
||||||
if (gameTypeCheckBoxIterator.value()->isChecked()) {
|
if (gameTypeCheckBoxIterator.value()->isChecked()) {
|
||||||
|
@ -234,7 +229,7 @@ void DlgCreateGame::actOK()
|
||||||
}
|
}
|
||||||
|
|
||||||
settingsCache->setRememberGameSettings(rememberGameSettings->isChecked());
|
settingsCache->setRememberGameSettings(rememberGameSettings->isChecked());
|
||||||
if (rememberGameSettings->isChecked()){
|
if (rememberGameSettings->isChecked()) {
|
||||||
settingsCache->setGameDescription(descriptionEdit->text());
|
settingsCache->setGameDescription(descriptionEdit->text());
|
||||||
settingsCache->setMaxPlayers(maxPlayersEdit->value());
|
settingsCache->setMaxPlayers(maxPlayersEdit->value());
|
||||||
settingsCache->setOnlyBuddies(onlyBuddiesCheckBox->isChecked());
|
settingsCache->setOnlyBuddies(onlyBuddiesCheckBox->isChecked());
|
||||||
|
@ -252,8 +247,7 @@ void DlgCreateGame::actOK()
|
||||||
buttonBox->setEnabled(false);
|
buttonBox->setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DlgCreateGame::checkResponse(const Response &response)
|
void DlgCreateGame::checkResponse(const Response &response) {
|
||||||
{
|
|
||||||
buttonBox->setEnabled(true);
|
buttonBox->setEnabled(true);
|
||||||
|
|
||||||
if (response.response_code() == Response::RespOk)
|
if (response.response_code() == Response::RespOk)
|
||||||
|
@ -264,9 +258,9 @@ void DlgCreateGame::checkResponse(const Response &response)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DlgCreateGame::spectatorsAllowedChanged(int state)
|
void DlgCreateGame::spectatorsAllowedChanged(int state) {
|
||||||
{
|
|
||||||
spectatorsNeedPasswordCheckBox->setEnabled(state);
|
spectatorsNeedPasswordCheckBox->setEnabled(state);
|
||||||
spectatorsCanTalkCheckBox->setEnabled(state);
|
spectatorsCanTalkCheckBox->setEnabled(state);
|
||||||
spectatorsSeeEverythingCheckBox->setEnabled(state);
|
spectatorsSeeEverythingCheckBox->setEnabled(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ class QLabel;
|
||||||
class QLineEdit;
|
class QLineEdit;
|
||||||
class QPushButton;
|
class QPushButton;
|
||||||
class QCheckBox;
|
class QCheckBox;
|
||||||
|
class QRadioButton;
|
||||||
class QGroupBox;
|
class QGroupBox;
|
||||||
class QSpinBox;
|
class QSpinBox;
|
||||||
class QDialogButtonBox;
|
class QDialogButtonBox;
|
||||||
|
@ -29,7 +30,7 @@ private slots:
|
||||||
private:
|
private:
|
||||||
TabRoom *room;
|
TabRoom *room;
|
||||||
QMap<int, QString> gameTypes;
|
QMap<int, QString> gameTypes;
|
||||||
QMap<int, QCheckBox *> gameTypeCheckBoxes;
|
QMap<int, QRadioButton *> gameTypeCheckBoxes;
|
||||||
|
|
||||||
QGroupBox *spectatorsGroupBox;
|
QGroupBox *spectatorsGroupBox;
|
||||||
QLabel *descriptionLabel, *passwordLabel, *maxPlayersLabel;
|
QLabel *descriptionLabel, *passwordLabel, *maxPlayersLabel;
|
||||||
|
|
Loading…
Reference in a new issue