Не слетает выбранная задача при обновлении дерева

This commit is contained in:
2025-10-14 11:52:03 +03:00
parent 5d5267f859
commit 6af6ca1ab3
4 changed files with 69 additions and 13 deletions

View File

@@ -21,7 +21,8 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre
taskTreePreparation(nullptr), taskTreePreparation(nullptr),
waitAnimationWidget(nullptr), waitAnimationWidget(nullptr),
dlgCheckerTask(nullptr), dlgCheckerTask(nullptr),
flOnlyActive(false) flOnlyActive(false),
lastCurrentID(0)
{ {
ui->setupUi(this); ui->setupUi(this);
@@ -30,7 +31,8 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre
treeWidget = new QTreeWidget(); treeWidget = new QTreeWidget();
ui->horizontalLayout_Tree->addWidget(treeWidget); 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(); 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->btnDelete->setEnabled(false);
ui->btnCheck->setEnabled(false); ui->btnCheck->setEnabled(false);
@@ -158,12 +160,19 @@ void AMMtasksWidget::on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, Q
ui->btnDelete->setEnabled(true); 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) if(taskTreePreparation->getTypeModuleAMMbyID(id) == ModuleType::TYPE_PM)
ui->btnAssignTask->setEnabled(false); ui->btnAssignTask->setEnabled(false);
else else
{
ui->btnAssignTask->setEnabled(true); ui->btnAssignTask->setEnabled(true);
}
if(task.getID())
lastCurrentID = id;
} }
void AMMtasksWidget::slot_NeedUpdateUI() void AMMtasksWidget::slot_NeedUpdateUI()
@@ -227,6 +236,9 @@ void AMMtasksWidget::slot_AMMlistItemsReady(QList<QTreeWidgetItem *> listItems)
if(item != nullptr) if(item != nullptr)
treeWidget->setCurrentItem(item); treeWidget->setCurrentItem(item);
if(type == TypeListTreeAMMFIM::listForTrainee)
setCurrentTask(lastCurrentID);
waitAnimationWidget->hideWithStop(); waitAnimationWidget->hideWithStop();
ui->btnOnlyActive->setEnabled(true); 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() void AMMtasksWidget::on_btnDelete_clicked()
{ {
QTreeWidgetItem *treeItemCurrent = treeWidget->currentItem(); QTreeWidgetItem *treeItemCurrent = treeWidget->currentItem();

View File

@@ -32,7 +32,7 @@ protected:
void changeEvent(QEvent * event) override; void changeEvent(QEvent * event) override;
private Q_SLOTS: private Q_SLOTS:
void on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); void on_treeWidgetItemClicked(QTreeWidgetItem *item, int column);
void on_btnDelete_clicked(); void on_btnDelete_clicked();
void on_btnCheck_clicked(); void on_btnCheck_clicked();
void on_btnAssignTask_clicked(); void on_btnAssignTask_clicked();
@@ -57,6 +57,8 @@ private:
void loadTasksAMM(bool flRequestFirst = true); void loadTasksAMM(bool flRequestFirst = true);
void assignTaskAMMtoTrainee(); void assignTaskAMMtoTrainee();
void setCurrentTask(int id);
Q_SIGNALS: Q_SIGNALS:
void signal_prepareAMMListItems(QByteArray array, bool flOnlyActive, bool flRequestFirst); void signal_prepareAMMListItems(QByteArray array, bool flOnlyActive, bool flRequestFirst);
void signal_prepareAMMListItemsForTrainee(QList<TaskAmmFim> listTask); void signal_prepareAMMListItemsForTrainee(QList<TaskAmmFim> listTask);
@@ -86,6 +88,8 @@ private:
DialogChekerTask* dlgCheckerTask; DialogChekerTask* dlgCheckerTask;
bool flOnlyActive; //AMM bool flOnlyActive; //AMM
int lastCurrentID;
}; };
#endif // AMMTASKSWIDGET_H #endif // AMMTASKSWIDGET_H

View File

@@ -22,7 +22,8 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre
taskTreePreparation(nullptr), taskTreePreparation(nullptr),
waitAnimationWidget(nullptr), waitAnimationWidget(nullptr),
dlgCheckerTask(nullptr), dlgCheckerTask(nullptr),
userName("") userName(""),
lastCurrentID(0)
{ {
ui->setupUi(this); ui->setupUi(this);
@@ -31,7 +32,8 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre
treeWidget = new QTreeWidget(); treeWidget = new QTreeWidget();
ui->horizontalLayout_Tree->addWidget(treeWidget); 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(); 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->btnDelete->setEnabled(false);
ui->btnCheck->setEnabled(false); ui->btnCheck->setEnabled(false);
@@ -164,10 +166,10 @@ void FIMtasksWidget::on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, Q
QString code = ""; QString code = "";
QTreeWidgetItem *treeItemParent = current->parent(); QTreeWidgetItem *treeItemParent = item->parent();
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбрана задача {//Выбрана задача
int id = current->text(ColumnsTreeFIM::clmnFIM_ID).toInt(); int id = item->text(ColumnsTreeFIM::clmnFIM_ID).toInt();
TaskAmmFim task = taskTreePreparation->getTaskFIMbyID(id); TaskAmmFim task = taskTreePreparation->getTaskFIMbyID(id);
@@ -178,6 +180,10 @@ void FIMtasksWidget::on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, Q
ui->btnDelete->setEnabled(false); ui->btnDelete->setEnabled(false);
ui->btnCheck->setEnabled(false); ui->btnCheck->setEnabled(false);
} }
else
{
lastCurrentID = task.getID();
}
code = task.title; code = task.title;
@@ -266,6 +272,8 @@ void FIMtasksWidget::slot_FIMlistItemsReady(QList<QTreeWidgetItem *> listItems)
treeWidget->expandAll(); treeWidget->expandAll();
} }
setCurrentTask(lastCurrentID);
waitAnimationWidget->hideWithStop(); waitAnimationWidget->hideWithStop();
} }
@@ -444,4 +452,18 @@ void FIMtasksWidget::updateTaskItem(QTreeWidgetItem *itemTask)
itemTask->setExpanded(false); 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;
}
}
}

View File

@@ -35,7 +35,7 @@ protected:
void changeEvent(QEvent * event) override; void changeEvent(QEvent * event) override;
private Q_SLOTS: private Q_SLOTS:
void on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); void on_treeWidgetItemClicked(QTreeWidgetItem *item, int column);
void on_btnDelete_clicked(); void on_btnDelete_clicked();
void on_btnCheck_clicked(); void on_btnCheck_clicked();
void on_btnAssignTask_clicked(); void on_btnAssignTask_clicked();
@@ -58,6 +58,8 @@ private:
void assignTaskFIMtoTrainee(); void assignTaskFIMtoTrainee();
void updateTaskItem(QTreeWidgetItem *itemTask); void updateTaskItem(QTreeWidgetItem *itemTask);
void setCurrentTask(int id);
Q_SIGNALS: Q_SIGNALS:
void signal_prepareFIMListItems(QByteArray array); void signal_prepareFIMListItems(QByteArray array);
void signal_prepareFIMListItemsForTrainee(QList<TaskAmmFim> listTask); void signal_prepareFIMListItemsForTrainee(QList<TaskAmmFim> listTask);
@@ -87,6 +89,8 @@ private:
DialogChekerTask* dlgCheckerTask; DialogChekerTask* dlgCheckerTask;
QString userName; //FIM QString userName; //FIM
int lastCurrentID;
}; };
#endif // FIMTASKSWIDGET_H #endif // FIMTASKSWIDGET_H