This commit is contained in:
2025-05-30 12:01:24 +03:00
parent 0ff72cf6c1
commit c4d60f0081
13 changed files with 435 additions and 362 deletions

View File

@@ -22,8 +22,16 @@ MainWindow::MainWindow(QWidget *parent)
//this->showNormal();
this->showMaximized();
if(m_instructorsAndTraineesWidget->getLanguage() == "ENG")
{
qtLanguageTranslator.load(QString("translations/GUIdataBaseLMS_") + "en_EN", ".");
qApp->installTranslator(&qtLanguageTranslator);
}
else
{
qtLanguageTranslator.load(QString("translations/GUIdataBaseLMS_") + "ru_RU", ".");
qApp->installTranslator(&qtLanguageTranslator);
}
}
MainWindow::~MainWindow()

View File

@@ -40,17 +40,6 @@
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources>
<include location="testDBpgSQL.qrc"/>

View File

@@ -78,6 +78,11 @@ DialogSettings::~DialogSettings()
delete settings;
}
ServerSettings DialogSettings::getSettings()
{
return *settings;
}
void DialogSettings::changeEvent(QEvent *event)
{
// В случае получения события изменения языка приложения

View File

@@ -19,6 +19,8 @@ public:
explicit DialogSettings(ConnectorToServer* connectorToServer, bool instructorIsLogged, QWidget *parent = nullptr);
~DialogSettings();
ServerSettings getSettings();
protected:
void changeEvent(QEvent * event) override;

View File

@@ -16,12 +16,15 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
fimTasksWidget(nullptr),
adminMode(false),
loginInstructorLoggedInLocal(QStringLiteral("")),
nameInstructorLoggedInLocal(QStringLiteral(""))
nameInstructorLoggedInLocal(QStringLiteral("")),
language("ENG")
{
ui->setupUi(this);
ui->btnSettings->setObjectName("btnSettings");
ui->tabWidgetTasks->setObjectName("tabWidgetTasks");
ui->widgetTop->setObjectName("widgetTop");
#ifndef PROJECT_TYPE_DEBUG
ui->btnUpdateStyleSheet->setVisible(false);
#endif
@@ -156,6 +159,11 @@ void InstructorsAndTraineesWidget::updateMyStyleSheet()
this->setStyleSheet(styleSheet);
}
QString InstructorsAndTraineesWidget::getLanguage()
{
return language;
}
QString InstructorsAndTraineesWidget::loadStyleSheet()
{
//QString fileName = ":/resources/css/styleSheetMain.css";
@@ -412,7 +420,7 @@ void InstructorsAndTraineesWidget::updateLabelServer()
if(connectorToServer->getIsConnected())
{
ServerSettings serverSettings = connectorToServer->getServerSettings();
ui->lblServer->setText(serverSettings.Address + ":" +serverSettings.Port);
ui->lblServer->setText(serverSettings.Address + " : " +serverSettings.Port);
}
else
ui->lblServer->setText(tr("none"));
@@ -435,6 +443,7 @@ void InstructorsAndTraineesWidget::on_btnSettings_clicked()
{
case QDialog::Accepted:
{
language = dlg.getSettings().Language;
break;
}
case QDialog::Rejected:
@@ -442,6 +451,8 @@ void InstructorsAndTraineesWidget::on_btnSettings_clicked()
default:
break;
}
language = dlg.getSettings().Language;
}
void InstructorsAndTraineesWidget::on_btnEditorTrainees_clicked()

View File

@@ -39,6 +39,7 @@ private:
public:
void updateMyStyleSheet();
QString getLanguage();
private:
QString loadStyleSheet();
@@ -100,6 +101,7 @@ private:
QString nameInstructorLoggedInLocal;
QTranslator qtLanguageTranslator;
QString language;
};
#endif // INSTRUCTORSANDTRAINEESWIDGET_H

View File

@@ -25,18 +25,11 @@
<item>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="font">
<font>
<family>Tahoma</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="title">
<string/>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<widget class="QWidget" name="widgetTop" native="true">
<layout class="QGridLayout" name="gridLayout_6">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_1">
<item>
<widget class="QToolButton" name="btnConnectionToServer">
@@ -299,6 +292,8 @@
</layout>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>

