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;