diff --git a/GUIdataBaseLMS/mainwindow.h b/GUIdataBaseLMS/mainwindow.h
index b6e7afe..4bb13ad 100644
--- a/GUIdataBaseLMS/mainwindow.h
+++ b/GUIdataBaseLMS/mainwindow.h
@@ -28,8 +28,7 @@ public Q_SLOTS:
private:
Ui::MainWindow *ui;
- QTranslator qtLanguageTranslator;
-
InstructorsAndTraineesWidget* instructorsAndTraineesWidget;
+ QTranslator qtLanguageTranslator;
};
#endif // MAINWINDOW_H
diff --git a/InstructorsAndTrainees/dialogsettings.ui b/InstructorsAndTrainees/dialogsettings.ui
index a994d69..9c38188 100644
--- a/InstructorsAndTrainees/dialogsettings.ui
+++ b/InstructorsAndTrainees/dialogsettings.ui
@@ -26,7 +26,7 @@
Settings
-
+
:/resources/icons/lms.png:/resources/icons/lms.png
@@ -232,7 +232,7 @@
Save
-
+
:/resources/icons/circleGreen.png:/resources/icons/circleGreen.png
@@ -291,7 +291,7 @@
Version
-
+
:/resources/icons/updateVersion.png:/resources/icons/updateVersion.png
@@ -323,7 +323,7 @@
Style
-
+
:/resources/icons/style.png:/resources/icons/style.png
@@ -359,8 +359,6 @@
-
-
-
+
diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.ui b/InstructorsAndTrainees/instructorsandtraineeswidget.ui
index 1588cc7..4621831 100644
--- a/InstructorsAndTrainees/instructorsandtraineeswidget.ui
+++ b/InstructorsAndTrainees/instructorsandtraineeswidget.ui
@@ -53,7 +53,7 @@
Connection
-
+
:/resources/icons/connectDB.png:/resources/icons/connectDB.png
@@ -82,7 +82,7 @@
Authorization
-
+
:/resources/icons/login-user.png:/resources/icons/login-user.png
@@ -111,7 +111,7 @@
Trainee editor
-
+
:/resources/icons/DB-trainees.png:/resources/icons/DB-trainees.png
@@ -137,7 +137,7 @@
Instructor editor
-
+
:/resources/icons/DB-instructors.png:/resources/icons/DB-instructors.png
@@ -163,7 +163,7 @@
Personal card
-
+
:/resources/icons/personalCard.png:/resources/icons/personalCard.png
@@ -202,7 +202,7 @@
Settings
-
+
:/resources/icons/settings.png:/resources/icons/settings.png
@@ -323,7 +323,7 @@
- :/resources/icons/circleGray.png
+ :/resources/icons/circleGray.png
true
@@ -379,7 +379,7 @@
- :/resources/icons/circleGray.png
+ :/resources/icons/circleGray.png
true
@@ -427,7 +427,7 @@
-
+
diff --git a/ServerLMS/CMakeLists.txt b/ServerLMS/CMakeLists.txt
index e35e17e..151a7bc 100644
--- a/ServerLMS/CMakeLists.txt
+++ b/ServerLMS/CMakeLists.txt
@@ -7,6 +7,9 @@ add_library(ServerLMS SHARED
serverlmswidget.cpp
serverlmswidget.h
serverlmswidget.ui
+ dialogsettingstray.cpp
+ dialogsettingstray.h
+ dialogsettingstray.ui
clienthandler.cpp
clienthandler.h
multithreadserver.cpp
diff --git a/ServerLMS/ServerLMS.qrc b/ServerLMS/ServerLMS.qrc
index ccce1a3..041e467 100644
--- a/ServerLMS/ServerLMS.qrc
+++ b/ServerLMS/ServerLMS.qrc
@@ -14,5 +14,6 @@
resources/icons/open.png
resources/icons/rocket.png
resources/icons/stop.png
+ resources/icons/settings.png
diff --git a/ServerLMS/dialogsettingstray.cpp b/ServerLMS/dialogsettingstray.cpp
new file mode 100644
index 0000000..8edbe4e
--- /dev/null
+++ b/ServerLMS/dialogsettingstray.cpp
@@ -0,0 +1,163 @@
+#include "dialogsettingstray.h"
+#include "ui_dialogsettingstray.h"
+
+DialogSettingsTray::DialogSettingsTray(QWidget *parent) :
+ QDialog(parent),
+ ui(new Ui::DialogSettingsTray),
+ settings(nullptr),
+ flSettingsServerChanged(false)
+{
+ ui->setupUi(this);
+
+ settings = new DBSettings;
+
+ //Задаём два пункта с текстом локалей в комбобоксе
+ ui->cmbLanguage->addItems(QStringList() << "English" << "Русский");
+
+ if(loadSettings(settings))
+ {
+ if(settings->Language == "ENG")
+ ui->cmbLanguage->setCurrentText("English");
+ else
+ ui->cmbLanguage->setCurrentText("Русский");
+
+ //ui->editAddress->setText(settings->Address);
+ //ui->editPort->setText(settings->Port);
+ }
+
+ ui->btnSave->setEnabled(false);
+ flSettingsServerChanged = false;
+}
+
+DialogSettingsTray::~DialogSettingsTray()
+{
+ delete ui;
+ delete settings;
+}
+
+DBSettings DialogSettingsTray::getSettings()
+{
+ return *settings;
+}
+
+bool DialogSettingsTray::loadSettings(DBSettings *settings)
+{
+ /*
+ 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;
+}
+
+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->editAddress->text();
+ //settings->Port = ui->editPort->text();
+
+ saveSettings();
+
+ this->accept();
+}
+
+bool DialogSettingsTray::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 DialogSettingsTray::on_cmbLanguage_currentIndexChanged(int index)
+{
+ ui->btnSave->setEnabled(true);
+}
+
+void DialogSettingsTray::on_DialogSettingsTray_accepted()
+{
+ QString language;
+
+ if(settings->Language == "ENG")
+ language = QString("en_EN");
+ else
+ language = QString("ru_RU");
+
+ emit signal_LanguageChanged(language);
+}
diff --git a/ServerLMS/dialogsettingstray.h b/ServerLMS/dialogsettingstray.h
new file mode 100644
index 0000000..103d990
--- /dev/null
+++ b/ServerLMS/dialogsettingstray.h
@@ -0,0 +1,56 @@
+#ifndef DIALOGSETTINGSTRAY_H
+#define DIALOGSETTINGSTRAY_H
+
+#include
+#include
+#include
+
+class DBSettings{
+public:
+ QString Address;
+ QString Port;
+ QString Language;
+};
+
+namespace Ui {
+class DialogSettingsTray;
+}
+
+class DialogSettingsTray : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit DialogSettingsTray(QWidget *parent = nullptr);
+ ~DialogSettingsTray();
+
+ DBSettings getSettings();
+
+ bool settingsServerIsChanged(){ return flSettingsServerChanged;}
+
+ static bool loadSettings(DBSettings *settings);
+
+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();
+
+private:
+ bool saveSettings();
+
+private:
+ Ui::DialogSettingsTray *ui;
+
+ DBSettings *settings;
+
+ bool flSettingsServerChanged;
+};
+
+#endif // DIALOGSETTINGSTRAY_H
diff --git a/ServerLMS/dialogsettingstray.ui b/ServerLMS/dialogsettingstray.ui
new file mode 100644
index 0000000..58f2fdf
--- /dev/null
+++ b/ServerLMS/dialogsettingstray.ui
@@ -0,0 +1,110 @@
+
+
+ DialogSettingsTray
+
+
+
+ 0
+ 0
+ 400
+ 300
+
+
+
+ Dialog
+
+
+ -
+
+
-
+
+
+ Main
+
+
+
-
+
+
-
+
+
-
+
+
+ Language
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
-
+
+
+
+ 58
+ 58
+
+
+
+ Save
+
+
+
+ :/resources/icons/circleGreen.png:/resources/icons/circleGreen.png
+
+
+
+ 32
+ 32
+
+
+
+ Qt::ToolButtonTextUnderIcon
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ServerLMS/resources/icons/settings.png b/ServerLMS/resources/icons/settings.png
new file mode 100644
index 0000000..07376fe
Binary files /dev/null and b/ServerLMS/resources/icons/settings.png differ
diff --git a/ServerLMS/serverlmswidget.cpp b/ServerLMS/serverlmswidget.cpp
index a7b4104..8f05e74 100644
--- a/ServerLMS/serverlmswidget.cpp
+++ b/ServerLMS/serverlmswidget.cpp
@@ -6,8 +6,12 @@
#include
#include
#include "serverlmswidget.h"
+#include "dialogsettingstray.h"
#include "ui_serverlmswidget.h"
+const QString ServerLMSWidget::languageENG = "en_EN";
+const QString ServerLMSWidget::languageRUS = "ru_RU";
+
ServerLMSWidget::ServerLMSWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::ServerLMSWidget),
@@ -17,7 +21,8 @@ ServerLMSWidget::ServerLMSWidget(QWidget *parent) :
dataParser(nullptr),
processingSystem(nullptr),
updateController(nullptr),
- providerDBLMS(nullptr)
+ providerDBLMS(nullptr),
+ language(languageENG)
{
ui->setupUi(this);
mutex = new QMutex;
@@ -145,6 +150,8 @@ void ServerLMSWidget::slot_LanguageChanged(QString language)
{
qtLanguageTranslator.load(QString("translations/ServerLMS_") + language, ".");
qApp->installTranslator(&qtLanguageTranslator);
+
+ emit signal_LanguageChanged(language);
}
void ServerLMSWidget::on_btnStartServer_clicked()
@@ -192,3 +199,44 @@ void ServerLMSWidget::changeEvent(QEvent *event)
ui->lblDBsettings->setText(strDBsettings);
}
}
+
+void ServerLMSWidget::on_cmbLanguage_currentTextChanged(const QString &arg1)
+{
+
+}
+
+void ServerLMSWidget::on_btnSettings_clicked()
+{
+ DialogSettingsTray dlg(this);
+ dlg.setWindowFlags(dlg.windowFlags() & ~Qt::WindowContextHelpButtonHint);
+
+ connect(&dlg, &DialogSettingsTray::signal_LanguageChanged, this, &ServerLMSWidget::slot_LanguageChanged);
+ //connect(&dlg, &DialogSettingsTray::signal_UpdateStyleSheet, this, &InstructorsAndTraineesWidget::slot_UpdateStyleSheet);
+
+
+ switch( dlg.exec() )
+ {
+ case QDialog::Accepted:
+ {
+ language = dlg.getSettings().Language;
+
+ if(dlg.settingsServerIsChanged())
+ {
+ //SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningClose, tr("Server settings have been changed. Please reconnect to the server.")).exec();
+
+ //flSettingsServerIsChanged = true;
+
+ //if(authorizationIsCompleted())
+ //deAuthorizationInstructor(loginInstructorLoggedInLocal);
+
+ //connectorToServer->StopConnectToServer();
+ }
+
+ break;
+ }
+ case QDialog::Rejected:
+ break;
+ default:
+ break;
+ }
+}
diff --git a/ServerLMS/serverlmswidget.h b/ServerLMS/serverlmswidget.h
index e958583..c7d8dc1 100644
--- a/ServerLMS/serverlmswidget.h
+++ b/ServerLMS/serverlmswidget.h
@@ -49,6 +49,10 @@ public:
explicit ServerLMSWidget(QWidget *parent = nullptr);
~ServerLMSWidget();
+public:
+ static const QString languageENG;
+ static const QString languageRUS;
+
void setError(int code);
protected:
@@ -63,6 +67,9 @@ signals:
QTcpSocket* sigGetSocket();
+ //сигнал смены языка
+ void signal_LanguageChanged(QString language);
+
public slots:
void slot_LanguageChanged(QString language);
void slotUpdateListClients();
@@ -87,6 +94,10 @@ private slots:
void on_btnStartServer_clicked();
void on_btnStopServer_clicked();
+ void on_cmbLanguage_currentTextChanged(const QString &arg1);
+
+ void on_btnSettings_clicked();
+
private:
Ui::ServerLMSWidget *ui;
@@ -108,6 +119,7 @@ private:
bool first = true; // для тестов Unity
QTranslator qtLanguageTranslator;
+ QString language;
int errorCode;
};
diff --git a/ServerLMS/serverlmswidget.ui b/ServerLMS/serverlmswidget.ui
index f16ac45..da8f3ec 100644
--- a/ServerLMS/serverlmswidget.ui
+++ b/ServerLMS/serverlmswidget.ui
@@ -28,8 +28,8 @@
- 80
- 55
+ 130
+ 58
@@ -51,7 +51,7 @@
Start
-
+
:/resources/icons/rocket.png:/resources/icons/rocket.png
@@ -69,8 +69,8 @@
- 80
- 55
+ 130
+ 58
@@ -92,7 +92,7 @@
Stop
-
+
:/resources/icons/stop.png:/resources/icons/stop.png
@@ -106,6 +106,25 @@
+ -
+
+
+
+ 40
+ 40
+
+
+
+
+
+
+ :/resources/icons/switchOff.png
+
+
+ true
+
+
+
-
@@ -120,21 +139,28 @@
-
-
-
+
+
- 40
- 40
+ 130
+ 58
-
+ Settings
-
- :/resources/icons/switchOff.png
+
+
+ :/resources/icons/settings.png:/resources/icons/settings.png
-
- true
+
+
+ 32
+ 32
+
+
+
+ Qt::ToolButtonTextUnderIcon
@@ -263,7 +289,7 @@
- :/resources/icons/open.png
+ :/resources/icons/open.png
true
@@ -279,7 +305,8 @@
-
+
+
diff --git a/TrayServerLMS/mainwindow.cpp b/TrayServerLMS/mainwindow.cpp
index 1d502f1..8d0f95c 100644
--- a/TrayServerLMS/mainwindow.cpp
+++ b/TrayServerLMS/mainwindow.cpp
@@ -6,7 +6,7 @@
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
- m_serverLMSWidget(nullptr),
+ serverLMSWidget(nullptr),
trayIcon(nullptr),
menu(nullptr),
action_ShowWindow(nullptr),
@@ -18,11 +18,11 @@ MainWindow::MainWindow(QWidget *parent) :
//Задаём два пункта с текстом локалей в комбобоксе
ui->cmbLanguage->addItems(QStringList() << "English" << "Русский");
- m_serverLMSWidget = new ServerLMSWidget(this);
+ serverLMSWidget = new ServerLMSWidget(this);
- ui->verticalLayout_1->addWidget(m_serverLMSWidget);
+ ui->verticalLayout_1->addWidget(serverLMSWidget);
- connect(this, &MainWindow::signal_LanguageChanged, m_serverLMSWidget, &ServerLMSWidget::slot_LanguageChanged);
+ connect(serverLMSWidget, &ServerLMSWidget::signal_LanguageChanged, this, &MainWindow::slot_LanguageChanged);
//this->move(0, 0);
//this->showNormal();
@@ -115,7 +115,7 @@ void MainWindow::exit()
MainWindow::~MainWindow()
{
- delete m_serverLMSWidget;
+ delete serverLMSWidget;
delete trayIcon;
delete ui;
}
@@ -146,7 +146,7 @@ void MainWindow::on_cmbLanguage_currentIndexChanged(const QString &arg1)
void MainWindow::errorCheck()
{
- if(m_serverLMSWidget->hasError() == 100)
+ if(serverLMSWidget->hasError() == 100)
{
QMessageBox msgBox;
@@ -193,3 +193,9 @@ void MainWindow::slot_Menu_Exit()
this->hide();
this->close();
}
+
+void MainWindow::slot_LanguageChanged(QString language)
+{
+ qtLanguageTranslator.load(QString(QStringLiteral("translations/TrayServerLMS_")) + language, QStringLiteral("."));
+ qApp->installTranslator(&qtLanguageTranslator);
+}
diff --git a/TrayServerLMS/mainwindow.h b/TrayServerLMS/mainwindow.h
index ebe0ef7..be24c8b 100644
--- a/TrayServerLMS/mainwindow.h
+++ b/TrayServerLMS/mainwindow.h
@@ -36,6 +36,10 @@ protected:
*/
void closeEvent(QCloseEvent * event) override;
+public slots:
+ //Слот обработки смены языка
+ void slot_LanguageChanged(QString language);
+
private slots:
//Слот нажатия на иконку приложения в трее
void slot_IconActivated(QSystemTrayIcon::ActivationReason reason);
@@ -60,7 +64,7 @@ private:
private:
Ui::MainWindow *ui;
- ServerLMSWidget* m_serverLMSWidget;
+ ServerLMSWidget* serverLMSWidget;
QTranslator qtLanguageTranslator;
QSystemTrayIcon* trayIcon;