diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp index 0f4d0a7..30a33ec 100644 --- a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp +++ b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp @@ -52,6 +52,13 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) : ammTasksWidget = new AMMtasksWidget(connectorToServer, AMMtasksWidget::TypeList::listCommon, this); fimTasksWidget = new FIMtasksWidget(connectorToServer, FIMtasksWidget::TypeList::listCommon, this); + connect(this, &InstructorsAndTraineesWidget::signal_AssignTaskFIMtoTrainee, fimTasksWidget, &FIMtasksWidget::slot_AssignTaskFIMtoTrainee); + connect(this, &InstructorsAndTraineesWidget::signal_AssignTaskAMMtoTrainee, ammTasksWidget, &AMMtasksWidget::slot_AssignTaskAMMtoTrainee); + + connect(fimTasksWidget, &FIMtasksWidget::signal_currentItemChanged, this, &InstructorsAndTraineesWidget::slot_currentItemChanged); + connect(ammTasksWidget, &AMMtasksWidget::signal_currentItemChanged, this, &InstructorsAndTraineesWidget::slot_currentItemChanged); + + connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksFIM, fimTasksWidget, &FIMtasksWidget::slot_NeedUpdateUI); connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksAMM, ammTasksWidget, &AMMtasksWidget::slot_NeedUpdateUI); connect(viewerTrainees, &ViewerTrainees::signal_traineeSelected, fimTasksWidget, &FIMtasksWidget::slot_traineeSelected); @@ -97,6 +104,8 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) : //ui->btnAuthorizationInstructor->setEnabled(false); + ui->btnAssignTask->setEnabled(false); + updateMyStyleSheet(); } @@ -264,6 +273,26 @@ void InstructorsAndTraineesWidget::slot_ConnectedToServer(bool state) } } +void InstructorsAndTraineesWidget::slot_currentItemChanged() +{ + int index = ui->tabWidget->currentIndex(); + + if(index == 0) + { + if(ammTasksWidget->getAccessAssignTask()) + ui->btnAssignTask->setEnabled(true); + else + ui->btnAssignTask->setEnabled(false); + } + else if(index == 1) + { + if(fimTasksWidget->getAccessAssignTask()) + ui->btnAssignTask->setEnabled(true); + else + ui->btnAssignTask->setEnabled(false); + } +} + bool InstructorsAndTraineesWidget::authorizationInstructorDialog(QWidget* parent) { DialogAuthorizationInstructor dlg(parent); @@ -378,3 +407,31 @@ void InstructorsAndTraineesWidget::on_btnSetVersion_clicked() { connectorToServer->showVersionSelect(); } + +void InstructorsAndTraineesWidget::on_btnAssignTask_clicked() +{ + int index = ui->tabWidget->currentIndex(); + + if(index == 0) + Q_EMIT signal_AssignTaskAMMtoTrainee(); + else if(index == 1) + Q_EMIT signal_AssignTaskFIMtoTrainee(); +} + +void InstructorsAndTraineesWidget::on_tabWidget_currentChanged(int index) +{ + if(index == 0) + { + if(ammTasksWidget->getAccessAssignTask()) + ui->btnAssignTask->setEnabled(true); + else + ui->btnAssignTask->setEnabled(false); + } + else if(index == 1) + { + if(fimTasksWidget->getAccessAssignTask()) + ui->btnAssignTask->setEnabled(true); + else + ui->btnAssignTask->setEnabled(false); + } +} diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.h b/InstructorsAndTrainees/instructorsandtraineeswidget.h index 37ea7df..0849baa 100644 --- a/InstructorsAndTrainees/instructorsandtraineeswidget.h +++ b/InstructorsAndTrainees/instructorsandtraineeswidget.h @@ -51,6 +51,7 @@ public Q_SLOTS: void checkDeLoginResult(ServerDeAuthorization * serverDeAuth); void slot_ConnectedToServer(bool state); + void slot_currentItemChanged(); Q_SIGNALS: //сигнал об изменении языка интерфейса @@ -60,6 +61,9 @@ Q_SIGNALS: //сигнал о блокировке авторизации void signal_BlockAutorization(bool block); + void signal_AssignTaskAMMtoTrainee(); + void signal_AssignTaskFIMtoTrainee(); + private Q_SLOTS: void on_btnConnectionToServer_clicked(); void on_btnAuthorizationInstructor_clicked(); @@ -67,6 +71,10 @@ private Q_SLOTS: void on_btnSetVersion_clicked(); + void on_btnAssignTask_clicked(); + + void on_tabWidget_currentChanged(int index); + private: //Авторизация инструктора локальная bool authorizationInstructorDialog(QWidget* parent = nullptr); diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.ui b/InstructorsAndTrainees/instructorsandtraineeswidget.ui index 8c36119..a47deef 100644 --- a/InstructorsAndTrainees/instructorsandtraineeswidget.ui +++ b/InstructorsAndTrainees/instructorsandtraineeswidget.ui @@ -242,32 +242,60 @@ Tasks - - - - 1 - - - - AMM - - - - + + + + + + 1 + + + + AMM + + + + + + + + + + FIM + + + + + + + + + + + + + + + Assign task + + + + :/resources/icons/assignTask.png:/resources/icons/assignTask.png + + + + 32 + 32 + + + + Qt::ToolButtonTextUnderIcon + + - - - - FIM - - - - - - - - + + diff --git a/InstructorsAndTrainees/resources.qrc b/InstructorsAndTrainees/resources.qrc index d15df9e..4417e39 100644 --- a/InstructorsAndTrainees/resources.qrc +++ b/InstructorsAndTrainees/resources.qrc @@ -41,5 +41,6 @@ resources/icons/procedure.png resources/icons/malfunction.png resources/icons/762.gif + resources/icons/assignTask.png diff --git a/InstructorsAndTrainees/resources/icons/assignTask.png b/InstructorsAndTrainees/resources/icons/assignTask.png new file mode 100644 index 0000000..cd87789 Binary files /dev/null and b/InstructorsAndTrainees/resources/icons/assignTask.png differ diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp index adef13b..fb805c5 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp @@ -18,7 +18,8 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty threadPreparation(nullptr), threadAnimation(nullptr), taskTreePreparation(nullptr), - waitAnimationWidget(nullptr) + waitAnimationWidget(nullptr), + accessAssignTask(false) { ui->setupUi(this); @@ -32,6 +33,7 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty preparationTreeWidget(); ui->btnAssignTaskToTrainee->setEnabled(false); + Q_EMIT signal_currentItemChanged(); ui->btnUpdateTasks->setVisible(false); if(type == TypeList::listForTrainee) @@ -118,6 +120,7 @@ void AMMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, type = "PM"; code = PMmodul->pmCode(); ui->btnAssignTaskToTrainee->setEnabled(false); + accessAssignTask = false; } else { @@ -125,13 +128,18 @@ void AMMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, type = "DM"; code = DMmodul->dmCode(); ui->btnAssignTaskToTrainee->setEnabled(true); + accessAssignTask = true; } ui->label->setText(type + " Code"); ui->editCode->setText(code); } else + { ui->btnAssignTaskToTrainee->setEnabled(false); + accessAssignTask = false; + } + Q_EMIT signal_currentItemChanged(); } void AMMtasksWidget::slot_NeedUpdateUI() @@ -232,6 +240,11 @@ void AMMtasksWidget::on_btnUpdateTasks_clicked() } void AMMtasksWidget::on_btnAssignTaskToTrainee_clicked() +{ + slot_AssignTaskAMMtoTrainee(); +} + +void AMMtasksWidget::slot_AssignTaskAMMtoTrainee() { QTreeWidgetItem *current = treeWidget->currentItem(); diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.h b/InstructorsAndTrainees/tasks/ammtaskswidget.h index 6d91e35..6d4c46e 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.h +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.h @@ -35,6 +35,7 @@ public: loginTraineeSelected = ""; idTraineeSelected = 0; } + bool getAccessAssignTask(){return accessAssignTask;} public: void resizeEvent(QResizeEvent *event) override; @@ -43,6 +44,8 @@ private Q_SLOTS: void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); void on_btnUpdateTasks_clicked(); void on_btnAssignTaskToTrainee_clicked(); +public Q_SLOTS: + void slot_AssignTaskAMMtoTrainee(); public Q_SLOTS: //Слот обработки сигнала необходимости обновления интерфейса @@ -52,6 +55,9 @@ public Q_SLOTS: void slot_UpdateTasksAMMforTrainee(int trainee_id); +Q_SIGNALS: + void signal_currentItemChanged(); + private: Module* searchModuleByID(int id); void preparationTreeWidget(); @@ -79,6 +85,7 @@ private: QThread* threadAnimation; TaskTreePreparation* taskTreePreparation; WaitAnimationWidget *waitAnimationWidget; + bool accessAssignTask; }; #endif // AMMTASKSWIDGET_H diff --git a/InstructorsAndTrainees/tasks/fimtaskswidget.cpp b/InstructorsAndTrainees/tasks/fimtaskswidget.cpp index dcbcabd..095d9c3 100644 --- a/InstructorsAndTrainees/tasks/fimtaskswidget.cpp +++ b/InstructorsAndTrainees/tasks/fimtaskswidget.cpp @@ -18,7 +18,8 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty loginTraineeSelected(""), idTraineeSelected(0), threadAnimation(nullptr), - waitAnimationWidget(nullptr) + waitAnimationWidget(nullptr), + accessAssignTask(false) { ui->setupUi(this); @@ -32,6 +33,7 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty preparationTreeWidget(); ui->btnAssignTaskToTrainee->setEnabled(false); + Q_EMIT signal_currentItemChanged(); ui->btnUpdateTasks->setVisible(false); if(type == TypeList::listForTrainee) @@ -102,11 +104,17 @@ void FIMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, code = task->title; ui->btnAssignTaskToTrainee->setEnabled(true); + accessAssignTask = true; } else + { ui->btnAssignTaskToTrainee->setEnabled(false); + accessAssignTask = false; + } ui->editCode->setText(code); + + Q_EMIT signal_currentItemChanged(); } void FIMtasksWidget::loadFIMtasksFromXML(QByteArray array) @@ -362,6 +370,11 @@ void FIMtasksWidget::on_btnUpdateTasks_clicked() } void FIMtasksWidget::on_btnAssignTaskToTrainee_clicked() +{ + slot_AssignTaskFIMtoTrainee(); +} + +void FIMtasksWidget::slot_AssignTaskFIMtoTrainee() { QTreeWidgetItem *current = treeWidget->currentItem(); diff --git a/InstructorsAndTrainees/tasks/fimtaskswidget.h b/InstructorsAndTrainees/tasks/fimtaskswidget.h index d396b5b..663ea67 100644 --- a/InstructorsAndTrainees/tasks/fimtaskswidget.h +++ b/InstructorsAndTrainees/tasks/fimtaskswidget.h @@ -39,6 +39,7 @@ public: loginTraineeSelected = ""; idTraineeSelected = 0; } + bool getAccessAssignTask(){return accessAssignTask;} public: void resizeEvent(QResizeEvent *event) override; @@ -46,8 +47,9 @@ public: private Q_SLOTS: void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); void on_btnUpdateTasks_clicked(); - void on_btnAssignTaskToTrainee_clicked(); +public Q_SLOTS: + void slot_AssignTaskFIMtoTrainee(); public Q_SLOTS: //Слот обработки сигнала необходимости обновления интерфейса @@ -57,6 +59,10 @@ public Q_SLOTS: void slot_UpdateTasksFIMforTrainee(int trainee_id); +Q_SIGNALS: + void signal_currentItemChanged(); + + private: TaskAmmFim* getTaskByID(int id); void loadFIMtasksFromXML(QByteArray array); @@ -86,6 +92,8 @@ private: QThread* threadAnimation; WaitAnimationWidget *waitAnimationWidget; + + bool accessAssignTask; }; #endif // FIMTASKSWIDGET_H