View File

@@ -56,13 +56,13 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
ui->btnOnlyActive->setObjectName("btnOnlyActive");
ui->btnAssignTask->setObjectName("btnAssignTask");
ui->btnAssignTask->setEnabled(false);
if(type == TypeList::listCommon)
{
ui->horizontalLayout_3->addWidget(ui->btnAssignTask);
ui->horizontalLayout_3->addWidget(ui->btnOnlyActive);
ui->horizontalLayout_3->addWidget(ui->btnCheck);
ui->horizontalLayout_3->addWidget(ui->btnDelete);
ui->horizontalLayout_3->setAlignment(Qt::AlignmentFlag::AlignLeft);
ui->btnDelete->setVisible(false);

View File

@@ -53,7 +53,6 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
ui->horizontalLayout_3->addWidget(ui->btnAssignTask);
ui->horizontalLayout_3->addWidget(ui->btnCheck);
ui->horizontalLayout_3->addWidget(ui->btnDelete);
ui->horizontalLayout_3->setAlignment(Qt::AlignmentFlag::AlignLeft);
ui->btnDelete->setVisible(false);

View File

@@ -24,7 +24,7 @@ void TraineesView::resizeEvent(QResizeEvent *event)
if(typeView == TypeView::onlyView)
{//onlyView
widthTrainee = width - (530 + 10);
widthTrainee = width - (230 + 10);
}
else
{//control
@@ -62,6 +62,10 @@ void TraineesView::preparationTreeWidget()
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_ID, true);
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Password, true);
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Archived, true);
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Class, true);
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Computer, true);
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_IP_address, true);
}
else
{//control

View File

@@ -9,59 +9,64 @@
<translation>Форма</translation>
</message>
<message>
<location filename="../tasks/ammtaskswidget.ui" line="52"/>
<location filename="../tasks/ammtaskswidget.ui" line="41"/>
<source>Assign</source>
<translation>Назначить</translation>
</message>
<message>
<location filename="../tasks/ammtaskswidget.ui" line="67"/>
<source>Аvailable</source>
<translation>Доступные</translation>
</message>
<message>
<location filename="../tasks/ammtaskswidget.ui" line="81"/>
<location filename="../tasks/ammtaskswidget.ui" line="96"/>
<source>Check</source>
<translation>Проверить</translation>
</message>
<message>
<location filename="../tasks/ammtaskswidget.ui" line="107"/>
<location filename="../tasks/ammtaskswidget.ui" line="122"/>
<source>Delete</source>
<translation>Удалить</translation>
</message>
<message>
<location filename="../tasks/ammtaskswidget.cpp" line="258"/>
<location filename="../tasks/ammtaskswidget.cpp" line="285"/>
<source>Task AMM</source>
<translation>Задача AMM</translation>
</message>
<message>
<location filename="../tasks/ammtaskswidget.cpp" line="258"/>
<location filename="../tasks/ammtaskswidget.cpp" line="285"/>
<source>DM code</source>
<translation>DM код</translation>
</message>
<message>
<location filename="../tasks/ammtaskswidget.cpp" line="258"/>
<location filename="../tasks/ammtaskswidget.cpp" line="260"/>
<location filename="../tasks/ammtaskswidget.cpp" line="285"/>
<location filename="../tasks/ammtaskswidget.cpp" line="287"/>
<source>ID</source>
<translation>ID</translation>
</message>
<message>
<location filename="../tasks/ammtaskswidget.cpp" line="258"/>
<location filename="../tasks/ammtaskswidget.cpp" line="260"/>
<location filename="../tasks/ammtaskswidget.cpp" line="285"/>
<location filename="../tasks/ammtaskswidget.cpp" line="287"/>
<source>Status</source>
<translation>Статус</translation>
</message>
<message>
<location filename="../tasks/ammtaskswidget.cpp" line="260"/>
<location filename="../tasks/ammtaskswidget.cpp" line="287"/>
<source>PM/DM</source>
<translation>PM/DM</translation>
</message>
<message>
<location filename="../tasks/ammtaskswidget.cpp" line="260"/>
<location filename="../tasks/ammtaskswidget.cpp" line="287"/>
<source>Code</source>
<translation>Код</translation>
</message>
<message>
<location filename="../tasks/ammtaskswidget.cpp" line="315"/>
<location filename="../tasks/ammtaskswidget.cpp" line="342"/>
<source>Attention!</source>
<translation>Внимание!</translation>
</message>
<message>
<location filename="../tasks/ammtaskswidget.cpp" line="315"/>
<location filename="../tasks/ammtaskswidget.cpp" line="342"/>
<source>The deletion will be irrevocable.
Delete it anyway?</source>
<translation>Удаление будет безвозвратным.
@@ -110,14 +115,14 @@ Delete it anyway?</source>
<translation>Отчет о выполнении</translation>
</message>
<message>
<location filename="../tasks/dialogchecktask.ui" line="88"/>
<location filename="../tasks/dialogchecktask.ui" line="101"/>
<source>Failed</source>
<translation>Неверно</translation>
</message>
<message>
<location filename="../tasks/dialogchecktask.ui" line="114"/>
<source>Completed</source>
<translation>Выполнена</translation>
<location filename="../tasks/dialogchecktask.ui" line="127"/>
<source>Right</source>
<translation>Верно</translation>
</message>
<message>
<location filename="../tasks/dialogchecktask.cpp" line="70"/>
@@ -235,15 +240,60 @@ The status will be set: &apos;completed&apos;</source>
<context>
<name>DialogSettings</name>
<message>
<location filename="../dialogsettings.ui" line="14"/>
<source>Settings</source>
<translation>Настройки</translation>
<location filename="../dialogsettings.ui" line="20"/>
<source>Learning management system - Settings</source>
<translation>Система управления обучением - Настройки</translation>
</message>
<message>
<location filename="../dialogsettings.ui" line="24"/>
<location filename="../dialogsettings.ui" line="43"/>
<source>Main</source>
<translation>Основные</translation>
</message>
<message>
<location filename="../dialogsettings.ui" line="61"/>
<source>Language</source>
<translation>Язык</translation>
</message>
<message>
<location filename="../dialogsettings.ui" line="99"/>
<source>Server</source>
<translation>Сервер</translation>
</message>
<message>
<location filename="../dialogsettings.ui" line="109"/>
<source>Address</source>
<translation>Адрес</translation>
</message>
<message>
<location filename="../dialogsettings.ui" line="146"/>
<source>Port</source>
<translation>Порт</translation>
</message>
<message>
<location filename="../dialogsettings.ui" line="189"/>
<source>Auto start</source>
<translation>Авто старт</translation>
</message>
<message>
<location filename="../dialogsettings.ui" line="231"/>
<source>Save</source>
<translation>Сохранить</translation>
</message>
<message>
<location filename="../dialogsettings.ui" line="274"/>
<source>Additional</source>
<translation>Расширенные</translation>
</message>
<message>
<location filename="../dialogsettings.ui" line="301"/>
<source>Version</source>
<translation>Версия</translation>
</message>
<message>
<location filename="../dialogsettings.ui" line="340"/>
<source>Style</source>
<translation>Стиль</translation>
</message>
</context>
<context>
<name>EditorInstructors</name>
@@ -524,71 +574,76 @@ The changes will not be accepted.</source>
<translation>Форма</translation>
</message>
<message>
<location filename="../tasks/fimtaskswidget.ui" line="46"/>
<location filename="../tasks/fimtaskswidget.ui" line="35"/>
<source>Assign</source>
<translation>Назначить</translation>
</message>
<message>
<location filename="../tasks/fimtaskswidget.ui" line="61"/>
<source>Check</source>
<translation>Проверить</translation>
</message>
<message>
<location filename="../tasks/fimtaskswidget.ui" line="72"/>
<location filename="../tasks/fimtaskswidget.ui" line="87"/>
<source>Delete</source>
<translation>Удалить</translation>
</message>
<message>
<location filename="../tasks/fimtaskswidget.cpp" line="258"/>
<location filename="../tasks/fimtaskswidget.cpp" line="283"/>
<source>completed</source>
<translation>выполнена</translation>
</message>
<message>
<location filename="../tasks/fimtaskswidget.cpp" line="263"/>
<location filename="../tasks/fimtaskswidget.cpp" line="288"/>
<source>failed</source>
<translation>неверно</translation>
</message>
<message>
<location filename="../tasks/fimtaskswidget.cpp" line="268"/>
<location filename="../tasks/fimtaskswidget.cpp" line="293"/>
<source>checkup</source>
<translation>на проверке</translation>
</message>
<message>
<location filename="../tasks/fimtaskswidget.cpp" line="273"/>
<location filename="../tasks/fimtaskswidget.cpp" line="298"/>
<source>new</source>
<translation>новая</translation>
</message>
<message>
<location filename="../tasks/fimtaskswidget.cpp" line="361"/>
<location filename="../tasks/fimtaskswidget.cpp" line="386"/>
<source>Task FIM</source>
<translation>Задача FIM</translation>
</message>
<message>
<location filename="../tasks/fimtaskswidget.cpp" line="361"/>
<location filename="../tasks/fimtaskswidget.cpp" line="363"/>
<location filename="../tasks/fimtaskswidget.cpp" line="386"/>
<location filename="../tasks/fimtaskswidget.cpp" line="388"/>
<source>ID</source>
<translation>ID</translation>
</message>
<message>
<location filename="../tasks/fimtaskswidget.cpp" line="361"/>
<location filename="../tasks/fimtaskswidget.cpp" line="363"/>
<location filename="../tasks/fimtaskswidget.cpp" line="386"/>
<location filename="../tasks/fimtaskswidget.cpp" line="388"/>
<source>Status</source>
<translation>Статус</translation>
</message>
<message>
<location filename="../tasks/fimtaskswidget.cpp" line="363"/>
<location filename="../tasks/fimtaskswidget.cpp" line="388"/>
<source>Title</source>
<translation>Заголовок</translation>
</message>
<message>
<location filename="../tasks/fimtaskswidget.cpp" line="504"/>
<location filename="../tasks/fimtaskswidget.cpp" line="529"/>
<source>Attention!</source>
<translation>Внимание!</translation>
</message>
<message>
<location filename="../tasks/fimtaskswidget.cpp" line="504"/>
<location filename="../tasks/fimtaskswidget.cpp" line="529"/>
<source>The deletion will be irrevocable.
Delete it anyway?</source>
<translation>Удаление будет безвозвратным.
Всё равно удалить?</translation>
</message>
<message>
<location filename="../tasks/fimtaskswidget.cpp" line="533"/>
<location filename="../tasks/fimtaskswidget.cpp" line="558"/>
<source>Check Task</source>
<translation>Проверка задачи</translation>
</message>
@@ -601,113 +656,116 @@ Delete it anyway?</source>
<translation>Форма</translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.ui" line="34"/>
<source>Database LMS</source>
<translation>База данных СУО</translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.ui" line="62"/>
<location filename="../instructorsandtraineeswidget.ui" line="43"/>
<source>Connection to Server</source>
<translation>Подключение к серверу</translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.ui" line="170"/>
<location filename="../instructorsandtraineeswidget.ui" line="120"/>
<source>Server: </source>
<translation>Сервер: </translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.ui" line="165"/>
<source>Logged in Instructor: </source>
<translation>Вошедший в систему инструктор: </translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.ui" line="215"/>
<location filename="../instructorsandtraineeswidget.ui" line="210"/>
<source>ChangeVersion</source>
<translation>Изменение версии</translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.ui" line="228"/>
<source>Update StyleSheet</source>
<translation>Обновить стиль</translation>
<location filename="../instructorsandtraineeswidget.ui" line="223"/>
<source>Editor Trainees</source>
<translation>Редактор Обучаемых</translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.ui" line="241"/>
<location filename="../instructorsandtraineeswidget.ui" line="249"/>
<source>Editor Instructors</source>
<translation>Редактор Инструкторов</translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.ui" line="275"/>
<source>Settings</source>
<translation>Настройки</translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.ui" line="268"/>
<location filename="../instructorsandtraineeswidget.ui" line="320"/>
<source>Tasks</source>
<translation>Задачи</translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.ui" line="280"/>
<location filename="../instructorsandtraineeswidget.ui" line="332"/>
<source>AMM</source>
<translation></translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.ui" line="290"/>
<location filename="../instructorsandtraineeswidget.ui" line="342"/>
<source>FIM</source>
<translation></translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.ui" line="305"/>
<source>Assign task</source>
<translation>Назначить задачу</translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.ui" line="116"/>
<location filename="../instructorsandtraineeswidget.cpp" line="141"/>
<location filename="../instructorsandtraineeswidget.cpp" line="239"/>
<location filename="../instructorsandtraineeswidget.cpp" line="264"/>
<location filename="../instructorsandtraineeswidget.ui" line="72"/>
<location filename="../instructorsandtraineeswidget.cpp" line="139"/>
<location filename="../instructorsandtraineeswidget.cpp" line="252"/>
<location filename="../instructorsandtraineeswidget.cpp" line="280"/>
<source>Authorization Instructor</source>
<translation>Авторизация инструктора</translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.ui" line="189"/>
<location filename="../instructorsandtraineeswidget.cpp" line="406"/>
<location filename="../instructorsandtraineeswidget.ui" line="127"/>
<location filename="../instructorsandtraineeswidget.ui" line="184"/>
<location filename="../instructorsandtraineeswidget.cpp" line="284"/>
<location filename="../instructorsandtraineeswidget.cpp" line="404"/>
<location filename="../instructorsandtraineeswidget.cpp" line="420"/>
<source>none</source>
<translation>нет</translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.cpp" line="139"/>
<location filename="../instructorsandtraineeswidget.cpp" line="207"/>
<location filename="../instructorsandtraineeswidget.cpp" line="137"/>
<location filename="../instructorsandtraineeswidget.cpp" line="217"/>
<source>Deauthorization Instructor</source>
<translation>Деавторизация инструктора</translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.cpp" line="169"/>
<location filename="../instructorsandtraineeswidget.cpp" line="168"/>
<source>Attention!</source>
<translation>Внимание!</translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.cpp" line="169"/>
<location filename="../instructorsandtraineeswidget.cpp" line="168"/>
<source>The file could not be opened </source>
<translation>Файл не может быть открыт </translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.cpp" line="247"/>
<location filename="../instructorsandtraineeswidget.cpp" line="260"/>
<source>Instructor deauthorization</source>
<translation>Деавторизация инструктора</translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.cpp" line="247"/>
<location filename="../instructorsandtraineeswidget.cpp" line="260"/>
<source>Error!</source>
<translation>Ошибка!</translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.cpp" line="281"/>
<location filename="../instructorsandtraineeswidget.cpp" line="300"/>
<source>Warning!</source>
<translation>Внимание!</translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.cpp" line="281"/>
<location filename="../instructorsandtraineeswidget.cpp" line="300"/>
<source>The server is disabled</source>
<translation>Сервер отключен</translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.cpp" line="220"/>
<location filename="../instructorsandtraineeswidget.cpp" line="308"/>
<location filename="../instructorsandtraineeswidget.cpp" line="230"/>
<location filename="../instructorsandtraineeswidget.cpp" line="307"/>
<source>Instructor authorization</source>
<translation>Авторизация инструктора</translation>
</message>
<message>
<location filename="../instructorsandtraineeswidget.cpp" line="220"/>
<location filename="../instructorsandtraineeswidget.cpp" line="230"/>
<source>Invalid login or password!</source>
<translation>Неправильный логин или пароль!</translation>
</message>
@@ -1067,7 +1125,7 @@ Delete it anyway?</source>
<translation>Редактор инструкторов</translation>
</message>
<message>
<location filename="../instructors/viewerinstructors.cpp" line="60"/>
<location filename="../instructors/viewerinstructors.cpp" line="62"/>
<source>Editor of instructors</source>
<translation>Редактор инструкторов</translation>
</message>
@@ -1086,7 +1144,7 @@ Delete it anyway?</source>
<translation>Редактор обучаемых</translation>
</message>
<message>
<location filename="../trainees/viewertrainees.cpp" line="114"/>
<location filename="../trainees/viewertrainees.cpp" line="116"/>
<source>Editor of trainees</source>
<translation>Редактор обучаемых</translation>
</message>