diff -r d24257910f8d -r aaefa587e277 QTfrontend/gameuiconfig.cpp --- a/QTfrontend/gameuiconfig.cpp Sun Dec 02 00:03:16 2012 +0100 +++ b/QTfrontend/gameuiconfig.cpp Tue Dec 25 04:45:22 2012 +0100 @@ -44,17 +44,21 @@ GameUIConfig::GameUIConfig(HWForm * FormWidgets, const QString & fileName) - : QSettings(fileName, QSettings::IniFormat) + : QSettings(fileName, QSettings::IniFormat, FormWidgets) { Form = FormWidgets; - connect(Form->ui.pageOptions->CBEnableFrontendMusic, SIGNAL(toggled(bool)), Form, SLOT(Music(bool))); + setIniCodec("UTF-8"); + + connect(Form->ui.pageOptions->CBFrontendMusic, SIGNAL(toggled(bool)), Form, SLOT(Music(bool))); //Form->resize(value("frontend/width", 640).toUInt(), value("frontend/height", 450).toUInt()); resizeToConfigValues(); reloadValues(); +#ifdef VIDEOREC reloadVideosValues(); +#endif } void GameUIConfig::reloadValues(void) @@ -77,11 +81,11 @@ Form->ui.pageOptions->SLQuality->setValue(value("video/quality", 5).toUInt()); Form->ui.pageOptions->CBStereoMode->setCurrentIndex(value("video/stereo", 0).toUInt()); - Form->ui.pageOptions->CBEnableFrontendSound->setChecked(value("frontend/effects", true).toBool()); - Form->ui.pageOptions->CBEnableSound->setChecked(value("audio/sound", true).toBool()); - Form->ui.pageOptions->CBEnableFrontendSound->setChecked(value("frontend/sound", true).toBool()); - Form->ui.pageOptions->CBEnableMusic->setChecked(value("audio/music", true).toBool()); - Form->ui.pageOptions->CBEnableFrontendMusic->setChecked(value("frontend/music", true).toBool()); + Form->ui.pageOptions->CBFrontendEffects->setChecked(value("frontend/effects", true).toBool()); + Form->ui.pageOptions->CBSound->setChecked(value("audio/sound", true).toBool()); + Form->ui.pageOptions->CBFrontendSound->setChecked(value("frontend/sound", true).toBool()); + Form->ui.pageOptions->CBMusic->setChecked(value("audio/music", true).toBool()); + Form->ui.pageOptions->CBFrontendMusic->setChecked(value("frontend/music", true).toBool()); Form->ui.pageOptions->volumeBox->setValue(value("audio/volume", 100).toUInt()); QString netNick = value("net/nick", "").toString(); @@ -92,11 +96,13 @@ Form->ui.pageOptions->editNetPassword->installEventFilter(this); int passLength = value("net/passwordlength", 0).toInt(); - setNetPasswordLength(passLength); - if (savePwd == false) { - Form->ui.pageOptions->editNetPassword->setEnabled(savePwd); + if (!savePwd) { + Form->ui.pageOptions->editNetPassword->setEnabled(false); Form->ui.pageOptions->editNetPassword->setText(""); - setNetPasswordLength(0); + setNetPasswordLength(0); + } else + { + setNetPasswordLength(passLength); } delete netHost; @@ -124,10 +130,6 @@ Form->ui.pageOptions->leProxyLogin->setText(value("proxy/login", "").toString()); Form->ui.pageOptions->leProxyPassword->setText(value("proxy/password", "").toString()); - depth = HWApplication::desktop()->depth(); - if (depth < 16) depth = 16; - else if (depth > 16) depth = 32; - { // load colors QStandardItemModel * model = DataManager::instance().colorsModel(); for(int i = model->rowCount() - 1; i >= 0; --i) @@ -137,26 +139,34 @@ void GameUIConfig::reloadVideosValues(void) { - Form->ui.pageVideos->framerateBox->setValue(value("videorec/fps",25).toUInt()); - Form->ui.pageVideos->bitrateBox->setValue(value("videorec/bitrate",400).toUInt()); - bool useGameRes = value("videorec/usegameres",true).toBool(); + // one pass with default values + Form->ui.pageOptions->setDefaultOptions(); + + // then load user configuration + Form->ui.pageOptions->framerateBox->setCurrentIndex( + Form->ui.pageOptions->framerateBox->findData( + value("videorec/framerate", rec_Framerate()).toString() + " fps", + Qt::MatchExactly) ); + Form->ui.pageOptions->bitrateBox->setValue(value("videorec/bitrate", rec_Bitrate()).toUInt()); + bool useGameRes = value("videorec/usegameres",Form->ui.pageOptions->checkUseGameRes->isChecked()).toBool(); if (useGameRes) { QRect res = vid_Resolution(); - Form->ui.pageVideos->widthEdit->setText(QString::number(res.width())); - Form->ui.pageVideos->heightEdit->setText(QString::number(res.height())); + Form->ui.pageOptions->widthEdit->setText(QString::number(res.width())); + Form->ui.pageOptions->heightEdit->setText(QString::number(res.height())); } else { - Form->ui.pageVideos->widthEdit->setText(value("videorec/width","800").toString()); - Form->ui.pageVideos->heightEdit->setText(value("videorec/height","600").toString()); + Form->ui.pageOptions->widthEdit->setText(value("videorec/width","800").toString()); + Form->ui.pageOptions->heightEdit->setText(value("videorec/height","600").toString()); } - Form->ui.pageVideos->checkUseGameRes->setChecked(useGameRes); - Form->ui.pageVideos->checkRecordAudio->setChecked(value("videorec/audio",true).toBool()); - if (!Form->ui.pageVideos->tryCodecs(value("videorec/format","no").toString(), + Form->ui.pageOptions->checkUseGameRes->setChecked(useGameRes); + Form->ui.pageOptions->checkRecordAudio->setChecked( + value("videorec/audio",Form->ui.pageOptions->checkRecordAudio->isChecked()).toBool() ); + if (!Form->ui.pageOptions->tryCodecs(value("videorec/format","no").toString(), value("videorec/videocodec","no").toString(), value("videorec/audiocodec","no").toString())) - Form->ui.pageVideos->setDefaultCodecs(); + Form->ui.pageOptions->setDefaultCodecs(); } QStringList GameUIConfig::GetTeamsList() @@ -175,7 +185,16 @@ void GameUIConfig::resizeToConfigValues() { - Form->resize(value("frontend/width", 800).toUInt(), value("frontend/height", 600).toUInt()); + // fill 2/3 of the screen desktop + const QRect deskSize = QApplication::desktop()->screenGeometry(-1); + Form->resize(value("frontend/width", qMin(qMax(deskSize.width()*2/3,800),deskSize.width())).toUInt(), + value("frontend/height", qMin(qMax(deskSize.height()*2/3,600),deskSize.height())).toUInt()); + + // move the window to the center of the screen + QPoint center = QApplication::desktop()->availableGeometry(-1).center(); + center.setX(center.x() - (Form->width()/2)); + center.setY(center.y() - (Form->height()/2)); + Form->move(center); } void GameUIConfig::SaveOptions() @@ -210,11 +229,13 @@ setValue("audio/volume", Form->ui.pageOptions->volumeBox->value()); setValue("net/nick", netNick()); - if (netPasswordIsValid() && Form->ui.pageOptions->CBSavePassword->isChecked()) - { - setValue("net/passwordhash", netPasswordHash()); - setValue("net/passwordlength", netPasswordLength()); + if (netPasswordIsValid() && Form->ui.pageOptions->CBSavePassword->isChecked()) { + setPasswordHash(netPasswordHash()); } + else if(!Form->ui.pageOptions->CBSavePassword->isChecked()) { + clearPasswordHash(); + } + setValue("net/savepassword", Form->ui.pageOptions->CBSavePassword->isChecked()); setValue("net/ip", *netHost); setValue("net/port", netPort); @@ -268,7 +289,7 @@ setValue(QString("colors/color%1").arg(i), model->item(i)->data()); } - Form->gameSettings->sync(); + sync(); } void GameUIConfig::SaveVideosOptions() @@ -277,14 +298,20 @@ setValue("videorec/format", AVFormat()); setValue("videorec/videocodec", videoCodec()); setValue("videorec/audiocodec", audioCodec()); - setValue("videorec/fps", rec_Framerate()); + setValue("videorec/framerate", rec_Framerate()); setValue("videorec/bitrate", rec_Bitrate()); setValue("videorec/width", res.width()); setValue("videorec/height", res.height()); - setValue("videorec/usegameres", Form->ui.pageVideos->checkUseGameRes->isChecked()); + setValue("videorec/usegameres", Form->ui.pageOptions->checkUseGameRes->isChecked()); setValue("videorec/audio", recordAudio()); - Form->gameSettings->sync(); + sync(); +} + +void GameUIConfig::setValue(const QString &key, const QVariant &value) +{ + //qDebug() << "[settings]" << key << value; + QSettings::setValue(key, value); } QString GameUIConfig::language() @@ -370,20 +397,20 @@ bool GameUIConfig::isSoundEnabled() { - return Form->ui.pageOptions->CBEnableSound->isChecked(); + return Form->ui.pageOptions->CBSound->isChecked(); } bool GameUIConfig::isFrontendSoundEnabled() { - return Form->ui.pageOptions->CBEnableFrontendSound->isChecked(); + return Form->ui.pageOptions->CBFrontendSound->isChecked(); } bool GameUIConfig::isMusicEnabled() { - return Form->ui.pageOptions->CBEnableMusic->isChecked(); + return Form->ui.pageOptions->CBMusic->isChecked(); } bool GameUIConfig::isFrontendMusicEnabled() { - return Form->ui.pageOptions->CBEnableFrontendMusic->isChecked(); + return Form->ui.pageOptions->CBFrontendMusic->isChecked(); } bool GameUIConfig::isShowFPSEnabled() @@ -418,11 +445,6 @@ return 35 - Form->ui.pageOptions->fpsedit->value(); } -quint8 GameUIConfig::bitDepth() -{ - return depth; -} - QString GameUIConfig::netNick() { return Form->ui.pageOptions->editNetNick->text(); @@ -445,7 +467,41 @@ bool GameUIConfig::netPasswordIsValid() { - return (netPasswordLength() == 0 || Form->ui.pageOptions->editNetPassword->text() != QString(netPasswordLength(), '\0')); + return (netPasswordLength() == 0 || Form->ui.pageOptions->editNetPassword->text() != QString(netPasswordLength(), '*')); +} + +void GameUIConfig::clearPasswordHash() +{ + setValue("net/passwordhash", QString()); + setValue("net/passwordlength", 0); + setValue("net/savepassword", false); //changes the savepassword value to false in order to not let the user save an empty password in PAGE_SETUP + reloadValues(); //reloads the values of PAGE_SETUP +} + +void GameUIConfig::setPasswordHash(const QString & passwordhash) +{ + setValue("net/passwordhash", passwordhash); + setValue("net/passwordlength", passwordhash.size()/4); + setNetPasswordLength(passwordhash.size()/4); //the hash.size() is divided by 4 let PAGE_SETUP use a reasonable number of stars to display the PW +} + +QString GameUIConfig::passwordHash() +{ + return value("net/passwordhash").toString(); +} + +void GameUIConfig::clearTempHash() +{ + setTempHash(QString()); +} + +void GameUIConfig::setTempHash(const QString & temphash) +{ + this->temphash = temphash; +} + +QString GameUIConfig::tempHash() { + return this->temphash; } // When hedgewars launches, the password field is set with null characters. If the user tries to edit the field and there are such characters, then clear the field @@ -470,7 +526,7 @@ { if (passwordLength > 0) { - Form->ui.pageOptions->editNetPassword->setText(QString(passwordLength, '\0')); + Form->ui.pageOptions->editNetPassword->setText(QString(passwordLength, '*')); } else { @@ -485,40 +541,43 @@ QString GameUIConfig::AVFormat() { - return Form->ui.pageVideos->format(); + return Form->ui.pageOptions->format(); } QString GameUIConfig::videoCodec() { - return Form->ui.pageVideos->videoCodec(); + return Form->ui.pageOptions->videoCodec(); } QString GameUIConfig::audioCodec() { - return Form->ui.pageVideos->audioCodec(); + return Form->ui.pageOptions->audioCodec(); } QRect GameUIConfig::rec_Resolution() { - if (Form->ui.pageVideos->checkUseGameRes->isChecked()) + if (Form->ui.pageOptions->checkUseGameRes->isChecked()) return vid_Resolution(); QRect res(0,0,0,0); - res.setWidth(Form->ui.pageVideos->widthEdit->text().toUInt()); - res.setHeight(Form->ui.pageVideos->heightEdit->text().toUInt()); + res.setWidth(Form->ui.pageOptions->widthEdit->text().toUInt()); + res.setHeight(Form->ui.pageOptions->heightEdit->text().toUInt()); return res; } int GameUIConfig::rec_Framerate() { - return Form->ui.pageVideos->framerateBox->value(); + // remove the "fps" label + QString fpsText = Form->ui.pageOptions->framerateBox->currentText(); + QStringList fpsList = fpsText.split(" "); + return fpsList.first().toInt(); } int GameUIConfig::rec_Bitrate() { - return Form->ui.pageVideos->bitrateBox->value(); + return Form->ui.pageOptions->bitrateBox->value(); } bool GameUIConfig::recordAudio() { - return Form->ui.pageVideos->checkRecordAudio->isChecked(); + return Form->ui.pageOptions->checkRecordAudio->isChecked(); }