From 6af6ca1ab3c1b60ec8d71109e128e1481366b7f3 Mon Sep 17 00:00:00 2001 From: krivoshein Date: Tue, 14 Oct 2025 11:52:03 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B5=20=D1=81=D0=BB=D0=B5=D1=82=D0=B0?= =?UTF-8?q?=D0=B5=D1=82=20=D0=B2=D1=8B=D0=B1=D1=80=D0=B0=D0=BD=D0=BD=D0=B0?= =?UTF-8?q?=D1=8F=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B8=20=D0=B4=D0=B5=D1=80=D0=B5=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tasks/ammtaskswidget.cpp | 36 ++++++++++++++++--- InstructorsAndTrainees/tasks/ammtaskswidget.h | 6 +++- .../tasks/fimtaskswidget.cpp | 34 ++++++++++++++---- InstructorsAndTrainees/tasks/fimtaskswidget.h | 6 +++- 4 files changed, 69 insertions(+), 13 deletions(-) diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp index c74e3d7..75013a4 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp @@ -21,7 +21,8 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre taskTreePreparation(nullptr), waitAnimationWidget(nullptr), dlgCheckerTask(nullptr), - flOnlyActive(false) + flOnlyActive(false), + lastCurrentID(0) { ui->setupUi(this); @@ -30,7 +31,8 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre treeWidget = new QTreeWidget(); ui->horizontalLayout_Tree->addWidget(treeWidget); - connect(treeWidget, &QTreeWidget::currentItemChanged, this, &AMMtasksWidget::on_treeWidgetCurrentItemChanged); + //connect(treeWidget, &QTreeWidget::currentItemChanged, this, &AMMtasksWidget::on_treeWidgetItemClicked); + connect(treeWidget, &QTreeWidget::itemClicked, this, &AMMtasksWidget::on_treeWidgetItemClicked); preparationTreeWidget(); @@ -144,9 +146,9 @@ void AMMtasksWidget::changeEvent(QEvent *event) } } -void AMMtasksWidget::on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous) +void AMMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column) { - if(current == nullptr) + if(item == nullptr) { ui->btnDelete->setEnabled(false); ui->btnCheck->setEnabled(false); @@ -158,12 +160,19 @@ void AMMtasksWidget::on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, Q ui->btnDelete->setEnabled(true); } - int id = current->text(ColumnsTreeAMM::clmnAMM_ID).toInt(); + int id = item->text(ColumnsTreeAMM::clmnAMM_ID).toInt(); + + TaskAmmFim task = taskTreePreparation->getTaskAMMbyID(id); if(taskTreePreparation->getTypeModuleAMMbyID(id) == ModuleType::TYPE_PM) ui->btnAssignTask->setEnabled(false); else + { ui->btnAssignTask->setEnabled(true); + } + + if(task.getID()) + lastCurrentID = id; } void AMMtasksWidget::slot_NeedUpdateUI() @@ -227,6 +236,9 @@ void AMMtasksWidget::slot_AMMlistItemsReady(QList listItems) if(item != nullptr) treeWidget->setCurrentItem(item); + if(type == TypeListTreeAMMFIM::listForTrainee) + setCurrentTask(lastCurrentID); + waitAnimationWidget->hideWithStop(); ui->btnOnlyActive->setEnabled(true); @@ -322,6 +334,20 @@ void AMMtasksWidget::assignTaskAMMtoTrainee() } } +void AMMtasksWidget::setCurrentTask(int id) +{ + for(int i = 0; i < treeWidget->topLevelItemCount(); i++) + { + QTreeWidgetItem * item = treeWidget->topLevelItem(i); + if(item != nullptr) + if(item->text(ColumnsTreeAMM::clmnAMM_ID).toInt() == id) + { + treeWidget->setCurrentItem(item); + return; + } + } +} + void AMMtasksWidget::on_btnDelete_clicked() { QTreeWidgetItem *treeItemCurrent = treeWidget->currentItem(); diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.h b/InstructorsAndTrainees/tasks/ammtaskswidget.h index 8cc285f..07ac5fe 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.h +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.h @@ -32,7 +32,7 @@ protected: void changeEvent(QEvent * event) override; private Q_SLOTS: - void on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); + void on_treeWidgetItemClicked(QTreeWidgetItem *item, int column); void on_btnDelete_clicked(); void on_btnCheck_clicked(); void on_btnAssignTask_clicked(); @@ -57,6 +57,8 @@ private: void loadTasksAMM(bool flRequestFirst = true); void assignTaskAMMtoTrainee(); + void setCurrentTask(int id); + Q_SIGNALS: void signal_prepareAMMListItems(QByteArray array, bool flOnlyActive, bool flRequestFirst); void signal_prepareAMMListItemsForTrainee(QList listTask); @@ -86,6 +88,8 @@ private: DialogChekerTask* dlgCheckerTask; bool flOnlyActive; //AMM + + int lastCurrentID; }; #endif // AMMTASKSWIDGET_H diff --git a/InstructorsAndTrainees/tasks/fimtaskswidget.cpp b/InstructorsAndTrainees/tasks/fimtaskswidget.cpp index 6b8b16d..e9a7e57 100644 --- a/InstructorsAndTrainees/tasks/fimtaskswidget.cpp +++ b/InstructorsAndTrainees/tasks/fimtaskswidget.cpp @@ -22,7 +22,8 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre taskTreePreparation(nullptr), waitAnimationWidget(nullptr), dlgCheckerTask(nullptr), - userName("") + userName(""), + lastCurrentID(0) { ui->setupUi(this); @@ -31,7 +32,8 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre treeWidget = new QTreeWidget(); ui->horizontalLayout_Tree->addWidget(treeWidget); - connect(treeWidget, &QTreeWidget::currentItemChanged, this, &FIMtasksWidget::on_treeWidgetCurrentItemChanged); + //connect(treeWidget, &QTreeWidget::currentItemChanged, this, &FIMtasksWidget::on_treeWidgetCurrentItemChanged); + connect(treeWidget, &QTreeWidget::itemClicked, this, &FIMtasksWidget::on_treeWidgetItemClicked); preparationTreeWidget(); @@ -153,9 +155,9 @@ void FIMtasksWidget::changeEvent(QEvent *event) } } -void FIMtasksWidget::on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous) +void FIMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column) { - if(current == nullptr) + if(item == nullptr) { ui->btnDelete->setEnabled(false); ui->btnCheck->setEnabled(false); @@ -164,10 +166,10 @@ void FIMtasksWidget::on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, Q QString code = ""; - QTreeWidgetItem *treeItemParent = current->parent(); + QTreeWidgetItem *treeItemParent = item->parent(); if(treeItemParent == nullptr) {//Выбрана задача - int id = current->text(ColumnsTreeFIM::clmnFIM_ID).toInt(); + int id = item->text(ColumnsTreeFIM::clmnFIM_ID).toInt(); TaskAmmFim task = taskTreePreparation->getTaskFIMbyID(id); @@ -178,6 +180,10 @@ void FIMtasksWidget::on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, Q ui->btnDelete->setEnabled(false); ui->btnCheck->setEnabled(false); } + else + { + lastCurrentID = task.getID(); + } code = task.title; @@ -266,6 +272,8 @@ void FIMtasksWidget::slot_FIMlistItemsReady(QList listItems) treeWidget->expandAll(); } + setCurrentTask(lastCurrentID); + waitAnimationWidget->hideWithStop(); } @@ -444,4 +452,18 @@ void FIMtasksWidget::updateTaskItem(QTreeWidgetItem *itemTask) itemTask->setExpanded(false); } +void FIMtasksWidget::setCurrentTask(int id) +{ + for(int i = 0; i < treeWidget->topLevelItemCount(); i++) + { + QTreeWidgetItem * item = treeWidget->topLevelItem(i); + if(item != nullptr) + if(item->text(ColumnsTreeFIM::clmnFIM_ID).toInt() == id) + { + treeWidget->setCurrentItem(item); + return; + } + } +} + diff --git a/InstructorsAndTrainees/tasks/fimtaskswidget.h b/InstructorsAndTrainees/tasks/fimtaskswidget.h index e0ade85..1df9f8f 100644 --- a/InstructorsAndTrainees/tasks/fimtaskswidget.h +++ b/InstructorsAndTrainees/tasks/fimtaskswidget.h @@ -35,7 +35,7 @@ protected: void changeEvent(QEvent * event) override; private Q_SLOTS: - void on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); + void on_treeWidgetItemClicked(QTreeWidgetItem *item, int column); void on_btnDelete_clicked(); void on_btnCheck_clicked(); void on_btnAssignTask_clicked(); @@ -58,6 +58,8 @@ private: void assignTaskFIMtoTrainee(); void updateTaskItem(QTreeWidgetItem *itemTask); + void setCurrentTask(int id); + Q_SIGNALS: void signal_prepareFIMListItems(QByteArray array); void signal_prepareFIMListItemsForTrainee(QList listTask); @@ -87,6 +89,8 @@ private: DialogChekerTask* dlgCheckerTask; QString userName; //FIM + + int lastCurrentID; }; #endif // FIMTASKSWIDGET_H