diff --git a/cockatrice/src/dlg_creategame.cpp b/cockatrice/src/dlg_creategame.cpp index 72b26ee9..2997779e 100644 --- a/cockatrice/src/dlg_creategame.cpp +++ b/cockatrice/src/dlg_creategame.cpp @@ -12,6 +12,7 @@ #include #include "dlg_creategame.h" #include "tab_room.h" +#include "settingscache.h" #include "pending_command.h" #include "pb/room_commands.pb.h" @@ -45,6 +46,7 @@ void DlgCreateGame::sharedCtor() QCheckBox *gameTypeCheckBox = new QCheckBox(gameTypeIterator.value()); gameTypeLayout->addWidget(gameTypeCheckBox); gameTypeCheckBoxes.insert(gameTypeIterator.key(), gameTypeCheckBox); + gameTypeCheckBoxes[gameTypeIterator.key()]->setChecked((settingsCache->getGameTypes().contains(gameTypeIterator.value() + ", ") ? true : false)); } QGroupBox *gameTypeGroupBox = new QGroupBox(tr("Game type")); gameTypeGroupBox->setLayout(gameTypeLayout); @@ -109,8 +111,20 @@ DlgCreateGame::DlgCreateGame(TabRoom *_room, const QMap &_gameType { sharedCtor(); + descriptionEdit->setText(settingsCache->getGameDescription()); + maxPlayersEdit->setValue(settingsCache->getMaxPlayers()); + onlyBuddiesCheckBox->setChecked(settingsCache->getOnlyBuddies()); + onlyRegisteredCheckBox->setChecked(settingsCache->getOnlyRegistered()); + spectatorsAllowedCheckBox->setChecked(settingsCache->getSpectatorsAllowed()); + spectatorsNeedPasswordCheckBox->setChecked(settingsCache->getSpectatorsNeedPassword()); + spectatorsCanTalkCheckBox->setChecked(settingsCache->getSpectatorsCanTalk()); + spectatorsSeeEverythingCheckBox->setChecked(settingsCache->getSpectatorsCanSeeEverything()); + + clearButton = new QPushButton(tr("&Clear")); buttonBox->addButton(QDialogButtonBox::Cancel); + buttonBox->addButton(clearButton, QDialogButtonBox::ActionRole); connect(buttonBox, SIGNAL(accepted()), this, SLOT(actOK())); + connect(clearButton, SIGNAL(clicked()), this, SLOT(actReset())); setWindowTitle(tr("Create game")); } @@ -157,8 +171,41 @@ DlgCreateGame::DlgCreateGame(const ServerInfo_Game &gameInfo, const QMapsetText(""); + maxPlayersEdit->setValue(2); + + passwordEdit->setText(""); + onlyBuddiesCheckBox->setChecked(false); + onlyRegisteredCheckBox->setChecked(true); + + spectatorsAllowedCheckBox->setChecked(true); + spectatorsNeedPasswordCheckBox->setChecked(false); + spectatorsCanTalkCheckBox->setChecked(false); + spectatorsSeeEverythingCheckBox->setChecked(false); + + QMapIterator gameTypeCheckBoxIterator(gameTypeCheckBoxes); + while (gameTypeCheckBoxIterator.hasNext()) { + gameTypeCheckBoxIterator.next(); + gameTypeCheckBoxIterator.value()->setChecked(false); + } + +descriptionEdit->setFocus(); +} + + void DlgCreateGame::actOK() { + settingsCache->setGameDescription(descriptionEdit->text()); + settingsCache->setMaxPlayers(maxPlayersEdit->value()); + settingsCache->setOnlyBuddies(onlyBuddiesCheckBox->isChecked()); + settingsCache->setOnlyRegistered(onlyRegisteredCheckBox->isChecked()); + settingsCache->setSpectatorsAllowed(spectatorsAllowedCheckBox->isChecked()); + settingsCache->setSpectatorsNeedPassword(spectatorsNeedPasswordCheckBox->isChecked()); + settingsCache->setSpectatorsCanTalk(spectatorsCanTalkCheckBox->isChecked()); + settingsCache->setSpectatorsCanSeeEverything(spectatorsSeeEverythingCheckBox->isChecked()); + Command_CreateGame cmd; cmd.set_description(descriptionEdit->text().simplified().toStdString()); cmd.set_password(passwordEdit->text().toStdString()); @@ -170,13 +217,17 @@ void DlgCreateGame::actOK() cmd.set_spectators_can_talk(spectatorsCanTalkCheckBox->isChecked()); cmd.set_spectators_see_everything(spectatorsSeeEverythingCheckBox->isChecked()); + QString gameTypes = QString(); QMapIterator gameTypeCheckBoxIterator(gameTypeCheckBoxes); while (gameTypeCheckBoxIterator.hasNext()) { gameTypeCheckBoxIterator.next(); - if (gameTypeCheckBoxIterator.value()->isChecked()) + if (gameTypeCheckBoxIterator.value()->isChecked()) { cmd.add_game_type_ids(gameTypeCheckBoxIterator.key()); + gameTypes += gameTypeCheckBoxIterator.value()->text() + ", "; + } } + settingsCache->setGameTypes(gameTypes); PendingCommand *pend = room->prepareRoomCommand(cmd); connect(pend, SIGNAL(finished(Response, CommandContainer, QVariant)), this, SLOT(checkResponse(Response))); room->sendRoomCommand(pend); diff --git a/cockatrice/src/dlg_creategame.h b/cockatrice/src/dlg_creategame.h index 032bfc6f..a0b168a1 100644 --- a/cockatrice/src/dlg_creategame.h +++ b/cockatrice/src/dlg_creategame.h @@ -23,6 +23,7 @@ public: DlgCreateGame(const ServerInfo_Game &game, const QMap &_gameTypes, QWidget *parent = 0); private slots: void actOK(); + void actReset(); void checkResponse(const Response &response); void spectatorsAllowedChanged(int state); private: @@ -37,6 +38,7 @@ private: QCheckBox *onlyBuddiesCheckBox, *onlyRegisteredCheckBox; QCheckBox *spectatorsAllowedCheckBox, *spectatorsNeedPasswordCheckBox, *spectatorsCanTalkCheckBox, *spectatorsSeeEverythingCheckBox; QDialogButtonBox *buttonBox; + QPushButton *clearButton; void sharedCtor(); }; diff --git a/cockatrice/src/settingscache.cpp b/cockatrice/src/settingscache.cpp index 50a0a9cc..2ebe6815 100644 --- a/cockatrice/src/settingscache.cpp +++ b/cockatrice/src/settingscache.cpp @@ -86,6 +86,16 @@ SettingsCache::SettingsCache() cardInfoViewMode = settings->value("cards/cardinfoviewmode", 0).toInt(); highlightWords = settings->value("personal/highlightWords", QString()).toString(); + + gameDescription = settings->value("game/gamedescription","").toString(); + maxPlayers = settings->value("game/maxplayers", 2).toInt(); + gameTypes = settings->value("game/gametypes","").toString(); + onlyBuddies = settings->value("game/onlybuddies", false).toBool(); + onlyRegistered = settings->value("game/onlyregistered", true).toBool(); + spectatorsAllowed = settings->value("game/spectatorsallowed", true).toBool(); + spectatorsNeedPassword = settings->value("game/spectatorsneedpassword", false).toBool(); + spectatorsCanTalk = settings->value("game/spectatorscantalk", false).toBool(); + spectatorsCanSeeEverything = settings->value("game/spectatorscanseeeverything", false).toBool(); } void SettingsCache::setCardInfoViewMode(const int _viewMode) { @@ -443,4 +453,58 @@ QStringList SettingsCache::getCountries() const << "vn" << "vu" << "wf" << "ws" << "ye" << "yt" << "za" << "zm" << "zw"; return countries; +} + +void SettingsCache::setGameDescription(const QString _gameDescription) +{ + gameDescription = _gameDescription; + settings->setValue("game/gamedescription", gameDescription); +} + +void SettingsCache::setMaxPlayers(const int _maxPlayers) +{ + maxPlayers = _maxPlayers; + settings->setValue("game/maxplayers", maxPlayers); +} + +void SettingsCache::setGameTypes(const QString _gameTypes) +{ + gameTypes = _gameTypes; + settings->setValue("game/gametypes", gameTypes); +} + +void SettingsCache::setOnlyBuddies(const bool _onlyBuddies) +{ + onlyBuddies = _onlyBuddies; + settings->setValue("game/onlybuddies", onlyBuddies); +} + +void SettingsCache::setOnlyRegistered(const bool _onlyRegistered) +{ + onlyRegistered = _onlyRegistered; + settings->setValue("game/onlyregistered", onlyRegistered); +} + +void SettingsCache::setSpectatorsAllowed(const bool _spectatorsAllowed) +{ + spectatorsAllowed = _spectatorsAllowed; + settings->setValue("game/spectatorsallowed", spectatorsAllowed); +} + +void SettingsCache::setSpectatorsNeedPassword(const bool _spectatorsNeedPassword) +{ + spectatorsNeedPassword = _spectatorsNeedPassword; + settings->setValue("game/spectatorsneedpassword", spectatorsNeedPassword); +} + +void SettingsCache::setSpectatorsCanTalk(const bool _spectatorsCanTalk) +{ + spectatorsCanTalk = _spectatorsCanTalk; + settings->setValue("game/spectatorscantalk", spectatorsCanTalk); +} + +void SettingsCache::setSpectatorsCanSeeEverything(const bool _spectatorsCanSeeEverything) +{ + spectatorsCanSeeEverything = _spectatorsCanSeeEverything; + settings->setValue("game/spectatorscanseeeverything", spectatorsCanSeeEverything); } \ No newline at end of file diff --git a/cockatrice/src/settingscache.h b/cockatrice/src/settingscache.h index 20483f56..a4017638 100644 --- a/cockatrice/src/settingscache.h +++ b/cockatrice/src/settingscache.h @@ -88,6 +88,15 @@ private: int masterVolume; int cardInfoViewMode; QString highlightWords; + QString gameDescription; + int maxPlayers; + QString gameTypes; + bool onlyBuddies; + bool onlyRegistered; + bool spectatorsAllowed; + bool spectatorsNeedPassword; + bool spectatorsCanTalk; + bool spectatorsCanSeeEverything; public: SettingsCache(); const QByteArray &getMainWindowGeometry() const { return mainWindowGeometry; } @@ -149,6 +158,15 @@ public: int getCardInfoViewMode() const { return cardInfoViewMode; } QStringList getCountries() const; QString getHighlightWords() const { return highlightWords; } + QString getGameDescription() const { return gameDescription; } + int getMaxPlayers() const { return maxPlayers; } + QString getGameTypes() const { return gameTypes; } + bool getOnlyBuddies() const { return onlyBuddies; } + bool getOnlyRegistered() const { return onlyRegistered; } + bool getSpectatorsAllowed() const { return spectatorsAllowed; } + bool getSpectatorsNeedPassword() const { return spectatorsNeedPassword; } + bool getSpectatorsCanTalk() const { return spectatorsCanTalk; } + bool getSpectatorsCanSeeEverything() const { return spectatorsCanSeeEverything; } public slots: void setMainWindowGeometry(const QByteArray &_mainWindowGeometry); void setLang(const QString &_lang); @@ -203,6 +221,15 @@ public slots: void setMasterVolume(const int _masterVolume); void setCardInfoViewMode(const int _viewMode); void setHighlightWords(const QString &_highlightWords); + void setGameDescription(const QString _gameDescription); + void setMaxPlayers(const int _maxPlayers); + void setGameTypes(const QString _gameTypes); + void setOnlyBuddies(const bool _onlyBuddies); + void setOnlyRegistered(const bool _onlyRegistered); + void setSpectatorsAllowed(const bool _spectatorsAllowed); + void setSpectatorsNeedPassword(const bool _spectatorsNeedPassword); + void setSpectatorsCanTalk(const bool _spectatorsCanTalk); + void setSpectatorsCanSeeEverything(const bool _spectatorsCanSeeEverything); }; extern SettingsCache *settingsCache;