diff --git a/GUIdataBaseLMS/mainwindow.cpp b/GUIdataBaseLMS/mainwindow.cpp index a71b858..99a0b30 100644 --- a/GUIdataBaseLMS/mainwindow.cpp +++ b/GUIdataBaseLMS/mainwindow.cpp @@ -12,20 +12,18 @@ MainWindow::MainWindow(QWidget *parent) { ui->setupUi(this); - this->setWindowTitle(tr("Learning management system (LMS)")); - - //Задаём два пункта с текстом локалей в комбобоксе - ui->cmbLanguage->addItems(QStringList() << "English" << "Русский"); - m_instructorsAndTraineesWidget = new InstructorsAndTraineesWidget(this); - ui->horizontalLayout->addWidget(m_instructorsAndTraineesWidget); + connect(m_instructorsAndTraineesWidget,&InstructorsAndTraineesWidget::signal_LanguageChanged,this,&MainWindow::slot_LanguageChanged); - connect(this, &MainWindow::signal_LanguageChanged, m_instructorsAndTraineesWidget, &InstructorsAndTraineesWidget::slot_LanguageChanged); + ui->horizontalLayout->addWidget(m_instructorsAndTraineesWidget); //this->move(0, 0); //this->showNormal(); this->showMaximized(); + + qtLanguageTranslator.load(QString("translations/GUIdataBaseLMS_") + "en_EN", "."); + qApp->installTranslator(&qtLanguageTranslator); } MainWindow::~MainWindow() @@ -43,17 +41,8 @@ void MainWindow::changeEvent(QEvent *event) } } -void MainWindow::on_cmbLanguage_currentIndexChanged(const QString &arg1) +void MainWindow::slot_LanguageChanged(QString language) { - QString language; - - if(arg1 == QStringLiteral("English")) - language = QString("en_EN"); - else - language = QString("ru_RU"); - - qtLanguageTranslator.load(QString("translations/testDBpgSQL_") + language, "."); + qtLanguageTranslator.load(QString(QStringLiteral("translations/GUIdataBaseLMS_")) + language, QStringLiteral(".")); qApp->installTranslator(&qtLanguageTranslator); - - emit signal_LanguageChanged(language); } diff --git a/GUIdataBaseLMS/mainwindow.h b/GUIdataBaseLMS/mainwindow.h index 2c5718a..3d720c7 100644 --- a/GUIdataBaseLMS/mainwindow.h +++ b/GUIdataBaseLMS/mainwindow.h @@ -22,12 +22,9 @@ public: protected: void changeEvent(QEvent * event) override; -signals: - //сигнал об изменении языка интерфейса - void signal_LanguageChanged(QString language); - -private slots: - void on_cmbLanguage_currentIndexChanged(const QString &arg1); +public Q_SLOTS: + //Слот обработки смены языка + void slot_LanguageChanged(QString language); private: Ui::MainWindow *ui; diff --git a/GUIdataBaseLMS/mainwindow.ui b/GUIdataBaseLMS/mainwindow.ui index cbc58d6..16aacea 100644 --- a/GUIdataBaseLMS/mainwindow.ui +++ b/GUIdataBaseLMS/mainwindow.ui @@ -11,7 +11,7 @@ - MainWindow + Learning management system (LMS) @@ -20,40 +20,6 @@ - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Language - - - - - - - - 100 - 0 - - - - - - diff --git a/GUIdataBaseLMS/translations/GUIdataBaseLMS_ru_RU.qm b/GUIdataBaseLMS/translations/GUIdataBaseLMS_ru_RU.qm new file mode 100644 index 0000000..a3c25fb Binary files /dev/null and b/GUIdataBaseLMS/translations/GUIdataBaseLMS_ru_RU.qm differ diff --git a/GUIdataBaseLMS/translations/GUIdataBaseLMS_ru_RU.ts b/GUIdataBaseLMS/translations/GUIdataBaseLMS_ru_RU.ts new file mode 100644 index 0000000..9fe98cb --- /dev/null +++ b/GUIdataBaseLMS/translations/GUIdataBaseLMS_ru_RU.ts @@ -0,0 +1,12 @@ + + + + + MainWindow + + + Learning management system (LMS) + Система управления обучением (СУО) + + + diff --git a/InstructorsAndTrainees/CMakeLists.txt b/InstructorsAndTrainees/CMakeLists.txt index b5fb663..427d04c 100644 --- a/InstructorsAndTrainees/CMakeLists.txt +++ b/InstructorsAndTrainees/CMakeLists.txt @@ -7,6 +7,9 @@ add_library(InstructorsAndTrainees SHARED instructorsandtraineeswidget.cpp instructorsandtraineeswidget.h instructorsandtraineeswidget.ui + dialogsettings.cpp + dialogsettings.h + dialogsettings.ui commonview.cpp commonview.h diff --git a/InstructorsAndTrainees/dialogsettings.cpp b/InstructorsAndTrainees/dialogsettings.cpp new file mode 100644 index 0000000..ae0d4a7 --- /dev/null +++ b/InstructorsAndTrainees/dialogsettings.cpp @@ -0,0 +1,45 @@ +#include "dialogsettings.h" +#include "ui_dialogsettings.h" + +DialogSettings::DialogSettings(QWidget *parent) : + QDialog(parent), + ui(new Ui::DialogSettings) +{ + ui->setupUi(this); + + ui->btnUpdateStyle->setObjectName("btnUpdateStyle"); + + //Задаём два пункта с текстом локалей в комбобоксе + ui->cmbLanguage->addItems(QStringList() << "English" << "Русский"); +} + +DialogSettings::~DialogSettings() +{ + delete ui; +} + +void DialogSettings::changeEvent(QEvent *event) +{ + // В случае получения события изменения языка приложения + if (event->type() == QEvent::LanguageChange) + {// переведём окно заново + ui->retranslateUi(this); + } +} + +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(); +} diff --git a/InstructorsAndTrainees/dialogsettings.h b/InstructorsAndTrainees/dialogsettings.h new file mode 100644 index 0000000..cfcd813 --- /dev/null +++ b/InstructorsAndTrainees/dialogsettings.h @@ -0,0 +1,39 @@ +#ifndef DIALOGSETTINGS_H +#define DIALOGSETTINGS_H + +#include +#include +#include + +namespace Ui { +class DialogSettings; +} + +class DialogSettings : public QDialog +{ + Q_OBJECT + +public: + explicit DialogSettings(QWidget *parent = nullptr); + ~DialogSettings(); + +protected: + void changeEvent(QEvent * event) override; + +signals: + //сигнал об изменении языка интерфейса + void signal_LanguageChanged(QString language); + //сигнал об изменении стиля + void signal_UpdateStyleSheet(); + +private slots: + void on_cmbLanguage_currentIndexChanged(const QString &arg1); + + void on_btnUpdateStyle_clicked(); + +private: + Ui::DialogSettings *ui; + QTranslator qtLanguageTranslator; +}; + +#endif // DIALOGSETTINGS_H diff --git a/InstructorsAndTrainees/dialogsettings.ui b/InstructorsAndTrainees/dialogsettings.ui new file mode 100644 index 0000000..2aca2a7 --- /dev/null +++ b/InstructorsAndTrainees/dialogsettings.ui @@ -0,0 +1,113 @@ + + + DialogSettings + + + + 0 + 0 + 400 + 300 + + + + Settings + + + + + + + + + + Language + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 58 + 58 + + + + Update style + + + + :/resources/icons/style.png:/resources/icons/style.png + + + + 32 + 32 + + + + Qt::ToolButtonTextUnderIcon + + + + + + + + + + + + + + diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp index de9ce81..a542075 100644 --- a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp +++ b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp @@ -3,6 +3,7 @@ #include "instructorsandtraineeswidget.h" #include "ui_instructorsandtraineeswidget.h" #include "dialogauthorizationinstructor.h" +#include "dialogsettings.h" InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) : QWidget(parent), @@ -19,7 +20,7 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) : { ui->setupUi(this); - ui->btnUpdateStyleSheet->setObjectName("btnUpdateStyleSheet"); + ui->btnSettings->setObjectName("btnSettings"); #ifndef PROJECT_TYPE_DEBUG ui->btnUpdateStyleSheet->setVisible(false); #endif @@ -182,7 +183,12 @@ void InstructorsAndTraineesWidget::slot_LanguageChanged(QString language) qtLanguageTranslator.load(QString(QStringLiteral("translations/InstructorsAndTraineesWidget_")) + language, QStringLiteral(".")); qApp->installTranslator(&qtLanguageTranslator); - Q_EMIT signal_LanguageChanged(language); + emit signal_LanguageChanged(language); +} + +void InstructorsAndTraineesWidget::slot_UpdateStyleSheet() +{ + updateMyStyleSheet(); } void InstructorsAndTraineesWidget::checkLoginResult(ServerAuthorization *serverAuth) @@ -408,11 +414,6 @@ void InstructorsAndTraineesWidget::updateLabelLoggedInInstructor(QString login, } } -void InstructorsAndTraineesWidget::on_btnUpdateStyleSheet_clicked() -{ - updateMyStyleSheet(); -} - void InstructorsAndTraineesWidget::on_btnSetVersion_clicked() { connectorToServer->showVersionSelect(); @@ -445,3 +446,24 @@ void InstructorsAndTraineesWidget::on_tabWidget_currentChanged(int index) ui->btnAssignTask->setEnabled(false); } } + +void InstructorsAndTraineesWidget::on_btnSettings_clicked() +{ + DialogSettings dlg(this); + + connect(&dlg, &DialogSettings::signal_LanguageChanged, this, &InstructorsAndTraineesWidget::slot_LanguageChanged); + connect(&dlg, &DialogSettings::signal_UpdateStyleSheet, this, &InstructorsAndTraineesWidget::slot_UpdateStyleSheet); + + + switch( dlg.exec() ) + { + case QDialog::Accepted: + { + break; + } + case QDialog::Rejected: + break; + default: + break; + } +} diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.h b/InstructorsAndTrainees/instructorsandtraineeswidget.h index 0849baa..205c460 100644 --- a/InstructorsAndTrainees/instructorsandtraineeswidget.h +++ b/InstructorsAndTrainees/instructorsandtraineeswidget.h @@ -45,6 +45,10 @@ private: public Q_SLOTS: //Слот обработки смены языка void slot_LanguageChanged(QString language); + //Слот обработки смены стиля + void slot_UpdateStyleSheet(); + + //Слот обработки результата авторизации void checkLoginResult(ServerAuthorization * serverAuth); //Слот обработки результата деавторизации @@ -54,7 +58,7 @@ public Q_SLOTS: void slot_currentItemChanged(); Q_SIGNALS: - //сигнал об изменении языка интерфейса + //Слот смены языка void signal_LanguageChanged(QString language); //сигнал о необходимости обновления интерфейса void signal_NeedUpdateUI(bool treeInstructor, bool treeTrainee); @@ -67,7 +71,6 @@ Q_SIGNALS: private Q_SLOTS: void on_btnConnectionToServer_clicked(); void on_btnAuthorizationInstructor_clicked(); - void on_btnUpdateStyleSheet_clicked(); void on_btnSetVersion_clicked(); @@ -75,6 +78,8 @@ private Q_SLOTS: void on_tabWidget_currentChanged(int index); + void on_btnSettings_clicked(); + private: //Авторизация инструктора локальная bool authorizationInstructorDialog(QWidget* parent = nullptr); diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.ui b/InstructorsAndTrainees/instructorsandtraineeswidget.ui index a47deef..6c16896 100644 --- a/InstructorsAndTrainees/instructorsandtraineeswidget.ui +++ b/InstructorsAndTrainees/instructorsandtraineeswidget.ui @@ -217,7 +217,7 @@ - + 58 @@ -225,7 +225,20 @@ - Update StyleSheet + Settings + + + + :/resources/icons/settings.png:/resources/icons/settings.png + + + + 32 + 32 + + + + Qt::ToolButtonTextUnderIcon diff --git a/InstructorsAndTrainees/resources.qrc b/InstructorsAndTrainees/resources.qrc index 2370395..af43fd8 100644 --- a/InstructorsAndTrainees/resources.qrc +++ b/InstructorsAndTrainees/resources.qrc @@ -47,5 +47,7 @@ resources/icons/check.png resources/icons/circleRed.png resources/icons/circleYellow.png + resources/icons/settings.png + resources/icons/style.png diff --git a/InstructorsAndTrainees/resources/icons/settings.png b/InstructorsAndTrainees/resources/icons/settings.png new file mode 100644 index 0000000..91dfee9 Binary files /dev/null and b/InstructorsAndTrainees/resources/icons/settings.png differ diff --git a/InstructorsAndTrainees/resources/icons/style.png b/InstructorsAndTrainees/resources/icons/style.png new file mode 100644 index 0000000..05e9621 Binary files /dev/null and b/InstructorsAndTrainees/resources/icons/style.png differ diff --git a/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.qm b/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.qm index 52e5ba6..e6424dd 100644 Binary files a/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.qm and b/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.qm differ diff --git a/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.ts b/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.ts index 88e1f0b..600f3bb 100644 --- a/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.ts +++ b/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.ts @@ -232,6 +232,19 @@ The status will be set: 'completed' Залогирован + + DialogSettings + + + Settings + Настройки + + + + Language + Язык + + EditorInstructors @@ -613,28 +626,33 @@ Delete it anyway? Обновить стиль - + + Settings + Настройки + + + Tasks Задачи - + AMM - + FIM - + Assign task Назначить задачу - + Authorization Instructor @@ -647,18 +665,18 @@ Delete it anyway? нет - + Deauthorization Instructor Деавторизация инструктора - + Attention! Внимание! - + The file could not be opened Файл не может быть открыт