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