Настройка сервера в кнопке Настройки

This commit is contained in:
2025-05-28 16:38:11 +03:00
parent 5191e12389
commit 2398ab609a
10 changed files with 407 additions and 23 deletions

View File

@@ -102,10 +102,20 @@ void ConnectorToServer::setLoginName(QString name)
versionSelectWidget->setAuthor(name);
}
ServerSettings ConnectorToServer::getServerSettings()
{
return serverSettings;
}
bool ConnectorToServer::getIsConnected()
{
return client->getIsConnected();
}
void ConnectorToServer::SetConnectToServer()
{
serverSettings = *dataParser->getServerSettings();
emit sigSetConnect(dataParser->getServerSettings(),connectionThread);
}
QByteArray ConnectorToServer::getListTaskFimArray()

View File

@@ -15,6 +15,7 @@
#include "computer.h"
#include "classroom.h"
#include "streamingversiondata.h"
#include "Datas.h"
class ConnectorToServer : public QObject
{
@@ -62,6 +63,9 @@ public:
void activateLoadAnimation(bool flag);
void setLoginName(QString name);
ServerSettings getServerSettings();
bool getIsConnected();
public slots:
/*void slot_AnswerQueryToDB(QList<Instructor>* listInstructors,
QList<Trainee>* listTrainees,
@@ -107,7 +111,6 @@ signals:
void signal_msgFromClientReady(QString login, QString text);
void sigSendAnswerToServer(QByteArray array);
private:
void initialize();
void bindConnection();
@@ -135,6 +138,8 @@ private:
QByteArray listTaskFimArray;
QByteArray listTaskAmmArray;
ServerSettings serverSettings;
};
#endif // CONNECTORTOSERVER_H

View File

@@ -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);
}

View File

@@ -4,6 +4,7 @@
#include <QDialog>
#include <QTranslator>
#include <QEvent>
#include "Datas.h"
namespace Ui {
class DialogSettings;
@@ -14,7 +15,7 @@ class DialogSettings : public QDialog
Q_OBJECT
public:
explicit DialogSettings(QWidget *parent = nullptr);
explicit DialogSettings(bool serverIsConnected, QWidget *parent = nullptr);
~DialogSettings();
protected:
@@ -28,12 +29,21 @@ signals:
private slots:
void on_cmbLanguage_currentIndexChanged(const QString &arg1);
void on_btnUpdateStyle_clicked();
void on_btnSave_clicked();
void on_DialogSettings_rejected();
private:
bool loadSettings();
bool saveSettings();
private:
Ui::DialogSettings *ui;
QTranslator qtLanguageTranslator;
ServerSettings *settings;
};
#endif // DIALOGSETTINGS_H

View File

@@ -13,6 +13,10 @@
<property name="windowTitle">
<string>Settings</string>
</property>
<property name="windowIcon">
<iconset resource="resources.qrc">
<normaloff>:/resources/icons/settings.png</normaloff>:/resources/icons/settings.png</iconset>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout">
@@ -44,7 +48,128 @@
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2"/>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Server</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Address</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLineEdit" name="editAddress">
<property name="maximumSize">
<size>
<width>150</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>Port</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLineEdit" name="editPort">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>70</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QCheckBox" name="checkAutoStart">
<property name="text">
<string>Auto Start</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
@@ -60,7 +185,33 @@
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QToolButton" name="btnSave">
<property name="minimumSize">
<size>
<width>58</width>
<height>58</height>
</size>
</property>
<property name="text">
<string>Save</string>
</property>
<property name="icon">
<iconset resource="resources.qrc">
<normaloff>:/resources/icons/circleGreen.png</normaloff>:/resources/icons/circleGreen.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextUnderIcon</enum>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">

View File

@@ -37,6 +37,10 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
qDebug() << "InstructorsAndTraineesWidget init thread ID " << QThread::currentThreadId();
updateMyStyleSheet();
on_btnSettings_clicked();
connectorToServer = new ConnectorToServer(this);
connect(connectorToServer,&ConnectorToServer::sigLoginResult,this,&InstructorsAndTraineesWidget::checkLoginResult);
connect(connectorToServer,&ConnectorToServer::sigDeLoginResult,this,&InstructorsAndTraineesWidget::checkDeLoginResult);
@@ -109,8 +113,6 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
ui->btnAuthorizationInstructor->setEnabled(false);
ui->btnAssignTask->setEnabled(false);
updateMyStyleSheet();
}
InstructorsAndTraineesWidget::~InstructorsAndTraineesWidget()
@@ -147,6 +149,7 @@ void InstructorsAndTraineesWidget::changeEvent(QEvent *event)
*/
updateLabelLoggedInInstructor(loginInstructorLoggedInLocal, nameInstructorLoggedInLocal);
updateLabelServer();
}
}
@@ -262,6 +265,9 @@ void InstructorsAndTraineesWidget::slot_ConnectedToServer(bool state)
ui->btnAuthorizationInstructor->setEnabled(true);
ui->lblDBisConnected->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGreen.png")));
ServerSettings serverSettings = connectorToServer->getServerSettings();
ui->lblServer->setText(serverSettings.Address + ":" +serverSettings.Port);
}
else
{//Сервер отключен
@@ -271,6 +277,7 @@ void InstructorsAndTraineesWidget::slot_ConnectedToServer(bool state)
ui->btnAuthorizationInstructor->setChecked(false);
ui->btnSetVersion->hide();
ui->lblDBisConnected->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGray.png")));
ui->lblServer->setText(tr("none"));
viewerInstructors->setAuthComplited(false);
viewerTrainees->setAuthComplited(false);
@@ -414,6 +421,20 @@ void InstructorsAndTraineesWidget::updateLabelLoggedInInstructor(QString login,
}
}
void InstructorsAndTraineesWidget::updateLabelServer()
{
if(!connectorToServer)
return;
if(connectorToServer->getIsConnected())
{
ServerSettings serverSettings = connectorToServer->getServerSettings();
ui->lblServer->setText(serverSettings.Address + ":" +serverSettings.Port);
}
else
ui->lblServer->setText(tr("none"));
}
void InstructorsAndTraineesWidget::on_btnSetVersion_clicked()
{
connectorToServer->showVersionSelect();
@@ -449,7 +470,11 @@ void InstructorsAndTraineesWidget::on_tabWidget_currentChanged(int index)
void InstructorsAndTraineesWidget::on_btnSettings_clicked()
{
DialogSettings dlg(this);
bool serverIsConnected = false;
if(connectorToServer)
serverIsConnected = connectorToServer->getIsConnected();
DialogSettings dlg(serverIsConnected, this);
connect(&dlg, &DialogSettings::signal_LanguageChanged, this, &InstructorsAndTraineesWidget::slot_LanguageChanged);
connect(&dlg, &DialogSettings::signal_UpdateStyleSheet, this, &InstructorsAndTraineesWidget::slot_UpdateStyleSheet);

View File

@@ -86,6 +86,7 @@ private:
bool deAuthorizationInstructor(QString login);
bool authorizationIsCompleted();
void updateLabelLoggedInInstructor(QString login, QString name);
void updateLabelServer();
private:
Ui::InstructorsAndTraineesWidget *ui;

View File

@@ -104,6 +104,20 @@
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblServerPrefix">
<property name="text">
<string>Server: </string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblServer">
<property name="text">
<string>none</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="btnAuthorizationInstructor">
<property name="minimumSize">

View File

@@ -114,8 +114,14 @@ void AMMtasksWidget::changeEvent(QEvent *event)
reSetHeadTreeWidget();
if(type == TypeList::listCommon)
{
//slot_NeedUpdateUI();
}
else if(type == TypeList::listForTrainee)
if(idTraineeSelected)
slot_UpdateTasksAMMforTrainee(idTraineeSelected);
}
}
void AMMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)

View File

@@ -113,8 +113,14 @@ void FIMtasksWidget::changeEvent(QEvent *event)
reSetHeadTreeWidget();
if(type == TypeList::listCommon)
{
//slot_NeedUpdateUI();
}
else if(type == TypeList::listForTrainee)
if(idTraineeSelected)
fillTree();
}
}
void FIMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)