Сервер. Settings DB

This commit is contained in:
2025-10-24 16:34:53 +03:00
parent 5287d5f13d
commit d4fd29f373
12 changed files with 349 additions and 104 deletions

View File

@@ -11,6 +11,7 @@ kanban-plugin: board
## Completed ## Completed
- [ ] Сервер при сворачивании превращается в трей
- [ ] Пароли хранить и пересылать в виде Хеша - [ ] Пароли хранить и пересылать в виде Хеша
- [ ] Смена пароля админом (или инструктором только для обучаемых). Старый никому не виден (парольная политика) - [ ] Смена пароля админом (или инструктором только для обучаемых). Старый никому не виден (парольная политика)
- [ ] Сделать отправку сообщения на Enter - [ ] Сделать отправку сообщения на Enter
@@ -48,7 +49,6 @@ kanban-plugin: board
## Server ## Server
- [ ] Сервер при сворачивании превращается в трей
- [ ] Отходить от идентификации по Логину в пользу ID юзера везде, где это возможно. - [ ] Отходить от идентификации по Логину в пользу ID юзера везде, где это возможно.
(Так как сейчас может вызвать проблемы при смене логина юзера!!!) (Так как сейчас может вызвать проблемы при смене логина юзера!!!)

View File

@@ -13,6 +13,7 @@ DialogSettings::DialogSettings(ConnectorToServer* connectorToServer, bool instru
flSettingsServerChanged(false) flSettingsServerChanged(false)
{ {
ui->setupUi(this); ui->setupUi(this);
ui->btnUpdateStyle->setObjectName("btnUpdateStyle"); ui->btnUpdateStyle->setObjectName("btnUpdateStyle");
ui->btnSetVersion->setObjectName("btnSetVersion"); ui->btnSetVersion->setObjectName("btnSetVersion");
ui->btnSave->setObjectName("btnSave"); ui->btnSave->setObjectName("btnSave");
@@ -40,7 +41,6 @@ DialogSettings::DialogSettings(ConnectorToServer* connectorToServer, bool instru
/* Устанавливаем Валидатор на QLineEdit */ /* Устанавливаем Валидатор на QLineEdit */
ui->editAddress->setValidator(ipValidator); ui->editAddress->setValidator(ipValidator);
settings = new ServerSettings; settings = new ServerSettings;
//Задаём два пункта с текстом локалей в комбобоксе //Задаём два пункта с текстом локалей в комбобоксе
@@ -70,7 +70,6 @@ DialogSettings::DialogSettings(ConnectorToServer* connectorToServer, bool instru
ui->checkAutoStart->setVisible(false); ui->checkAutoStart->setVisible(false);
ui->btnSave->setEnabled(false); ui->btnSave->setEnabled(false);
flSettingsServerChanged = false;
} }
DialogSettings::~DialogSettings() DialogSettings::~DialogSettings()

View File

@@ -29,12 +29,12 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
{ {
ui->setupUi(this); ui->setupUi(this);
qDebug() << "InstructorsAndTraineesWidget init thread ID " << QThread::currentThreadId();
ui->widget_Control->setObjectName("widgetControl"); ui->widget_Control->setObjectName("widgetControl");
registerMetaType(); registerMetaType();
qDebug() << "InstructorsAndTraineesWidget init thread ID " << QThread::currentThreadId();
updateMyStyleSheet(); updateMyStyleSheet();
setLanguageInterfase(); setLanguageInterfase();

View File

@@ -7,6 +7,8 @@ add_library(ServerLMS SHARED
serverlmswidget.cpp serverlmswidget.cpp
serverlmswidget.h serverlmswidget.h
serverlmswidget.ui serverlmswidget.ui
metatypes.cpp
metatypes.h
dialogsettingstray.cpp dialogsettingstray.cpp
dialogsettingstray.h dialogsettingstray.h
dialogsettingstray.ui dialogsettingstray.ui

View File

@@ -11,6 +11,24 @@ DialogSettingsTray::DialogSettingsTray(QWidget *parent) :
{ {
ui->setupUi(this); 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; settings = new ServerDBSettings;
//Задаём два пункта с текстом локалей в комбобоксе //Задаём два пункта с текстом локалей в комбобоксе
@@ -23,12 +41,14 @@ DialogSettingsTray::DialogSettingsTray(QWidget *parent) :
else else
ui->cmbLanguage->setCurrentText("Русский"); ui->cmbLanguage->setCurrentText("Русский");
//ui->editAddress->setText(settings->Address); ui->editNameDB->setText(settings->NameDB);
//ui->editPort->setText(settings->Port); ui->editHostName->setText(settings->HostName);
ui->editPort->setText(settings->Port);
ui->editUserName->setText(settings->UserName);
ui->editPassword->setText(settings->Password);
} }
ui->btnSave->setEnabled(false); ui->btnSave->setEnabled(false);
flSettingsServerChanged = false;
} }
DialogSettingsTray::~DialogSettingsTray() DialogSettingsTray::~DialogSettingsTray()
@@ -66,7 +86,7 @@ bool DialogSettingsTray::loadSettings(ServerDBSettings *settings)
} }
if(name == "Name"){ if(name == "Name"){
settings->Name = value; settings->NameDB = value;
} }
if(name == "UserName"){ if(name == "UserName"){
@@ -101,32 +121,6 @@ bool DialogSettingsTray::loadSettings(ServerDBSettings *settings)
return true; 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() bool DialogSettingsTray::saveSettings()
{ {
QFile file(settingsName); QFile file(settingsName);
@@ -143,7 +137,7 @@ bool DialogSettingsTray::saveSettings()
xmlWriter.writeStartElement("DataBaseSettings"); xmlWriter.writeStartElement("DataBaseSettings");
xmlWriter.writeAttribute("Type", settings->Type); xmlWriter.writeAttribute("Type", settings->Type);
xmlWriter.writeAttribute("Name", settings->Name); xmlWriter.writeAttribute("Name", settings->NameDB);
xmlWriter.writeAttribute("UserName", settings->UserName); xmlWriter.writeAttribute("UserName", settings->UserName);
xmlWriter.writeAttribute("Password", settings->Password); xmlWriter.writeAttribute("Password", settings->Password);
xmlWriter.writeAttribute("HostName", settings->HostName); xmlWriter.writeAttribute("HostName", settings->HostName);
@@ -160,6 +154,28 @@ bool DialogSettingsTray::saveSettings()
return true; 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) void DialogSettingsTray::on_cmbLanguage_currentIndexChanged(int index)
{ {
ui->btnSave->setEnabled(true); ui->btnSave->setEnabled(true);
@@ -176,3 +192,33 @@ void DialogSettingsTray::on_DialogSettingsTray_accepted()
emit signal_LanguageChanged(language); 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;
}

View File

@@ -8,7 +8,7 @@
class ServerDBSettings{ class ServerDBSettings{
public: public:
QString Type; QString Type;
QString Name; QString NameDB;
QString UserName; QString UserName;
QString Password; QString Password;
QString HostName; QString HostName;
@@ -39,13 +39,22 @@ signals:
void signal_LanguageChanged(QString language); void signal_LanguageChanged(QString language);
private slots: private slots:
void on_cmbLanguage_currentTextChanged(const QString &arg1);
void on_btnSave_clicked(); void on_btnSave_clicked();
void on_cmbLanguage_currentIndexChanged(int index); void on_cmbLanguage_currentIndexChanged(int index);
void on_DialogSettingsTray_accepted(); 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: private:
bool saveSettings(); bool saveSettings();

View File

@@ -7,11 +7,11 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>400</width> <width>400</width>
<height>300</height> <height>324</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>Dialog</string> <string>Settings</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="0" column="0"> <item row="0" column="0">
@@ -51,6 +51,139 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<widget class="QGroupBox" name="groupBox_DB">
<property name="title">
<string>Data Base</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout_DB">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_NameDB">
<item>
<widget class="QLabel" name="label_NameDB">
<property name="text">
<string>DB name</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="editNameDB">
<property name="maximumSize">
<size>
<width>170</width>
<height>16777215</height>
</size>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_HostName">
<item>
<widget class="QLabel" name="label_HostName">
<property name="text">
<string>Host name</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="editHostName">
<property name="maximumSize">
<size>
<width>170</width>
<height>16777215</height>
</size>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_Port">
<item>
<widget class="QLabel" name="label_Port">
<property name="text">
<string>Port</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="editPort">
<property name="maximumSize">
<size>
<width>70</width>
<height>16777215</height>
</size>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_UserName">
<item>
<widget class="QLabel" name="label_UserName">
<property name="text">
<string>User name</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="editUserName">
<property name="maximumSize">
<size>
<width>170</width>
<height>16777215</height>
</size>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_Password">
<item>
<widget class="QLabel" name="label_Password">
<property name="text">
<string>Password</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="editPassword">
<property name="maximumSize">
<size>
<width>170</width>
<height>16777215</height>
</size>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item> <item>
<spacer name="verticalSpacer"> <spacer name="verticalSpacer">
<property name="orientation"> <property name="orientation">

9
ServerLMS/metatypes.cpp Normal file
View File

@@ -0,0 +1,9 @@
#include<QMetaType>
#include "metatypes.h"
void registerMetaType()
{
qRegisterMetaType<PacketType>("PacketType");
qRegisterMetaType<UserType>("UserType");
qRegisterMetaType<LogLevel>("LogLevel");
}

14
ServerLMS/metatypes.h Normal file
View File

@@ -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

View File

@@ -8,6 +8,7 @@
#include "serverlmswidget.h" #include "serverlmswidget.h"
#include "dialogsettingstray.h" #include "dialogsettingstray.h"
#include "ui_serverlmswidget.h" #include "ui_serverlmswidget.h"
#include "metatypes.h"
const QString ServerLMSWidget::languageENG = "en_EN"; const QString ServerLMSWidget::languageENG = "en_EN";
const QString ServerLMSWidget::languageRUS = "ru_RU"; const QString ServerLMSWidget::languageRUS = "ru_RU";
@@ -26,19 +27,21 @@ ServerLMSWidget::ServerLMSWidget(QWidget *parent) :
commonClientHandler(nullptr), commonClientHandler(nullptr),
chatSystem(nullptr), chatSystem(nullptr),
providerDBLMS(nullptr), providerDBLMS(nullptr),
first (true),
language(languageENG), language(languageENG),
errorCode(0) errorCode(0)
{ {
ui->setupUi(this); ui->setupUi(this);
mutex = new QMutex;
qRegisterMetaType<PacketType>("PacketType"); qDebug() << "ServerLMSWidget init thread ID " << QThread::currentThreadId();
qRegisterMetaType<UserType>("UserType");
qRegisterMetaType<LogLevel>("LogLevel"); registerMetaType();
updateMyStyleSheet();
setLanguageInterfase(); setLanguageInterfase();
errorCode = 0; mutex = new QMutex;
ui->btnStopServer->setEnabled(false); ui->btnStopServer->setEnabled(false);
ui->btnStartServer->setEnabled(true); ui->btnStartServer->setEnabled(true);
@@ -94,14 +97,6 @@ ServerLMSWidget::ServerLMSWidget(QWidget *parent) :
emit sigUpdateController(commonClientHandler,dataParser,assetsManager); emit sigUpdateController(commonClientHandler,dataParser,assetsManager);
on_btnStartServer_clicked(); on_btnStartServer_clicked();
first = true;
qDebug() << "MAIN THREAD: " << QThread::currentThreadId();
}
void ServerLMSWidget::setError(int code)
{
errorCode = code;
} }
ServerLMSWidget::~ServerLMSWidget() ServerLMSWidget::~ServerLMSWidget()
@@ -110,7 +105,6 @@ ServerLMSWidget::~ServerLMSWidget()
updateThread->exit(); updateThread->exit();
loggerThread->exit(); loggerThread->exit();
delete server; delete server;
delete commonClientHandler; delete commonClientHandler;
delete dataParser; delete dataParser;
@@ -126,12 +120,16 @@ ServerLMSWidget::~ServerLMSWidget()
delete ui; delete ui;
} }
void ServerLMSWidget::setError(int code)
{
errorCode = code;
}
QString ServerLMSWidget::getLanguage() QString ServerLMSWidget::getLanguage()
{ {
return language; return language;
} }
void ServerLMSWidget::slotUpdateListClients() void ServerLMSWidget::slotUpdateListClients()
{ {
//Очищаем список //Очищаем список
@@ -239,15 +237,19 @@ void ServerLMSWidget::on_btnSettings_clicked()
language = dlg.getSettings().Language; language = dlg.getSettings().Language;
if(dlg.settingsServerIsChanged()) if(dlg.settingsServerIsChanged())
{ {//TODO Здесь нужно переподключать БД
//SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningClose, tr("Server settings have been changed. Please reconnect to the server.")).exec(); //SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningClose, tr("Server settings have been changed. Please reconnect to the server.")).exec();
//flSettingsServerIsChanged = true; providerDBLMS->deAuthorizationAll();
//if(authorizationIsCompleted()) on_btnStopServer_clicked();
//deAuthorizationInstructor(loginInstructorLoggedInLocal);
//connectorToServer->StopConnectToServer(); providerDBLMS->DisConnectionFromDB();
providerDBLMS->ConnectionToDB();
//on_btnStartServer_clicked();
} }
break; break;
@@ -279,3 +281,30 @@ void ServerLMSWidget::setLanguageInterfase()
emit signal_LanguageChanged(language); 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;
}
}

View File

@@ -102,6 +102,10 @@ private slots:
private: private:
void setLanguageInterfase(); void setLanguageInterfase();
private:
void updateMyStyleSheet();
QString loadStyleSheet();
private: private:
Ui::ServerLMSWidget *ui; Ui::ServerLMSWidget *ui;

View File

@@ -138,48 +138,6 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_Block">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Block Authorization</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblBlockAuth">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="ServerLMS.qrc">:/resources/icons/open.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item> <item>
<widget class="QToolButton" name="btnSettings"> <widget class="QToolButton" name="btnSettings">
<property name="minimumSize"> <property name="minimumSize">
@@ -298,6 +256,48 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_Block">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Authorization</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblBlockAuth">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="ServerLMS.qrc">:/resources/icons/open.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout> </layout>
</item> </item>
</layout> </layout>