Предварительно пофиксил замирание крутилки FIM

This commit is contained in:
2025-06-30 16:41:39 +03:00
parent c254900cb8
commit 53c133d459
6 changed files with 492 additions and 275 deletions

View File

@@ -16,7 +16,6 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
loginTraineeSelected(""),
idTraineeSelected(0),
threadPreparation(nullptr),
threadAnimation(nullptr),
taskTreePreparation(nullptr),
waitAnimationWidget(nullptr),
flOnlyActive(false)
@@ -37,17 +36,14 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
taskTreePreparation->moveToThread(threadPreparation);
threadPreparation->start();
threadPreparation->setPriority(QThread::HighestPriority);
connect(this, &AMMtasksWidget::signal_prepareListItems, taskTreePreparation, &TaskTreePreparation::slot_prepareListItems);
connect(this, &AMMtasksWidget::signal_prepareListItemsForTrainee, taskTreePreparation, &TaskTreePreparation::slot_prepareListItemsForTrainee);
connect(taskTreePreparation, &TaskTreePreparation::signal_listItemsReady, this, &AMMtasksWidget::slot_listItemsReady);
connect(this, &AMMtasksWidget::signal_prepareAMMListItems, taskTreePreparation, &TaskTreePreparation::slot_prepareAMMListItems);
connect(this, &AMMtasksWidget::signal_prepareAMMListItemsForTrainee, taskTreePreparation, &TaskTreePreparation::slot_prepareAMMListItemsForTrainee);
connect(taskTreePreparation, &TaskTreePreparation::signal_listAMMItemsReady, this, &AMMtasksWidget::slot_AMMlistItemsReady);
//threadAnimation = new QThread();
waitAnimationWidget = new WaitAnimationWidget;
QMovie *movie = new QMovie(":/resources/icons/762.gif");
waitAnimationWidget->setParent(this);
waitAnimationWidget->initialize(movie,this);
//waitAnimationWidget->moveToThread(threadAnimation);
//threadAnimation->start();
ui->btnDelete->setObjectName("btnDelete");
ui->btnDelete->setEnabled(false);
@@ -84,18 +80,15 @@ AMMtasksWidget::~AMMtasksWidget()
waitAnimationWidget->hideWithStop();
taskTreePreparation->stopParser();
//threadAnimation->quit();
//threadAnimation->wait();
threadPreparation->quit();
threadPreparation->wait();
//delete threadAnimation;
delete threadPreparation;
delete taskTreePreparation;
delete waitAnimationWidget;
delete treeWidget;
delete ui;
}
@@ -103,7 +96,6 @@ void AMMtasksWidget::deactivate()
{
ui->btnAssignTask->setEnabled(false);
ui->btnOnlyActive->setEnabled(false);
//taskTreePreparation->stopParser();
treeWidget->clear();
loginTraineeSelected = "";
idTraineeSelected = 0;
@@ -116,9 +108,9 @@ void AMMtasksWidget::resizeEvent(QResizeEvent *event)
int width = treeWidget->width();
treeWidget->setColumnWidth(ColumnsTree::clmn_ID, 50);
treeWidget->setColumnWidth(ColumnsTree::clmn_code, 250);
treeWidget->setColumnWidth(ColumnsTree::clmn_status, 110);
treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_ID, 50);
treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_code, 250);
treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_status, 110);
int widthPMorDM;
if(type == TypeList::listCommon)
@@ -126,7 +118,7 @@ void AMMtasksWidget::resizeEvent(QResizeEvent *event)
else
widthPMorDM = width - (410 + 10);
treeWidget->setColumnWidth(ColumnsTree::clmn_PMorDM, widthPMorDM);
treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_PMorDM, widthPMorDM);
}
void AMMtasksWidget::changeEvent(QEvent *event)
@@ -160,7 +152,7 @@ void AMMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current,
ui->btnDelete->setEnabled(true);
}
int id = current->text(ColumnsTree::clmn_ID).toInt();
int id = current->text(ColumnsTreeAMM::clmnAMM_ID).toInt();
Module* module = searchModuleByID(id);
@@ -213,13 +205,13 @@ void AMMtasksWidget::slot_traineeSelected(QString login)
void AMMtasksWidget::slot_UpdateTasksAMMforTrainee(int trainee_id)
{
qDebug() << "slot_UpdateTasksAMMforTrainee" << QThread::currentThreadId();
if(type == TypeList::listForTrainee)
{
if(idTraineeSelected == trainee_id)
{
//waitAnimationWidget->showWithPlay();
QList<TaskAmmFim> listTask = connectorToServer->getListTasksAMMforTrainee(trainee_id);
signal_prepareListItemsForTrainee(listTask, &listAllModules);
signal_prepareAMMListItemsForTrainee(listTask, &listAllModules);
}
}
}
@@ -234,10 +226,10 @@ void AMMtasksWidget::loadTasksAMM(bool flRequestFromDB)
if(flRequestFromDB)
/*QByteArray array*/arrayAMM = connectorToServer->getListTaskAmmArray();
emit signal_prepareListItems(/*array*/arrayAMM, &listAllModules, flOnlyActive);
emit signal_prepareAMMListItems(/*array*/arrayAMM, &listAllModules, flOnlyActive);
}
void AMMtasksWidget::slot_listItemsReady(QList<QTreeWidgetItem *> listItems)
void AMMtasksWidget::slot_AMMlistItemsReady(QList<QTreeWidgetItem *> listItems)
{
//Обновление дерева
treeWidget->clear();
@@ -270,14 +262,14 @@ Module *AMMtasksWidget::searchModuleByID(int id)
void AMMtasksWidget::preparationTreeWidget()
{
treeWidget->setColumnCount(clmn_count);
treeWidget->setColumnCount(clmnAMM_count);
reSetHeadTreeWidget();
if(type == TypeList::listCommon)
{
treeWidget->setColumnHidden(ColumnsTree::clmn_ID, true);
treeWidget->setColumnHidden(ColumnsTree::clmn_status, true);
treeWidget->setColumnHidden(ColumnsTreeAMM::clmnAMM_ID, true);
treeWidget->setColumnHidden(ColumnsTreeAMM::clmnAMM_status, true);
}
}
@@ -306,7 +298,7 @@ void AMMtasksWidget::assignTaskAMMtoTrainee()
if(current == nullptr)
return;
int id = current->text(ColumnsTree::clmn_ID).toInt();
int id = current->text(ColumnsTreeAMM::clmnAMM_ID).toInt();
Module* module = searchModuleByID(id);
@@ -341,7 +333,7 @@ void AMMtasksWidget::on_btnDelete_clicked()
if(treeItemParent == nullptr)
{//Выбрана задача
int id = treeItemCurrent->text(ColumnsTree::clmn_ID).toInt();
int id = treeItemCurrent->text(ColumnsTreeAMM::clmnAMM_ID).toInt();
if(QMessageBox::warning(this, tr("Attention!"), tr("The deletion will be irrevocable.\nDelete it anyway?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
{
@@ -351,22 +343,6 @@ void AMMtasksWidget::on_btnDelete_clicked()
}
}
void AMMtasksWidget::on_btnOnlyActive_clicked()
{
if(ui->btnOnlyActive->isChecked())
{
flOnlyActive = true;
//slot_listItemsReady(listItemsALL, listItemsACTIVE);
}
else
{
flOnlyActive = false;
//slot_listItemsReady(listItemsALL, listItemsACTIVE);
}
//connectorToServer->sendQueryTasksXML("amm");
loadTasksAMM(false);
}
void AMMtasksWidget::on_btnCheck_clicked()
{
@@ -377,3 +353,16 @@ void AMMtasksWidget::on_btnAssignTask_clicked()
if(QMessageBox::question(this, tr("New task"), tr("Assign this task?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
assignTaskAMMtoTrainee();
}
void AMMtasksWidget::on_btnOnlyActive_clicked()
{
if(ui->btnOnlyActive->isChecked())
{
flOnlyActive = true;
}
else
{
flOnlyActive = false;
}
loadTasksAMM(false);
}