mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
Настройка сервера в кнопке Настройки
This commit is contained in:
@@ -1,21 +1,66 @@
|
||||
#include "dialogsettings.h"
|
||||
#include "ui_dialogsettings.h"
|
||||
#include "tools.h"
|
||||
#include <QFile>
|
||||
#include <QXmlStreamReader>
|
||||
#include <QRegExpValidator>
|
||||
|
||||
DialogSettings::DialogSettings(QWidget *parent) :
|
||||
DialogSettings::DialogSettings(bool serverIsConnected, QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::DialogSettings)
|
||||
ui(new Ui::DialogSettings),
|
||||
settings(nullptr)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
ui->btnUpdateStyle->setObjectName("btnUpdateStyle");
|
||||
ui->btnSave->setObjectName("btnSave");
|
||||
|
||||
|
||||
/* Создаем строку для регулярного выражения */
|
||||
QString ipRange = "(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])";
|
||||
/* Создаем регулярное выражение с применением строки, как
|
||||
* повторяющегося элемента
|
||||
*/
|
||||
QRegExp ipRegex ("^" + ipRange
|
||||
+ "\\." + ipRange
|
||||
+ "\\." + ipRange
|
||||
+ "\\." + ipRange + "$");
|
||||
/* Создаем Валидатор регулярного выражения с применением
|
||||
* созданного регулярного выражения
|
||||
*/
|
||||
QRegExpValidator *ipValidator = new QRegExpValidator(ipRegex, this);
|
||||
/* Устанавливаем Валидатор на QLineEdit */
|
||||
ui->editAddress->setValidator(ipValidator);
|
||||
|
||||
|
||||
settings = new ServerSettings;
|
||||
|
||||
//Задаём два пункта с текстом локалей в комбобоксе
|
||||
ui->cmbLanguage->addItems(QStringList() << "English" << "Русский");
|
||||
|
||||
if(loadSettings())
|
||||
{
|
||||
if(settings->Language == "ENG")
|
||||
ui->cmbLanguage->setCurrentText("English");
|
||||
else
|
||||
ui->cmbLanguage->setCurrentText("Русский");
|
||||
|
||||
ui->editAddress->setText(settings->Address);
|
||||
ui->editPort->setText(settings->Port);
|
||||
ui->checkAutoStart->setChecked(settings->isAutoStart);
|
||||
}
|
||||
|
||||
if(serverIsConnected)
|
||||
{
|
||||
ui->editAddress->setEnabled(false);
|
||||
ui->editPort->setEnabled(false);
|
||||
ui->checkAutoStart->setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
DialogSettings::~DialogSettings()
|
||||
{
|
||||
delete ui;
|
||||
delete settings;
|
||||
}
|
||||
|
||||
void DialogSettings::changeEvent(QEvent *event)
|
||||
@@ -29,17 +74,128 @@ void DialogSettings::changeEvent(QEvent *event)
|
||||
|
||||
void DialogSettings::on_cmbLanguage_currentIndexChanged(const QString &arg1)
|
||||
{
|
||||
QString language;
|
||||
|
||||
if(arg1 == QStringLiteral("English"))
|
||||
language = QString("en_EN");
|
||||
else
|
||||
language = QString("ru_RU");
|
||||
|
||||
emit signal_LanguageChanged(language);
|
||||
}
|
||||
|
||||
void DialogSettings::on_btnUpdateStyle_clicked()
|
||||
{
|
||||
emit signal_UpdateStyleSheet();
|
||||
}
|
||||
|
||||
bool DialogSettings::loadSettings()
|
||||
{
|
||||
QFile file(settingsName);
|
||||
if(! file.open(QIODevice::ReadOnly))
|
||||
return false;
|
||||
|
||||
QXmlStreamReader xmlReader(&file);
|
||||
|
||||
while (!xmlReader.atEnd()){
|
||||
|
||||
if(xmlReader.isStartElement()){
|
||||
|
||||
if(xmlReader.name() == "ServerSettings")
|
||||
{
|
||||
|
||||
foreach(const QXmlStreamAttribute &attr, xmlReader.attributes()){
|
||||
QString name = attr.name().toString();
|
||||
QString value = attr.value().toString();
|
||||
|
||||
if(name == "Address"){
|
||||
settings->Address = value;
|
||||
}
|
||||
|
||||
if(name == "Port"){
|
||||
settings->Port = value;
|
||||
}
|
||||
|
||||
if(name == "Language"){
|
||||
settings->Language = value;
|
||||
}
|
||||
|
||||
if(name == "AutoStart"){
|
||||
settings->isAutoStart = value.toInt();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
xmlReader.readNext();
|
||||
}
|
||||
|
||||
file.close();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool DialogSettings::saveSettings()
|
||||
{
|
||||
QFile file(settingsName);
|
||||
|
||||
if(! file.open(QIODevice::WriteOnly))
|
||||
return false;
|
||||
|
||||
QXmlStreamWriter xmlWriter(&file);
|
||||
|
||||
xmlWriter.setAutoFormatting(true);
|
||||
xmlWriter.writeStartDocument();
|
||||
|
||||
xmlWriter.writeStartElement("ServerSettingsContainer");
|
||||
xmlWriter.writeStartElement("ServerSettings");
|
||||
|
||||
xmlWriter.writeAttribute("Address", settings->Address);
|
||||
xmlWriter.writeAttribute("Port", settings->Port);
|
||||
xmlWriter.writeAttribute("Language", settings->Language);
|
||||
xmlWriter.writeAttribute("AutoStart", QString::number(settings->isAutoStart));
|
||||
|
||||
xmlWriter.writeEndElement();
|
||||
xmlWriter.writeEndElement();
|
||||
|
||||
xmlWriter.writeEndDocument();
|
||||
|
||||
file.close();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void DialogSettings::on_btnSave_clicked()
|
||||
{
|
||||
if(ui->cmbLanguage->currentText() == QStringLiteral("English"))
|
||||
{
|
||||
settings->Language = "ENG";
|
||||
}
|
||||
else
|
||||
{
|
||||
settings->Language = "RUS";
|
||||
}
|
||||
|
||||
settings->Address = ui->editAddress->text();
|
||||
settings->Port = ui->editPort->text();
|
||||
settings->isAutoStart = ui->checkAutoStart->isChecked();
|
||||
|
||||
saveSettings();
|
||||
|
||||
QString language;
|
||||
|
||||
if(settings->Language == "ENG")
|
||||
language = QString("en_EN");
|
||||
else
|
||||
language = QString("ru_RU");
|
||||
|
||||
emit signal_LanguageChanged(language);
|
||||
|
||||
this->close();
|
||||
}
|
||||
|
||||
void DialogSettings::on_DialogSettings_rejected()
|
||||
{
|
||||
QString language;
|
||||
|
||||
if(settings->Language == "ENG")
|
||||
language = QString("en_EN");
|
||||
else
|
||||
language = QString("ru_RU");
|
||||
|
||||
emit signal_LanguageChanged(language);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user