diff --git a/DOCS/Pasted image 20251107173042.png b/DOCS/Pasted image 20251107173042.png
new file mode 100644
index 0000000..e86d658
Binary files /dev/null and b/DOCS/Pasted image 20251107173042.png differ
diff --git a/DOCS/Андрей/Board.md b/DOCS/Андрей/Board.md
index 88b37e3..e90059f 100644
--- a/DOCS/Андрей/Board.md
+++ b/DOCS/Андрей/Board.md
@@ -11,6 +11,7 @@ kanban-plugin: board
## Completed
+- [ ] Создание БД из кода (если нет или слетела)
- [ ] Сервер при сворачивании превращается в трей
- [ ] Пароли хранить и пересылать в виде Хеша
- [ ] Смена пароля админом (или инструктором только для обучаемых). Старый никому не виден (парольная политика)
@@ -49,12 +50,18 @@ kanban-plugin: board
## Server
+- [ ] Кнопки Восстановить и Проверить&Восстановить расширить
+- [ ] Логин суперпользователя PostgreSQL предлагать по умолчанию postgres
- [ ] Отходить от идентификации по Логину в пользу ID юзера везде, где это возможно.
(Так как сейчас может вызвать проблемы при смене логина юзера!!!)
+- [ ] Зарефакторить databaselms_PostgreSQL.cpp
+ (возможно, нужно использовать транзакции при восстановлении БД!)
## GUI Messenger
+- [ ] При смене УЗ в ГУИ остается история переписки в мессенджере. При этом Имя инструктора в диалоге подменяется. (Путается только в ГУИ!)
+ [Возможно, поможет переинициализация мессенджера при переавторизации инструктора?]
- [ ] Не влазиют слишком большие сообщения
- [ ] Не видно новых пришедших сообщений, если выбран другой Юзер
@@ -62,11 +69,14 @@ kanban-plugin: board
## GUI общие
- [ ] Текстовый поиск в задачах
+- [ ] Сделать кнопку перезапроса общих списков АММ и FIM
-## Замечания Кирилл
+## Сервер+GUI
-- [ ] Создание БД из кода (если нет или слетела)
+- [ ] Расширить диалог Авторизации
+- [ ] Реализовать механизм отображения и выбора подпроцедур для АММ.
+- [ ] Переобновление docs.xml в пределах версии (если инструктор изменяет процедуры)
diff --git a/DOCS/Андрей/Без названия.canvas b/DOCS/Андрей/Без названия.canvas
new file mode 100644
index 0000000..f8c9a9f
--- /dev/null
+++ b/DOCS/Андрей/Без названия.canvas
@@ -0,0 +1,6 @@
+{
+ "nodes":[
+ {"id":"e78057b035cd1b17","x":-640,"y":-460,"width":1351,"height":760,"type":"file","file":"Pasted image 20251107173042.png"}
+ ],
+ "edges":[]
+}
\ No newline at end of file
diff --git a/DataBaseLMS/translations/DataBaseLMS_ru_RU.qm b/DataBaseLMS/translations/DataBaseLMS_ru_RU.qm
deleted file mode 100644
index 4814024..0000000
Binary files a/DataBaseLMS/translations/DataBaseLMS_ru_RU.qm and /dev/null differ
diff --git a/InstructorsAndTrainees/CMakeLists.txt b/InstructorsAndTrainees/CMakeLists.txt
index 64f40fb..35b8155 100644
--- a/InstructorsAndTrainees/CMakeLists.txt
+++ b/InstructorsAndTrainees/CMakeLists.txt
@@ -114,6 +114,13 @@ add_library(InstructorsAndTrainees SHARED
tasks/dialogchekertask.cpp
tasks/dialogchekertask.h
+ tasks/dialogtaskscommon.cpp
+ tasks/dialogtaskscommon.h
+
+ tasks/viewertaskscommon.cpp
+ tasks/viewertaskscommon.h
+ tasks/viewertaskscommon.ui
+
widgets/newversionwidget.cpp
widgets/newversionwidget.h
widgets/newversionwidget.ui
diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp
index a4cd3d7..def6023 100644
--- a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp
+++ b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp
@@ -19,6 +19,7 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
viewerInstructors(nullptr),
messangerWidget(nullptr),
messangerController(nullptr),
+ dlgTasksCommon(nullptr),
adminMode(false),
loginInstructorLoggedInLocal(QStringLiteral("")),
nameInstructorLoggedInLocal(QStringLiteral("")),
@@ -88,6 +89,9 @@ InstructorsAndTraineesWidget::~InstructorsAndTraineesWidget()
if(authorizationIsCompleted())
deAuthorizationInstructor(loginInstructorLoggedInLocal);
+ if(dlgTasksCommon)
+ dlgTasksCommon->close();
+
delete messangerController;
delete viewerInstructors;
delete viewerTrainees;
@@ -493,3 +497,24 @@ void InstructorsAndTraineesWidget::on_btnPersonalCard_clicked()
{
this->viewerTrainees->on_btnPersonalCard_clicked();
}
+
+void InstructorsAndTraineesWidget::on_btnTasksCommon_clicked()
+{
+ AMMtasksWidget* ammTasksWidgetCommon = viewerTrainees->getAmmTasksWidgetCommon();
+ FIMtasksWidget* fimTasksWidgetCommon = viewerTrainees->getFimTasksWidgetCommon();
+
+ if(!ammTasksWidgetCommon || !fimTasksWidgetCommon)
+ return;
+
+ dlgTasksCommon = new DialogTasksCommon(connectorToServer, ammTasksWidgetCommon, fimTasksWidgetCommon, this);
+ dlgTasksCommon->exec();
+
+ ammTasksWidgetCommon->setParent(this);
+ fimTasksWidgetCommon->setParent(this);
+
+ if(dlgTasksCommon)
+ {
+ delete dlgTasksCommon;
+ dlgTasksCommon = nullptr;
+ }
+}
diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.h b/InstructorsAndTrainees/instructorsandtraineeswidget.h
index 54ebcee..8890929 100644
--- a/InstructorsAndTrainees/instructorsandtraineeswidget.h
+++ b/InstructorsAndTrainees/instructorsandtraineeswidget.h
@@ -10,6 +10,7 @@
#include "messangercontroller.h"
#include "connectortoserver.h"
#include "metatypes.h"
+#include "dialogtaskscommon.h"
namespace Ui {
@@ -69,6 +70,8 @@ private Q_SLOTS:
void on_btnPersonalCard_clicked();
+ void on_btnTasksCommon_clicked();
+
private:
//Авторизация инструктора локальная (на ГУИ)
bool authorizationInstructorDialog(QWidget* parent = nullptr);
@@ -87,6 +90,8 @@ private:
MessangerWidget* messangerWidget;
MessangerController* messangerController;
+ DialogTasksCommon* dlgTasksCommon;
+
bool adminMode;
QString loginInstructorLoggedInLocal;
QString nameInstructorLoggedInLocal;
diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.ui b/InstructorsAndTrainees/instructorsandtraineeswidget.ui
index 4621831..60c6bbf 100644
--- a/InstructorsAndTrainees/instructorsandtraineeswidget.ui
+++ b/InstructorsAndTrainees/instructorsandtraineeswidget.ui
@@ -151,6 +151,32 @@
+ -
+
+
+
+ 130
+ 58
+
+
+
+ Tasks
+
+
+
+ :/resources/icons/procedure.png:/resources/icons/procedure.png
+
+
+
+ 32
+ 32
+
+
+
+ Qt::ToolButtonTextUnderIcon
+
+
+
-
diff --git a/InstructorsAndTrainees/tasks/dialogtaskscommon.cpp b/InstructorsAndTrainees/tasks/dialogtaskscommon.cpp
new file mode 100644
index 0000000..3ece31f
--- /dev/null
+++ b/InstructorsAndTrainees/tasks/dialogtaskscommon.cpp
@@ -0,0 +1,31 @@
+#include
+#include "dialogtaskscommon.h"
+
+DialogTasksCommon::DialogTasksCommon(ConnectorToServer* connectorToServer, AMMtasksWidget* ammTasksWidget_common, FIMtasksWidget* fimTasksWidget_common,
+ QWidget *parent) :
+ QDialog(parent,
+ Qt::WindowSystemMenuHint
+ | Qt::WindowMaximizeButtonHint
+ | Qt::WindowMinimizeButtonHint
+ | Qt::WindowCloseButtonHint),
+ viewerTasks(nullptr)
+{
+ viewerTasks = new ViewerTasksCommon(connectorToServer, ammTasksWidget_common, fimTasksWidget_common, this);
+
+ QHBoxLayout *layout = new QHBoxLayout(this);
+ layout->addWidget(viewerTasks);
+ this->setWindowTitle(tr("Viewer tasks common"));
+ this->setMinimumSize(1400, 700);
+ this->setWindowState(Qt::WindowMaximized);
+ this->setModal(true);
+}
+
+DialogTasksCommon::~DialogTasksCommon()
+{
+ delete viewerTasks;
+}
+
+void DialogTasksCommon::closeEvent(QCloseEvent *event)
+{
+ viewerTasks->close();
+}
diff --git a/InstructorsAndTrainees/tasks/dialogtaskscommon.h b/InstructorsAndTrainees/tasks/dialogtaskscommon.h
new file mode 100644
index 0000000..1c80746
--- /dev/null
+++ b/InstructorsAndTrainees/tasks/dialogtaskscommon.h
@@ -0,0 +1,24 @@
+#ifndef DIALOGTASKSCOMMON_H
+#define DIALOGTASKSCOMMON_H
+
+#include
+#include
+
+#include "viewertaskscommon.h"
+
+
+class DialogTasksCommon : public QDialog
+{
+ Q_OBJECT
+public:
+ DialogTasksCommon(ConnectorToServer* connectorToServer, AMMtasksWidget* ammTasksWidget_common, FIMtasksWidget* fimTasksWidget_common,
+ QWidget *parent = nullptr);
+ ~DialogTasksCommon();
+
+ void closeEvent(QCloseEvent *event) override;
+
+private:
+ ViewerTasksCommon* viewerTasks;
+};
+
+#endif // DIALOGTASKSCOMMON_H
diff --git a/InstructorsAndTrainees/tasks/viewertaskscommon.cpp b/InstructorsAndTrainees/tasks/viewertaskscommon.cpp
new file mode 100644
index 0000000..07e628b
--- /dev/null
+++ b/InstructorsAndTrainees/tasks/viewertaskscommon.cpp
@@ -0,0 +1,25 @@
+#include "viewertaskscommon.h"
+#include "ui_viewertaskscommon.h"
+
+ViewerTasksCommon::ViewerTasksCommon(ConnectorToServer* connectorToServer, AMMtasksWidget* ammTasksWidgetIn, FIMtasksWidget* fimTasksWidgetIn, QWidget *parent) :
+ QWidget(parent),
+ connectorToServer(connectorToServer),
+ ammTasksWidget_common(ammTasksWidgetIn),
+ fimTasksWidget_common(fimTasksWidgetIn),
+ ui(new Ui::ViewerTasksCommon)
+{
+ ui->setupUi(this);
+
+ ui->verticalLayout_AMMcommon->addWidget(ammTasksWidget_common);
+ ui->verticalLayout_FIMcommon->addWidget(fimTasksWidget_common);
+}
+
+ViewerTasksCommon::~ViewerTasksCommon()
+{
+ delete ui;
+}
+
+void ViewerTasksCommon::closeEvent(QCloseEvent *event)
+{
+
+}
diff --git a/InstructorsAndTrainees/tasks/viewertaskscommon.h b/InstructorsAndTrainees/tasks/viewertaskscommon.h
new file mode 100644
index 0000000..81db4b5
--- /dev/null
+++ b/InstructorsAndTrainees/tasks/viewertaskscommon.h
@@ -0,0 +1,33 @@
+#ifndef VIEWERTASKSCOMMON_H
+#define VIEWERTASKSCOMMON_H
+
+#include
+#include"connectortoserver.h"
+#include "ammtaskswidget.h"
+#include "fimtaskswidget.h"
+
+namespace Ui {
+class ViewerTasksCommon;
+}
+
+class ViewerTasksCommon : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit ViewerTasksCommon(ConnectorToServer* connectorToServer, AMMtasksWidget* ammTasksWidget_common, FIMtasksWidget* fimTasksWidget_common, QWidget *parent = nullptr);
+ ~ViewerTasksCommon();
+
+ void closeEvent(QCloseEvent *event) override;
+
+private:
+ ConnectorToServer* connectorToServer;
+
+ AMMtasksWidget* ammTasksWidget_common;
+ FIMtasksWidget* fimTasksWidget_common;
+
+private:
+ Ui::ViewerTasksCommon *ui;
+};
+
+#endif // VIEWERTASKSCOMMON_H
diff --git a/InstructorsAndTrainees/tasks/viewertaskscommon.ui b/InstructorsAndTrainees/tasks/viewertaskscommon.ui
new file mode 100644
index 0000000..a5479ae
--- /dev/null
+++ b/InstructorsAndTrainees/tasks/viewertaskscommon.ui
@@ -0,0 +1,52 @@
+
+
+ ViewerTasksCommon
+
+
+
+ 0
+ 0
+ 400
+ 300
+
+
+
+ Form
+
+
+
-
+
+
-
+
+
+ 1
+
+
+
+ AMM
+
+
+
-
+
+
+
+
+
+
+ FIM
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/InstructorsAndTrainees/trainees/personalcardtrainee.cpp b/InstructorsAndTrainees/trainees/personalcardtrainee.cpp
index c05d929..a2bb7f7 100644
--- a/InstructorsAndTrainees/trainees/personalcardtrainee.cpp
+++ b/InstructorsAndTrainees/trainees/personalcardtrainee.cpp
@@ -44,7 +44,7 @@ PersonalCardTrainee::PersonalCardTrainee(ConnectorToServer* connectorToServer, M
ui->groupBox_Messenger->setMaximumWidth(500);
ui->groupBox_Messenger->setMinimumWidth(500);
- ui->groupBox_Messenger->setMinimumHeight(500);
+ ui->groupBox_Messenger->setMinimumHeight(400);
ammTasksWidget_personal->setMinimumWidth(700);
fimTasksWidget_personal->setMinimumWidth(700);
diff --git a/InstructorsAndTrainees/trainees/personalcardtrainee.ui b/InstructorsAndTrainees/trainees/personalcardtrainee.ui
index 483ce3e..f32e728 100644
--- a/InstructorsAndTrainees/trainees/personalcardtrainee.ui
+++ b/InstructorsAndTrainees/trainees/personalcardtrainee.ui
@@ -72,7 +72,7 @@
- :/resources/icons/circleGray.png
+ :/resources/icons/circleGray.png
true
@@ -211,7 +211,7 @@
-
- 1
+ 0
@@ -297,7 +297,7 @@
-
+
diff --git a/InstructorsAndTrainees/trainees/viewertrainees.h b/InstructorsAndTrainees/trainees/viewertrainees.h
index c5e9609..b5ee2ef 100644
--- a/InstructorsAndTrainees/trainees/viewertrainees.h
+++ b/InstructorsAndTrainees/trainees/viewertrainees.h
@@ -27,6 +27,9 @@ public:
void deactivate();
+ AMMtasksWidget* getAmmTasksWidgetCommon(){return ammTasksWidgetCommon;};
+ FIMtasksWidget* getFimTasksWidgetCommon(){return fimTasksWidgetCommon;};
+
protected:
void changeEvent(QEvent * event) override;