From d4fd29f373fbdaeb4475f67e747c415336cf4b38 Mon Sep 17 00:00:00 2001 From: krivoshein Date: Fri, 24 Oct 2025 16:34:53 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B2=D0=B5=D1=80.=20Setting?= =?UTF-8?q?s=20DB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DOCS/Андрей/Board.md | 2 +- InstructorsAndTrainees/dialogsettings.cpp | 3 +- .../instructorsandtraineeswidget.cpp | 6 +- ServerLMS/CMakeLists.txt | 2 + ServerLMS/dialogsettingstray.cpp | 108 ++++++++++---- ServerLMS/dialogsettingstray.h | 13 +- ServerLMS/dialogsettingstray.ui | 137 +++++++++++++++++- ServerLMS/metatypes.cpp | 9 ++ ServerLMS/metatypes.h | 14 ++ ServerLMS/serverlmswidget.cpp | 71 ++++++--- ServerLMS/serverlmswidget.h | 4 + ServerLMS/serverlmswidget.ui | 84 +++++------ 12 files changed, 349 insertions(+), 104 deletions(-) create mode 100644 ServerLMS/metatypes.cpp create mode 100644 ServerLMS/metatypes.h diff --git a/DOCS/Андрей/Board.md b/DOCS/Андрей/Board.md index 395ffaf..88b37e3 100644 --- a/DOCS/Андрей/Board.md +++ b/DOCS/Андрей/Board.md @@ -11,6 +11,7 @@ kanban-plugin: board ## Completed +- [ ] Сервер при сворачивании превращается в трей - [ ] Пароли хранить и пересылать в виде Хеша - [ ] Смена пароля админом (или инструктором только для обучаемых). Старый никому не виден (парольная политика) - [ ] Сделать отправку сообщения на Enter @@ -48,7 +49,6 @@ kanban-plugin: board ## Server -- [ ] Сервер при сворачивании превращается в трей - [ ] Отходить от идентификации по Логину в пользу ID юзера везде, где это возможно. (Так как сейчас может вызвать проблемы при смене логина юзера!!!) diff --git a/InstructorsAndTrainees/dialogsettings.cpp b/InstructorsAndTrainees/dialogsettings.cpp index 006668b..20aa0e5 100644 --- a/InstructorsAndTrainees/dialogsettings.cpp +++ b/InstructorsAndTrainees/dialogsettings.cpp @@ -13,6 +13,7 @@ DialogSettings::DialogSettings(ConnectorToServer* connectorToServer, bool instru flSettingsServerChanged(false) { ui->setupUi(this); + ui->btnUpdateStyle->setObjectName("btnUpdateStyle"); ui->btnSetVersion->setObjectName("btnSetVersion"); ui->btnSave->setObjectName("btnSave"); @@ -40,7 +41,6 @@ DialogSettings::DialogSettings(ConnectorToServer* connectorToServer, bool instru /* Устанавливаем Валидатор на QLineEdit */ ui->editAddress->setValidator(ipValidator); - settings = new ServerSettings; //Задаём два пункта с текстом локалей в комбобоксе @@ -70,7 +70,6 @@ DialogSettings::DialogSettings(ConnectorToServer* connectorToServer, bool instru ui->checkAutoStart->setVisible(false); ui->btnSave->setEnabled(false); - flSettingsServerChanged = false; } DialogSettings::~DialogSettings() diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp index f696571..7f2742d 100644 --- a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp +++ b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp @@ -29,11 +29,11 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) : { ui->setupUi(this); + qDebug() << "InstructorsAndTraineesWidget init thread ID " << QThread::currentThreadId(); + ui->widget_Control->setObjectName("widgetControl"); - registerMetaType(); - - qDebug() << "InstructorsAndTraineesWidget init thread ID " << QThread::currentThreadId(); + registerMetaType(); updateMyStyleSheet(); diff --git a/ServerLMS/CMakeLists.txt b/ServerLMS/CMakeLists.txt index 8fa2b59..606a643 100644 --- a/ServerLMS/CMakeLists.txt +++ b/ServerLMS/CMakeLists.txt @@ -7,6 +7,8 @@ add_library(ServerLMS SHARED serverlmswidget.cpp serverlmswidget.h serverlmswidget.ui + metatypes.cpp + metatypes.h dialogsettingstray.cpp dialogsettingstray.h dialogsettingstray.ui diff --git a/ServerLMS/dialogsettingstray.cpp b/ServerLMS/dialogsettingstray.cpp index f6d5f82..fe40b77 100644 --- a/ServerLMS/dialogsettingstray.cpp +++ b/ServerLMS/dialogsettingstray.cpp @@ -11,6 +11,24 @@ DialogSettingsTray::DialogSettingsTray(QWidget *parent) : { ui->setupUi(this); + 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->editHostName->setValidator(ipValidator); + settings = new ServerDBSettings; //Задаём два пункта с текстом локалей в комбобоксе @@ -23,12 +41,14 @@ DialogSettingsTray::DialogSettingsTray(QWidget *parent) : else ui->cmbLanguage->setCurrentText("Русский"); - //ui->editAddress->setText(settings->Address); - //ui->editPort->setText(settings->Port); + ui->editNameDB->setText(settings->NameDB); + ui->editHostName->setText(settings->HostName); + ui->editPort->setText(settings->Port); + ui->editUserName->setText(settings->UserName); + ui->editPassword->setText(settings->Password); } ui->btnSave->setEnabled(false); - flSettingsServerChanged = false; } DialogSettingsTray::~DialogSettingsTray() @@ -66,7 +86,7 @@ bool DialogSettingsTray::loadSettings(ServerDBSettings *settings) } if(name == "Name"){ - settings->Name = value; + settings->NameDB = value; } if(name == "UserName"){ @@ -101,32 +121,6 @@ bool DialogSettingsTray::loadSettings(ServerDBSettings *settings) return true; } -void DialogSettingsTray::on_cmbLanguage_currentTextChanged(const QString &arg1) -{ - -} - -void DialogSettingsTray::on_btnSave_clicked() -{ - if(ui->cmbLanguage->currentText() == QStringLiteral("English")) - { - settings->Language = "ENG"; - } - else - { - settings->Language = "RUS"; - } - - //settings->Address = ui->editUserName->text(); - //settings->Address = ui->editPassword->text(); - //settings->Address = ui->editHostName->text(); - //settings->Port = ui->editPort->text(); - - saveSettings(); - - this->accept(); -} - bool DialogSettingsTray::saveSettings() { QFile file(settingsName); @@ -143,7 +137,7 @@ bool DialogSettingsTray::saveSettings() xmlWriter.writeStartElement("DataBaseSettings"); xmlWriter.writeAttribute("Type", settings->Type); - xmlWriter.writeAttribute("Name", settings->Name); + xmlWriter.writeAttribute("Name", settings->NameDB); xmlWriter.writeAttribute("UserName", settings->UserName); xmlWriter.writeAttribute("Password", settings->Password); xmlWriter.writeAttribute("HostName", settings->HostName); @@ -160,6 +154,28 @@ bool DialogSettingsTray::saveSettings() return true; } +void DialogSettingsTray::on_btnSave_clicked() +{ + if(ui->cmbLanguage->currentText() == QStringLiteral("English")) + { + settings->Language = "ENG"; + } + else + { + settings->Language = "RUS"; + } + + settings->NameDB = ui->editNameDB->text(); + settings->HostName = ui->editHostName->text(); + settings->Port = ui->editPort->text(); + settings->UserName = ui->editUserName->text(); + settings->Password = ui->editPassword->text(); + + saveSettings(); + + this->accept(); +} + void DialogSettingsTray::on_cmbLanguage_currentIndexChanged(int index) { ui->btnSave->setEnabled(true); @@ -176,3 +192,33 @@ void DialogSettingsTray::on_DialogSettingsTray_accepted() emit signal_LanguageChanged(language); } + +void DialogSettingsTray::on_editNameDB_textChanged(const QString &arg1) +{ + ui->btnSave->setEnabled(true); + flSettingsServerChanged = true; +} + +void DialogSettingsTray::on_editHostName_textChanged(const QString &arg1) +{ + ui->btnSave->setEnabled(true); + flSettingsServerChanged = true; +} + +void DialogSettingsTray::on_editPort_textChanged(const QString &arg1) +{ + ui->btnSave->setEnabled(true); + flSettingsServerChanged = true; +} + +void DialogSettingsTray::on_editUserName_textChanged(const QString &arg1) +{ + ui->btnSave->setEnabled(true); + flSettingsServerChanged = true; +} + +void DialogSettingsTray::on_editPassword_textChanged(const QString &arg1) +{ + ui->btnSave->setEnabled(true); + flSettingsServerChanged = true; +} diff --git a/ServerLMS/dialogsettingstray.h b/ServerLMS/dialogsettingstray.h index 7f5ddf1..b5c4371 100644 --- a/ServerLMS/dialogsettingstray.h +++ b/ServerLMS/dialogsettingstray.h @@ -8,7 +8,7 @@ class ServerDBSettings{ public: QString Type; - QString Name; + QString NameDB; QString UserName; QString Password; QString HostName; @@ -39,13 +39,22 @@ signals: void signal_LanguageChanged(QString language); private slots: - void on_cmbLanguage_currentTextChanged(const QString &arg1); void on_btnSave_clicked(); void on_cmbLanguage_currentIndexChanged(int index); void on_DialogSettingsTray_accepted(); + void on_editNameDB_textChanged(const QString &arg1); + + void on_editHostName_textChanged(const QString &arg1); + + void on_editPort_textChanged(const QString &arg1); + + void on_editUserName_textChanged(const QString &arg1); + + void on_editPassword_textChanged(const QString &arg1); + private: bool saveSettings(); diff --git a/ServerLMS/dialogsettingstray.ui b/ServerLMS/dialogsettingstray.ui index 58f2fdf..eb88158 100644 --- a/ServerLMS/dialogsettingstray.ui +++ b/ServerLMS/dialogsettingstray.ui @@ -7,11 +7,11 @@ 0 0 400 - 300 + 324 - Dialog + Settings @@ -51,6 +51,139 @@ + + + + Data Base + + + + + + + + + + DB name + + + + + + + + 170 + 16777215 + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + Host name + + + + + + + + 170 + 16777215 + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + Port + + + + + + + + 70 + 16777215 + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + User name + + + + + + + + 170 + 16777215 + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + Password + + + + + + + + 170 + 16777215 + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + diff --git a/ServerLMS/metatypes.cpp b/ServerLMS/metatypes.cpp new file mode 100644 index 0000000..74a7b98 --- /dev/null +++ b/ServerLMS/metatypes.cpp @@ -0,0 +1,9 @@ +#include +#include "metatypes.h" + +void registerMetaType() +{ + qRegisterMetaType("PacketType"); + qRegisterMetaType("UserType"); + qRegisterMetaType("LogLevel"); +} diff --git a/ServerLMS/metatypes.h b/ServerLMS/metatypes.h new file mode 100644 index 0000000..ef63681 --- /dev/null +++ b/ServerLMS/metatypes.h @@ -0,0 +1,14 @@ +#ifndef METATYPES_H +#define METATYPES_H + +#include "Data/PacketType.h" +#include "Data/typesDataServerClient.h" +#include "Systems/logger.h" + +void registerMetaType(); + +Q_DECLARE_METATYPE(PacketType) +Q_DECLARE_METATYPE(UserType) +Q_DECLARE_METATYPE(LogLevel) + +#endif // METATYPES_H diff --git a/ServerLMS/serverlmswidget.cpp b/ServerLMS/serverlmswidget.cpp index 8c034e0..c6d85d1 100644 --- a/ServerLMS/serverlmswidget.cpp +++ b/ServerLMS/serverlmswidget.cpp @@ -8,6 +8,7 @@ #include "serverlmswidget.h" #include "dialogsettingstray.h" #include "ui_serverlmswidget.h" +#include "metatypes.h" const QString ServerLMSWidget::languageENG = "en_EN"; const QString ServerLMSWidget::languageRUS = "ru_RU"; @@ -26,19 +27,21 @@ ServerLMSWidget::ServerLMSWidget(QWidget *parent) : commonClientHandler(nullptr), chatSystem(nullptr), providerDBLMS(nullptr), + first (true), language(languageENG), errorCode(0) { ui->setupUi(this); - mutex = new QMutex; - qRegisterMetaType("PacketType"); - qRegisterMetaType("UserType"); - qRegisterMetaType("LogLevel"); + qDebug() << "ServerLMSWidget init thread ID " << QThread::currentThreadId(); + + registerMetaType(); + + updateMyStyleSheet(); setLanguageInterfase(); - errorCode = 0; + mutex = new QMutex; ui->btnStopServer->setEnabled(false); ui->btnStartServer->setEnabled(true); @@ -93,15 +96,7 @@ ServerLMSWidget::ServerLMSWidget(QWidget *parent) : connect(&Logger::instance(),&Logger::sigLogToWidget,this, &ServerLMSWidget::addToLog,Qt::QueuedConnection); emit sigUpdateController(commonClientHandler,dataParser,assetsManager); - on_btnStartServer_clicked(); - - first = true; - qDebug() << "MAIN THREAD: " << QThread::currentThreadId(); -} - -void ServerLMSWidget::setError(int code) -{ - errorCode = code; + on_btnStartServer_clicked(); } ServerLMSWidget::~ServerLMSWidget() @@ -110,7 +105,6 @@ ServerLMSWidget::~ServerLMSWidget() updateThread->exit(); loggerThread->exit(); - delete server; delete commonClientHandler; delete dataParser; @@ -126,12 +120,16 @@ ServerLMSWidget::~ServerLMSWidget() delete ui; } +void ServerLMSWidget::setError(int code) +{ + errorCode = code; +} + QString ServerLMSWidget::getLanguage() { return language; } - void ServerLMSWidget::slotUpdateListClients() { //Очищаем список @@ -239,15 +237,19 @@ void ServerLMSWidget::on_btnSettings_clicked() language = dlg.getSettings().Language; if(dlg.settingsServerIsChanged()) - { + {//TODO Здесь нужно переподключать БД + //SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningClose, tr("Server settings have been changed. Please reconnect to the server.")).exec(); - //flSettingsServerIsChanged = true; + providerDBLMS->deAuthorizationAll(); - //if(authorizationIsCompleted()) - //deAuthorizationInstructor(loginInstructorLoggedInLocal); + on_btnStopServer_clicked(); - //connectorToServer->StopConnectToServer(); + providerDBLMS->DisConnectionFromDB(); + + providerDBLMS->ConnectionToDB(); + + //on_btnStartServer_clicked(); } break; @@ -279,3 +281,30 @@ void ServerLMSWidget::setLanguageInterfase() emit signal_LanguageChanged(language); } + +void ServerLMSWidget::updateMyStyleSheet() +{ + QString styleSheet = loadStyleSheet(); + styleSheet = styleSheet.replace("\n", ""); + + this->setStyleSheet(styleSheet); +} + +QString ServerLMSWidget::loadStyleSheet() +{ + QString fileName = "./resources/css/styleSheetMain.css"; + QFile styleSheetFile(fileName); + if (!styleSheetFile.open(QFile::ReadOnly | QFile::Text)) + { + QMessageBox::warning(this, tr("Warning!"), tr("The file could not be opened ") + fileName); + return QStringLiteral(""); + } + else + { + QByteArray byteArray = styleSheetFile.readAll(); + styleSheetFile.close(); + + QString style = byteArray; + return style; + } +} diff --git a/ServerLMS/serverlmswidget.h b/ServerLMS/serverlmswidget.h index dbb762c..0f63ab5 100644 --- a/ServerLMS/serverlmswidget.h +++ b/ServerLMS/serverlmswidget.h @@ -102,6 +102,10 @@ private slots: private: void setLanguageInterfase(); +private: + void updateMyStyleSheet(); + QString loadStyleSheet(); + private: Ui::ServerLMSWidget *ui; diff --git a/ServerLMS/serverlmswidget.ui b/ServerLMS/serverlmswidget.ui index 4a22b69..08819e2 100644 --- a/ServerLMS/serverlmswidget.ui +++ b/ServerLMS/serverlmswidget.ui @@ -138,48 +138,6 @@ - - - - - - Block Authorization - - - - - - - - 0 - 0 - - - - - 32 - 32 - - - - - 32 - 32 - - - - - - - :/resources/icons/open.png - - - true - - - - - @@ -298,6 +256,48 @@ + + + + + + Authorization + + + + + + + + 0 + 0 + + + + + 32 + 32 + + + + + 32 + 32 + + + + + + + :/resources/icons/open.png + + + true + + + + +