Вынес подготовку дерева FIM в отдельный поток

This commit is contained in:
2025-07-01 10:37:59 +03:00
parent 53c133d459
commit 389a37a2e4
9 changed files with 161 additions and 318 deletions

View File

@@ -63,8 +63,8 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
connect(connectorToServer,&ConnectorToServer::signal_ConnectedToServer,this,&InstructorsAndTraineesWidget::slot_ConnectedToServer); connect(connectorToServer,&ConnectorToServer::signal_ConnectedToServer,this,&InstructorsAndTraineesWidget::slot_ConnectedToServer);
ammTasksWidget = new AMMtasksWidget(connectorToServer, AMMtasksWidget::TypeList::listCommon, this); ammTasksWidget = new AMMtasksWidget(connectorToServer, TypeListTreeAMMFIM::listCommon, this);
fimTasksWidget = new FIMtasksWidget(connectorToServer, FIMtasksWidget::TypeList::listCommon, this); fimTasksWidget = new FIMtasksWidget(connectorToServer, TypeListTreeAMMFIM::listCommon, this);
connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksFIM, fimTasksWidget, &FIMtasksWidget::slot_NeedUpdateUI); connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksFIM, fimTasksWidget, &FIMtasksWidget::slot_NeedUpdateUI);
connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksAMM, ammTasksWidget, &AMMtasksWidget::slot_NeedUpdateUI); connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksAMM, ammTasksWidget, &AMMtasksWidget::slot_NeedUpdateUI);

View File

@@ -7,7 +7,7 @@
#include "ammtaskswidget.h" #include "ammtaskswidget.h"
#include "ui_ammtaskswidget.h" #include "ui_ammtaskswidget.h"
AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeList type, QWidget *parent) : AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTreeAMMFIM type, QWidget *parent) :
QWidget(parent), QWidget(parent),
ui(new Ui::AMMtasksWidget), ui(new Ui::AMMtasksWidget),
connectorToServer(connectorToServer), connectorToServer(connectorToServer),
@@ -32,13 +32,13 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
preparationTreeWidget(); preparationTreeWidget();
threadPreparation = new QThread(); threadPreparation = new QThread();
taskTreePreparation = new TaskTreePreparation(); taskTreePreparation = new TaskAMMFIMTreePreparation(type);
taskTreePreparation->moveToThread(threadPreparation); taskTreePreparation->moveToThread(threadPreparation);
threadPreparation->start(); threadPreparation->start();
threadPreparation->setPriority(QThread::HighestPriority); threadPreparation->setPriority(QThread::HighestPriority);
connect(this, &AMMtasksWidget::signal_prepareAMMListItems, taskTreePreparation, &TaskTreePreparation::slot_prepareAMMListItems); connect(this, &AMMtasksWidget::signal_prepareAMMListItems, taskTreePreparation, &TaskAMMFIMTreePreparation::slot_prepareAMMListItems);
connect(this, &AMMtasksWidget::signal_prepareAMMListItemsForTrainee, taskTreePreparation, &TaskTreePreparation::slot_prepareAMMListItemsForTrainee); connect(this, &AMMtasksWidget::signal_prepareAMMListItemsForTrainee, taskTreePreparation, &TaskAMMFIMTreePreparation::slot_prepareAMMListItemsForTrainee);
connect(taskTreePreparation, &TaskTreePreparation::signal_listAMMItemsReady, this, &AMMtasksWidget::slot_AMMlistItemsReady); connect(taskTreePreparation, &TaskAMMFIMTreePreparation::signal_listAMMItemsReady, this, &AMMtasksWidget::slot_AMMlistItemsReady);
waitAnimationWidget = new WaitAnimationWidget; waitAnimationWidget = new WaitAnimationWidget;
QMovie *movie = new QMovie(":/resources/icons/762.gif"); QMovie *movie = new QMovie(":/resources/icons/762.gif");
@@ -54,7 +54,7 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
ui->btnAssignTask->setObjectName("btnAssignTask"); ui->btnAssignTask->setObjectName("btnAssignTask");
ui->btnAssignTask->setEnabled(false); ui->btnAssignTask->setEnabled(false);
if(type == TypeList::listCommon) if(type == TypeListTreeAMMFIM::listCommon)
{ {
ui->horizontalLayout_3->addWidget(ui->btnAssignTask); ui->horizontalLayout_3->addWidget(ui->btnAssignTask);
ui->horizontalLayout_3->addWidget(ui->btnOnlyActive); ui->horizontalLayout_3->addWidget(ui->btnOnlyActive);
@@ -85,9 +85,9 @@ AMMtasksWidget::~AMMtasksWidget()
delete threadPreparation; delete threadPreparation;
delete taskTreePreparation; delete taskTreePreparation;
delete waitAnimationWidget; delete waitAnimationWidget;
delete treeWidget; delete treeWidget;
delete ui; delete ui;
} }
@@ -113,7 +113,7 @@ void AMMtasksWidget::resizeEvent(QResizeEvent *event)
treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_status, 110); treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_status, 110);
int widthPMorDM; int widthPMorDM;
if(type == TypeList::listCommon) if(type == TypeListTreeAMMFIM::listCommon)
widthPMorDM = width - (250 + 10); widthPMorDM = width - (250 + 10);
else else
widthPMorDM = width - (410 + 10); widthPMorDM = width - (410 + 10);
@@ -130,11 +130,11 @@ void AMMtasksWidget::changeEvent(QEvent *event)
reSetHeadTreeWidget(); reSetHeadTreeWidget();
if(type == TypeList::listCommon) if(type == TypeListTreeAMMFIM::listCommon)
{ {
//slot_NeedUpdateUI(); //slot_NeedUpdateUI();
} }
else if(type == TypeList::listForTrainee) else if(type == TypeListTreeAMMFIM::listForTrainee)
if(idTraineeSelected) if(idTraineeSelected)
slot_UpdateTasksAMMforTrainee(idTraineeSelected); slot_UpdateTasksAMMforTrainee(idTraineeSelected);
} }
@@ -154,7 +154,7 @@ void AMMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current,
int id = current->text(ColumnsTreeAMM::clmnAMM_ID).toInt(); int id = current->text(ColumnsTreeAMM::clmnAMM_ID).toInt();
Module* module = searchModuleByID(id); Module* module = taskTreePreparation->getModuleAMMbyID(id);
if(module) if(module)
{ {
@@ -196,7 +196,7 @@ void AMMtasksWidget::slot_traineeSelected(QString login)
loginTraineeSelected = login; loginTraineeSelected = login;
idTraineeSelected = connectorToServer->getIdTraineeByLogin(loginTraineeSelected); idTraineeSelected = connectorToServer->getIdTraineeByLogin(loginTraineeSelected);
if(type == TypeList::listForTrainee) if(type == TypeListTreeAMMFIM::listForTrainee)
{ {
waitAnimationWidget->showWithPlay(); waitAnimationWidget->showWithPlay();
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_GET_TASKS_AMM_FOR_TRAINEE, idTraineeSelected); connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_GET_TASKS_AMM_FOR_TRAINEE, idTraineeSelected);
@@ -206,12 +206,12 @@ void AMMtasksWidget::slot_traineeSelected(QString login)
void AMMtasksWidget::slot_UpdateTasksAMMforTrainee(int trainee_id) void AMMtasksWidget::slot_UpdateTasksAMMforTrainee(int trainee_id)
{ {
qDebug() << "slot_UpdateTasksAMMforTrainee" << QThread::currentThreadId(); qDebug() << "slot_UpdateTasksAMMforTrainee" << QThread::currentThreadId();
if(type == TypeList::listForTrainee) if(type == TypeListTreeAMMFIM::listForTrainee)
{ {
if(idTraineeSelected == trainee_id) if(idTraineeSelected == trainee_id)
{ {
QList<TaskAmmFim> listTask = connectorToServer->getListTasksAMMforTrainee(trainee_id); QList<TaskAmmFim> listTask = connectorToServer->getListTasksAMMforTrainee(trainee_id);
signal_prepareAMMListItemsForTrainee(listTask, &listAllModules); signal_prepareAMMListItemsForTrainee(listTask);
} }
} }
} }
@@ -223,10 +223,12 @@ void AMMtasksWidget::loadTasksAMM(bool flRequestFromDB)
waitAnimationWidget->showWithPlay(); waitAnimationWidget->showWithPlay();
if(flRequestFromDB) QByteArray arrayAMM;
/*QByteArray array*/arrayAMM = connectorToServer->getListTaskAmmArray();
emit signal_prepareAMMListItems(/*array*/arrayAMM, &listAllModules, flOnlyActive); if(flRequestFromDB)
arrayAMM = connectorToServer->getListTaskAmmArray();
emit signal_prepareAMMListItems(arrayAMM, flOnlyActive);
} }
void AMMtasksWidget::slot_AMMlistItemsReady(QList<QTreeWidgetItem *> listItems) void AMMtasksWidget::slot_AMMlistItemsReady(QList<QTreeWidgetItem *> listItems)
@@ -246,27 +248,13 @@ void AMMtasksWidget::slot_AMMlistItemsReady(QList<QTreeWidgetItem *> listItems)
ui->btnOnlyActive->setEnabled(true); ui->btnOnlyActive->setEnabled(true);
} }
Module *AMMtasksWidget::searchModuleByID(int id)
{
Module* ptrModule = nullptr;
for(Module* module: listAllModules)
{
ptrModule = module->getModuleByID(id);
if(ptrModule)
return ptrModule;
}
return nullptr;
}
void AMMtasksWidget::preparationTreeWidget() void AMMtasksWidget::preparationTreeWidget()
{ {
treeWidget->setColumnCount(clmnAMM_count); treeWidget->setColumnCount(clmnAMM_count);
reSetHeadTreeWidget(); reSetHeadTreeWidget();
if(type == TypeList::listCommon) if(type == TypeListTreeAMMFIM::listCommon)
{ {
treeWidget->setColumnHidden(ColumnsTreeAMM::clmnAMM_ID, true); treeWidget->setColumnHidden(ColumnsTreeAMM::clmnAMM_ID, true);
treeWidget->setColumnHidden(ColumnsTreeAMM::clmnAMM_status, true); treeWidget->setColumnHidden(ColumnsTreeAMM::clmnAMM_status, true);
@@ -277,7 +265,7 @@ void AMMtasksWidget::reSetHeadTreeWidget()
{ {
QStringList listHeaders; QStringList listHeaders;
if(type == TypeList::listForTrainee) if(type == TypeListTreeAMMFIM::listForTrainee)
listHeaders = QStringList{tr("Task AMM"), tr("DM code"), tr("ID"), tr("Status")}; listHeaders = QStringList{tr("Task AMM"), tr("DM code"), tr("ID"), tr("Status")};
else else
listHeaders = QStringList{tr("PM/DM"), tr("Code"), tr("ID"), tr("Status")}; listHeaders = QStringList{tr("PM/DM"), tr("Code"), tr("ID"), tr("Status")};
@@ -286,11 +274,6 @@ void AMMtasksWidget::reSetHeadTreeWidget()
treeWidget->setHeaderLabels(listHeaders); treeWidget->setHeaderLabels(listHeaders);
} }
void AMMtasksWidget::on_btnUpdateTasks_clicked()
{
connectorToServer->sendQueryTasksXML("amm");
}
void AMMtasksWidget::assignTaskAMMtoTrainee() void AMMtasksWidget::assignTaskAMMtoTrainee()
{ {
QTreeWidgetItem *current = treeWidget->currentItem(); QTreeWidgetItem *current = treeWidget->currentItem();
@@ -300,7 +283,7 @@ void AMMtasksWidget::assignTaskAMMtoTrainee()
int id = current->text(ColumnsTreeAMM::clmnAMM_ID).toInt(); int id = current->text(ColumnsTreeAMM::clmnAMM_ID).toInt();
Module* module = searchModuleByID(id); Module* module = taskTreePreparation->getModuleAMMbyID(id);
if(module) if(module)
{ {

View File

@@ -6,7 +6,7 @@
#include <QDomNode> #include <QDomNode>
#include "module.h" #include "module.h"
#include "connectortoserver.h" #include "connectortoserver.h"
#include "taskTreePreparation.h" #include "tasktreepreparation.h"
namespace Ui { namespace Ui {
class AMMtasksWidget; class AMMtasksWidget;
@@ -17,15 +17,7 @@ class AMMtasksWidget : public QWidget
Q_OBJECT Q_OBJECT
public: public:
enum TypeList explicit AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTreeAMMFIM type, QWidget *parent = nullptr);
{
listCommon = 0,
listForTrainee
};
public:
explicit AMMtasksWidget(ConnectorToServer* connectorToServer, TypeList type, QWidget *parent = nullptr);
~AMMtasksWidget(); ~AMMtasksWidget();
public: public:
@@ -38,7 +30,6 @@ protected:
private Q_SLOTS: private Q_SLOTS:
void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
void on_btnUpdateTasks_clicked();
void on_btnDelete_clicked(); void on_btnDelete_clicked();
void on_btnCheck_clicked(); void on_btnCheck_clicked();
void on_btnAssignTask_clicked(); void on_btnAssignTask_clicked();
@@ -54,15 +45,14 @@ public Q_SLOTS:
void slot_UpdateTasksAMMforTrainee(int trainee_id); void slot_UpdateTasksAMMforTrainee(int trainee_id);
private: private:
Module* searchModuleByID(int id);
void preparationTreeWidget(); void preparationTreeWidget();
void reSetHeadTreeWidget(); void reSetHeadTreeWidget();
void loadTasksAMM(bool flRequestFromDB = true); void loadTasksAMM(bool flRequestFromDB = true);
void assignTaskAMMtoTrainee(); void assignTaskAMMtoTrainee();
Q_SIGNALS: Q_SIGNALS:
void signal_prepareAMMListItems(QByteArray array, QList<Module*>* listAllModules, bool flOnlyActive); void signal_prepareAMMListItems(QByteArray array, bool flOnlyActive);
void signal_prepareAMMListItemsForTrainee(QList<TaskAmmFim> listTask, QList<Module*>* listAllModules); void signal_prepareAMMListItemsForTrainee(QList<TaskAmmFim> listTask);
public Q_SLOTS: public Q_SLOTS:
void slot_AMMlistItemsReady(QList<QTreeWidgetItem*> listItems); void slot_AMMlistItemsReady(QList<QTreeWidgetItem*> listItems);
@@ -70,20 +60,16 @@ private:
Ui::AMMtasksWidget *ui; Ui::AMMtasksWidget *ui;
ConnectorToServer* connectorToServer; ConnectorToServer* connectorToServer;
QTreeWidget* treeWidget; QTreeWidget* treeWidget;
TypeList type; TypeListTreeAMMFIM type;
private:
QList<Module*> listAllModules;
QString loginTraineeSelected; QString loginTraineeSelected;
int idTraineeSelected; int idTraineeSelected;
QThread* threadPreparation; QThread* threadPreparation;
TaskTreePreparation* taskTreePreparation; TaskAMMFIMTreePreparation* taskTreePreparation;
WaitAnimationWidget *waitAnimationWidget; WaitAnimationWidget *waitAnimationWidget;
bool flOnlyActive; //AMM bool flOnlyActive; //AMM
QByteArray arrayAMM; //AMM
}; };
#endif // AMMTASKSWIDGET_H #endif // AMMTASKSWIDGET_H

View File

@@ -9,7 +9,7 @@ DialogCheckTask::DialogCheckTask(ConnectorToServer* connectorToServer, QWidget *
{ {
ui->setupUi(this); ui->setupUi(this);
fimTasksWidget = new FIMtasksWidget(nullptr, FIMtasksWidget::TypeList::listOneTask, this); fimTasksWidget = new FIMtasksWidget(nullptr, TypeListTreeAMMFIM::listOneTask, this);
ui->verticalLayout_3->addWidget(fimTasksWidget); ui->verticalLayout_3->addWidget(fimTasksWidget);

View File

@@ -9,7 +9,7 @@
#include "tasksAmmFim.h" #include "tasksAmmFim.h"
#include "dialogchecktask.h" #include "dialogchecktask.h"
FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList type, QWidget *parent) : FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeListTreeAMMFIM type, QWidget *parent) :
QWidget(parent), QWidget(parent),
ui(new Ui::FIMtasksWidget), ui(new Ui::FIMtasksWidget),
connectorToServer(connectorToServer), connectorToServer(connectorToServer),
@@ -34,13 +34,13 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
preparationTreeWidget(); preparationTreeWidget();
threadPreparation = new QThread(); threadPreparation = new QThread();
taskTreePreparation = new TaskTreePreparation(); taskTreePreparation = new TaskAMMFIMTreePreparation(type);
taskTreePreparation->moveToThread(threadPreparation); taskTreePreparation->moveToThread(threadPreparation);
threadPreparation->start(); threadPreparation->start();
threadPreparation->setPriority(QThread::HighestPriority); threadPreparation->setPriority(QThread::HighestPriority);
connect(this, &FIMtasksWidget::signal_prepareFIMListItems, taskTreePreparation, &TaskTreePreparation::slot_prepareFIMListItems); connect(this, &FIMtasksWidget::signal_prepareFIMListItems, taskTreePreparation, &TaskAMMFIMTreePreparation::slot_prepareFIMListItems);
connect(this, &FIMtasksWidget::signal_prepareFIMListItemsForTrainee, taskTreePreparation, &TaskTreePreparation::slot_prepareFIMListItemsForTrainee); connect(this, &FIMtasksWidget::signal_prepareFIMListItemsForTrainee, taskTreePreparation, &TaskAMMFIMTreePreparation::slot_prepareFIMListItemsForTrainee);
connect(taskTreePreparation, &TaskTreePreparation::signal_listFIMItemsReady, this, &FIMtasksWidget::slot_FIMlistItemsReady); connect(taskTreePreparation, &TaskAMMFIMTreePreparation::signal_listFIMItemsReady, this, &FIMtasksWidget::slot_FIMlistItemsReady);
waitAnimationWidget = new WaitAnimationWidget; waitAnimationWidget = new WaitAnimationWidget;
QMovie *movie = new QMovie(":/resources/icons/762.gif"); QMovie *movie = new QMovie(":/resources/icons/762.gif");
@@ -54,7 +54,7 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
ui->btnAssignTask->setObjectName("btnAssignTask"); ui->btnAssignTask->setObjectName("btnAssignTask");
ui->btnAssignTask->setEnabled(false); ui->btnAssignTask->setEnabled(false);
if(type == TypeList::listCommon) if(type == TypeListTreeAMMFIM::listCommon)
{ {
ui->horizontalLayout_3->addWidget(ui->btnAssignTask); ui->horizontalLayout_3->addWidget(ui->btnAssignTask);
ui->horizontalLayout_3->addWidget(ui->btnCheck); ui->horizontalLayout_3->addWidget(ui->btnCheck);
@@ -64,7 +64,7 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
ui->btnDelete->setVisible(false); ui->btnDelete->setVisible(false);
ui->btnCheck->setVisible(false); ui->btnCheck->setVisible(false);
} }
else if(type == TypeList::listOneTask) else if(type == TypeListTreeAMMFIM::listOneTask)
{ {
ui->btnDelete->setVisible(false); ui->btnDelete->setVisible(false);
ui->btnCheck->setVisible(false); ui->btnCheck->setVisible(false);
@@ -82,8 +82,6 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
FIMtasksWidget::~FIMtasksWidget() FIMtasksWidget::~FIMtasksWidget()
{ {
//deleteAllTaskAmmFim(); //TODO
waitAnimationWidget->hideWithStop(); waitAnimationWidget->hideWithStop();
taskTreePreparation->stopParser(); taskTreePreparation->stopParser();
@@ -92,9 +90,9 @@ FIMtasksWidget::~FIMtasksWidget()
delete threadPreparation; delete threadPreparation;
delete taskTreePreparation; delete taskTreePreparation;
delete waitAnimationWidget; delete waitAnimationWidget;
delete treeWidget; delete treeWidget;
delete ui; delete ui;
} }
@@ -109,9 +107,9 @@ void FIMtasksWidget::deactivate()
void FIMtasksWidget::setOneTaskFim(TaskAmmFim* task) void FIMtasksWidget::setOneTaskFim(TaskAmmFim* task)
{ {
listTaskAmmFim.append(task); QList<TaskAmmFim> listTask;
//fillTree(); listTask.append(*task);
//TODO emit signal_prepareFIMListItemsForTrainee(listTask);
} }
void FIMtasksWidget::resizeEvent(QResizeEvent *event) void FIMtasksWidget::resizeEvent(QResizeEvent *event)
@@ -125,7 +123,7 @@ void FIMtasksWidget::resizeEvent(QResizeEvent *event)
treeWidget->setColumnWidth(ColumnsTreeFIM::clmnFIM_status, 110); treeWidget->setColumnWidth(ColumnsTreeFIM::clmnFIM_status, 110);
int widthTitle; int widthTitle;
if(type == TypeList::listCommon) if(type == TypeListTreeAMMFIM::listCommon)
widthTitle = width - (0 + 10); widthTitle = width - (0 + 10);
else else
widthTitle = width - (160 + 10); widthTitle = width - (160 + 10);
@@ -142,14 +140,13 @@ void FIMtasksWidget::changeEvent(QEvent *event)
reSetHeadTreeWidget(); reSetHeadTreeWidget();
if(type == TypeList::listCommon) if(type == TypeListTreeAMMFIM::listCommon)
{ {
//slot_NeedUpdateUI(); //slot_NeedUpdateUI();
} }
else if(type == TypeList::listForTrainee) else if(type == TypeListTreeAMMFIM::listForTrainee)
if(idTraineeSelected) if(idTraineeSelected)
slot_UpdateTasksFIMforTrainee(idTraineeSelected); slot_UpdateTasksFIMforTrainee(idTraineeSelected);
//fillTree();
} }
} }
@@ -169,7 +166,15 @@ void FIMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current,
{//Выбрана задача {//Выбрана задача
int id = current->text(ColumnsTreeFIM::clmnFIM_ID).toInt(); int id = current->text(ColumnsTreeFIM::clmnFIM_ID).toInt();
TaskAmmFim* task = getTaskByID(id); TaskAmmFim* task = taskTreePreparation->getTaskFIMbyID(id);
if(task == nullptr)
{
ui->btnAssignTask->setEnabled(false);
ui->btnDelete->setEnabled(false);
ui->btnCheck->setEnabled(false);
}
code = task->title; code = task->title;
@@ -191,114 +196,6 @@ void FIMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current,
} }
} }
#ifdef OLD_FILL
void FIMtasksWidget::fillTree()
{
//Обновление дерева
treeWidget->clear();
for(int i = 0; i < listTaskAmmFim.count(); i++)
{/*Задачи*/
TaskAmmFim* task = listTaskAmmFim.at(i);
QTreeWidgetItem* itemTask = new QTreeWidgetItem();
itemTask->setText(0, task->title);
itemTask->setText(1, QString::number(task->id));
//itemTask->setFlags(itemTask->flags() | Qt::ItemIsUserCheckable);
//itemTask->setCheckState(0, Qt::Checked);
if(task->status == "completed")
{
itemTask->setText(2, tr("completed"));
itemTask->setIcon(2, QIcon(QStringLiteral(":/resources/icons/circleGreen.png")));
}
else if(task->status == "failed")
{
itemTask->setText(2, tr("failed"));
itemTask->setIcon(2, QIcon(QStringLiteral(":/resources/icons/circleRed.png")));
}
else if(task->status == "checkup")
{
itemTask->setText(2, tr("checkup"));
itemTask->setIcon(2, QIcon(QStringLiteral(":/resources/icons/circleYellow.png")));
}
else
{
itemTask->setText(2, tr("new"));
itemTask->setIcon(2, QIcon(QStringLiteral(":/resources/icons/circleGray.png")));
}
itemTask->setIcon(0, QIcon(":/resources/icons/procedure.png"));
itemTask->setToolTip(0, task->title);
treeWidget->addTopLevelItem(itemTask);
for (int j = 0; j < task->malfunctionList.count(); j++)
{/*Неисправности*/
Malfunction malfunction = task->malfunctionList.at(j);
QTreeWidgetItem* itemMalfunction = new QTreeWidgetItem();
itemMalfunction->setText(0, malfunction.description);
if(type == TypeList::listCommon)
{
itemMalfunction->setFlags(itemMalfunction->flags() | Qt::ItemIsUserCheckable);
itemMalfunction->setCheckState(0, Qt::Checked);
}
itemMalfunction->setIcon(0, QIcon(":/resources/icons/malfunction.png"));
itemMalfunction->setToolTip(0, malfunction.description);
itemTask->addChild(itemMalfunction);
for (int k = 0; k < malfunction.malfunctionSigns.count(); k++)
{/*Сигнализация*/
MalfunctionSign sign = malfunction.malfunctionSigns.at(k);
QTreeWidgetItem* itemSign = new QTreeWidgetItem();
itemSign->setText(0, sign.description);
//itemSign->setFlags(itemSign->flags() | Qt::ItemIsUserCheckable);
//itemSign->setCheckState(0, Qt::Checked);
itemSign->setIcon(0, QIcon(":/resources/icons/sign.png"));
itemSign->setToolTip(0, sign.description);
itemMalfunction->addChild(itemSign);
}
}
}
QTreeWidgetItem * item = treeWidget->topLevelItem(0);
if(item != nullptr)
{
treeWidget->setCurrentItem(item);
if(type == TypeList::listOneTask)
{
treeWidget->expandAll();
}
}
}
/*
void FIMtasksWidget::prepareListTasksForTrainee(QList<TaskAmmFim> listTask)
{
deleteAllTaskAmmFim();
for(TaskAmmFim task : listTask)
{
TaskAmmFim* newTask = new TaskAmmFim();
*newTask = task;
listTaskAmmFim.append(newTask);
}
}
*/
#endif
void FIMtasksWidget::slot_NeedUpdateUI() void FIMtasksWidget::slot_NeedUpdateUI()
{ {
qDebug() << "FIMtasksWidget::slot_NeedUpdateUI thread ID " << QThread::currentThreadId(); qDebug() << "FIMtasksWidget::slot_NeedUpdateUI thread ID " << QThread::currentThreadId();
@@ -311,7 +208,7 @@ void FIMtasksWidget::slot_traineeSelected(QString login)
loginTraineeSelected = login; loginTraineeSelected = login;
idTraineeSelected = connectorToServer->getIdTraineeByLogin(loginTraineeSelected); idTraineeSelected = connectorToServer->getIdTraineeByLogin(loginTraineeSelected);
if(type == TypeList::listForTrainee) if(type == TypeListTreeAMMFIM::listForTrainee)
{ {
waitAnimationWidget->showWithPlay(); waitAnimationWidget->showWithPlay();
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_GET_TASKS_FIM_FOR_TRAINEE, idTraineeSelected); connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_GET_TASKS_FIM_FOR_TRAINEE, idTraineeSelected);
@@ -321,15 +218,12 @@ void FIMtasksWidget::slot_traineeSelected(QString login)
void FIMtasksWidget::slot_UpdateTasksFIMforTrainee(int trainee_id) void FIMtasksWidget::slot_UpdateTasksFIMforTrainee(int trainee_id)
{ {
qDebug() << "slot_UpdateTasksFIMforTrainee" << QThread::currentThreadId(); qDebug() << "slot_UpdateTasksFIMforTrainee" << QThread::currentThreadId();
if(type == TypeList::listForTrainee) if(type == TypeListTreeAMMFIM::listForTrainee)
{ {
if(idTraineeSelected == trainee_id) if(idTraineeSelected == trainee_id)
{ {
QList<TaskAmmFim> listTask = connectorToServer->getListTasksFIMforTrainee(trainee_id); QList<TaskAmmFim> listTask = connectorToServer->getListTasksFIMforTrainee(trainee_id);
emit signal_prepareFIMListItemsForTrainee(listTask, &listTaskAmmFim); emit signal_prepareFIMListItemsForTrainee(listTask);
//prepareListTasksForTrainee(listTask);
//fillTree();
//waitAnimationWidget->hideWithStop();
} }
} }
} }
@@ -343,12 +237,7 @@ void FIMtasksWidget::loadTasksFIM()
QByteArray arrayFIM = connectorToServer->getListTaskFimArray(); QByteArray arrayFIM = connectorToServer->getListTaskFimArray();
//loadFIMtasksFromXML(arrayFIM); emit signal_prepareFIMListItems(arrayFIM);
//собственно обновление дерева
//fillTree();
//waitAnimationWidget->hideWithStop();
emit signal_prepareFIMListItems(arrayFIM, &listTaskAmmFim);
} }
void FIMtasksWidget::slot_FIMlistItemsReady(QList<QTreeWidgetItem *> listItems) void FIMtasksWidget::slot_FIMlistItemsReady(QList<QTreeWidgetItem *> listItems)
@@ -361,21 +250,13 @@ void FIMtasksWidget::slot_FIMlistItemsReady(QList<QTreeWidgetItem *> listItems)
QTreeWidgetItem * item = treeWidget->topLevelItem(0); QTreeWidgetItem * item = treeWidget->topLevelItem(0);
if(item != nullptr) if(item != nullptr)
{
treeWidget->setCurrentItem(item); treeWidget->setCurrentItem(item);
if(type == TypeListTreeAMMFIM::listOneTask)
waitAnimationWidget->hideWithStop(); treeWidget->expandAll();
}
TaskAmmFim* FIMtasksWidget::getTaskByID(int id)
{
for(int i = 0; i < listTaskAmmFim.count(); i++)
{/*Задачи*/
TaskAmmFim* task = listTaskAmmFim.at(i);
if(task->id == id)
return task;
} }
return nullptr; waitAnimationWidget->hideWithStop();
} }
void FIMtasksWidget::preparationTreeWidget() void FIMtasksWidget::preparationTreeWidget()
@@ -384,7 +265,7 @@ void FIMtasksWidget::preparationTreeWidget()
reSetHeadTreeWidget(); reSetHeadTreeWidget();
if(type == TypeList::listCommon || type == TypeList::listOneTask) if(type == TypeListTreeAMMFIM::listCommon || type == TypeListTreeAMMFIM::listOneTask)
{ {
treeWidget->setColumnHidden(ColumnsTreeFIM::clmnFIM_ID, true); treeWidget->setColumnHidden(ColumnsTreeFIM::clmnFIM_ID, true);
treeWidget->setColumnHidden(ColumnsTreeFIM::clmnFIM_status, true); treeWidget->setColumnHidden(ColumnsTreeFIM::clmnFIM_status, true);
@@ -395,7 +276,7 @@ void FIMtasksWidget::reSetHeadTreeWidget()
{ {
QStringList listHeaders; QStringList listHeaders;
if(type == TypeList::listForTrainee) if(type == TypeListTreeAMMFIM::listForTrainee)
listHeaders = QStringList{tr("Task FIM"), tr("ID"), tr("Status")}; listHeaders = QStringList{tr("Task FIM"), tr("ID"), tr("Status")};
else else
listHeaders = QStringList{tr("Title"), tr("ID"), tr("Status")}; listHeaders = QStringList{tr("Title"), tr("ID"), tr("Status")};
@@ -403,11 +284,6 @@ void FIMtasksWidget::reSetHeadTreeWidget()
treeWidget->setHeaderLabels(listHeaders); treeWidget->setHeaderLabels(listHeaders);
} }
void FIMtasksWidget::on_btnUpdateTasks_clicked()
{
connectorToServer->sendQueryTasksXML("fim");
}
void FIMtasksWidget::assignTaskFIMtoTrainee() void FIMtasksWidget::assignTaskFIMtoTrainee()
{ {
QTreeWidgetItem *current = treeWidget->currentItem(); QTreeWidgetItem *current = treeWidget->currentItem();
@@ -417,7 +293,7 @@ void FIMtasksWidget::assignTaskFIMtoTrainee()
int id = current->text(ColumnsTreeFIM::clmnFIM_ID).toInt(); int id = current->text(ColumnsTreeFIM::clmnFIM_ID).toInt();
TaskAmmFim* task = getTaskByID(id); TaskAmmFim* task = taskTreePreparation->getTaskFIMbyID(id);
if(task) if(task)
{ {
@@ -440,7 +316,7 @@ void FIMtasksWidget::assignTaskFIMtoTrainee()
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE, trainee_id, &taskNew); connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE, trainee_id, &taskNew);
updateTaskItem(current); //TODO ? updateTaskItem(current);
} }
} }
@@ -476,7 +352,7 @@ void FIMtasksWidget::on_btnCheck_clicked()
int id = treeItemCurrent->text(ColumnsTreeFIM::clmnFIM_ID).toInt(); int id = treeItemCurrent->text(ColumnsTreeFIM::clmnFIM_ID).toInt();
TaskAmmFim* task = getTaskByID(id); TaskAmmFim* task = taskTreePreparation->getTaskFIMbyID(id);
DialogCheckTask dlg(connectorToServer, this); DialogCheckTask dlg(connectorToServer, this);

View File

@@ -5,7 +5,7 @@
#include <QTreeWidget> #include <QTreeWidget>
#include "tasksAmmFim.h" #include "tasksAmmFim.h"
#include "connectortoserver.h" #include "connectortoserver.h"
#include "taskTreePreparation.h" #include "tasktreepreparation.h"
namespace Ui { namespace Ui {
class FIMtasksWidget; class FIMtasksWidget;
@@ -15,19 +15,11 @@ class FIMtasksWidget : public QWidget
{ {
Q_OBJECT Q_OBJECT
public:
enum TypeList
{
listCommon = 0,
listForTrainee,
listOneTask
};
private: private:
public: public:
explicit FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList type, QWidget *parent = nullptr); explicit FIMtasksWidget(ConnectorToServer* connectorToServer, TypeListTreeAMMFIM type, QWidget *parent = nullptr);
~FIMtasksWidget(); ~FIMtasksWidget();
public: public:
@@ -41,7 +33,6 @@ protected:
private Q_SLOTS: private Q_SLOTS:
void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
void on_btnUpdateTasks_clicked();
void on_btnDelete_clicked(); void on_btnDelete_clicked();
void on_btnCheck_clicked(); void on_btnCheck_clicked();
void on_btnAssignTask_clicked(); void on_btnAssignTask_clicked();
@@ -55,25 +46,15 @@ public Q_SLOTS:
void slot_UpdateTasksFIMforTrainee(int trainee_id); void slot_UpdateTasksFIMforTrainee(int trainee_id);
private: private:
TaskAmmFim* getTaskByID(int id);
void preparationTreeWidget(); void preparationTreeWidget();
void reSetHeadTreeWidget(); void reSetHeadTreeWidget();
void loadTasksFIM(); void loadTasksFIM();
void assignTaskFIMtoTrainee(); void assignTaskFIMtoTrainee();
/*
void fillTree();
void prepareListTasksForTrainee(QList<TaskAmmFim> listTask);
*/
void updateTaskItem(QTreeWidgetItem *itemTask); void updateTaskItem(QTreeWidgetItem *itemTask);
Q_SIGNALS: Q_SIGNALS:
void signal_prepareFIMListItems(QByteArray array, QList<TaskAmmFim*>* listTaskAmmFim); void signal_prepareFIMListItems(QByteArray array);
void signal_prepareFIMListItemsForTrainee(QList<TaskAmmFim> listTask, QList<TaskAmmFim*>* listTaskAmmFim); void signal_prepareFIMListItemsForTrainee(QList<TaskAmmFim> listTask);
public Q_SLOTS: public Q_SLOTS:
void slot_FIMlistItemsReady(QList<QTreeWidgetItem*> listItems); void slot_FIMlistItemsReady(QList<QTreeWidgetItem*> listItems);
@@ -81,15 +62,13 @@ private:
Ui::FIMtasksWidget *ui; Ui::FIMtasksWidget *ui;
ConnectorToServer* connectorToServer; ConnectorToServer* connectorToServer;
QTreeWidget* treeWidget; QTreeWidget* treeWidget;
TypeList type; TypeListTreeAMMFIM type;
private:
QList<TaskAmmFim*> listTaskAmmFim;
QString loginTraineeSelected; QString loginTraineeSelected;
int idTraineeSelected; int idTraineeSelected;
QThread* threadPreparation; QThread* threadPreparation;
TaskTreePreparation* taskTreePreparation; TaskAMMFIMTreePreparation* taskTreePreparation;
WaitAnimationWidget *waitAnimationWidget; WaitAnimationWidget *waitAnimationWidget;
QString userName; //FIM QString userName; //FIM

View File

@@ -3,26 +3,50 @@
#include "tasktreepreparation.h" #include "tasktreepreparation.h"
TaskTreePreparation::TaskTreePreparation(QObject *parent) : TaskAMMFIMTreePreparation::TaskAMMFIMTreePreparation(TypeListTreeAMMFIM type, QObject *parent) :
QObject(parent), QObject(parent),
listAllModulesAMM(nullptr), flagStop(false),
listTaskAmmFim(nullptr), type(type)
flagStop(false)
{ {
qDebug() << "TaskTreePreparation init thread ID " << QThread::currentThreadId(); qDebug() << "TaskAMMFIMTreePreparation init thread ID " << QThread::currentThreadId();
} }
TaskTreePreparation::~TaskTreePreparation() TaskAMMFIMTreePreparation::~TaskAMMFIMTreePreparation()
{ {
deleteAllModulsAMM(); deleteAllModulsAMM();
deleteAllTaskFIM();
} }
void TaskTreePreparation::stopParser() void TaskAMMFIMTreePreparation::stopParser()
{ {
flagStop = true; flagStop = true;
} }
QTreeWidgetItem *TaskTreePreparation::addModuleToTreeWidgetAMM(Module *module, bool flOnlyActive, QTreeWidgetItem *parentItem) TaskAmmFim* TaskAMMFIMTreePreparation::getTaskFIMbyID(int id)
{
for(int i = 0; i < listTaskFIM.count(); i++)
{/*Задачи*/
TaskAmmFim* task = listTaskFIM.at(i);
if(task->id == id)
return task;
}
return nullptr;
}
Module* TaskAMMFIMTreePreparation::getModuleAMMbyID(int id)
{
Module* ptrModule = nullptr;
for(Module* module: listAllModulesAMM)
{
ptrModule = module->getModuleByID(id);
if(ptrModule)
return ptrModule;
}
return nullptr;
}
QTreeWidgetItem *TaskAMMFIMTreePreparation::addModuleToTreeWidgetAMM(Module *module, bool flOnlyActive, QTreeWidgetItem *parentItem)
{ {
QTreeWidgetItem* itemModule = nullptr; QTreeWidgetItem* itemModule = nullptr;
@@ -71,7 +95,7 @@ QTreeWidgetItem *TaskTreePreparation::addModuleToTreeWidgetAMM(Module *module, b
return itemModule; return itemModule;
} }
void TaskTreePreparation::loadAMMtasksFromXML(QByteArray array) void TaskAMMFIMTreePreparation::loadAMMtasksFromXML(QByteArray array)
{ {
deleteAllModulsAMM(); deleteAllModulsAMM();
@@ -86,9 +110,9 @@ void TaskTreePreparation::loadAMMtasksFromXML(QByteArray array)
domElementParserAMM(manifestElement, nullptr); domElementParserAMM(manifestElement, nullptr);
} }
void TaskTreePreparation::loadFIMtasksFromXML(QByteArray array) void TaskAMMFIMTreePreparation::loadFIMtasksFromXML(QByteArray array)
{ {
deleteAllTaskAmmFim(); deleteAllTaskFIM();
QDomDocument docTasksDOM; QDomDocument docTasksDOM;
@@ -104,6 +128,10 @@ void TaskTreePreparation::loadFIMtasksFromXML(QByteArray array)
do do
{/*task*/ {/*task*/
if(flagStop)
return;
QString name = taskElement.nodeName(); QString name = taskElement.nodeName();
QDomNamedNodeMap nodeMap = taskElement.attributes(); QDomNamedNodeMap nodeMap = taskElement.attributes();
@@ -159,41 +187,34 @@ void TaskTreePreparation::loadFIMtasksFromXML(QByteArray array)
} }
}while(! (malfunctionElement = malfunctionElement.nextSiblingElement()).isNull()); }while(! (malfunctionElement = malfunctionElement.nextSiblingElement()).isNull());
} }
listTaskAmmFim->append(task); listTaskFIM.append(task);
} }
}while (! (taskElement = taskElement.nextSiblingElement()).isNull()); }while (! (taskElement = taskElement.nextSiblingElement()).isNull());
return; return;
} }
void TaskTreePreparation::deleteAllTaskAmmFim() void TaskAMMFIMTreePreparation::deleteAllTaskFIM()
{ {
//if(type == TypeList::listOneTask) for(TaskAmmFim* task: listTaskFIM)
//return;
for(TaskAmmFim* task: *listTaskAmmFim)
delete task; delete task;
listTaskAmmFim->clear(); listTaskFIM.clear();
} }
void TaskAMMFIMTreePreparation::deleteAllModulsAMM()
void TaskTreePreparation::deleteAllModulsAMM()
{ {
if(listAllModulesAMM == nullptr) for(Module* module: listAllModulesAMM)
return;
for(Module* module: *listAllModulesAMM)
{ {
if(module->getType() == ModuleType::TYPE_PM) if(module->getType() == ModuleType::TYPE_PM)
delete static_cast<PM*>(module); delete static_cast<PM*>(module);
else else
delete static_cast<DM*>(module); delete static_cast<DM*>(module);
} }
listAllModulesAMM->clear(); listAllModulesAMM.clear();
} }
void TaskTreePreparation::domElementParserAMM(QDomElement element, Module* moduleParent) void TaskAMMFIMTreePreparation::domElementParserAMM(QDomElement element, Module* moduleParent)
{ {
QString name; QString name;
@@ -296,23 +317,20 @@ void TaskTreePreparation::domElementParserAMM(QDomElement element, Module* modul
domElementParserAMM(childElement, module); domElementParserAMM(childElement, module);
if(moduleParent == nullptr) if(moduleParent == nullptr)
listAllModulesAMM->append(module); listAllModulesAMM.append(module);
}while (! (childElement = childElement.nextSiblingElement()).isNull()); }while (! (childElement = childElement.nextSiblingElement()).isNull());
} }
void TaskAMMFIMTreePreparation::slot_prepareAMMListItems(QByteArray array, bool flOnlyActive)
void TaskTreePreparation::slot_prepareAMMListItems(QByteArray array, QList<Module*>* listAllModules, bool flOnlyActive)
{ {
qDebug() << "TaskTreePreparation::slot_prepareAMMListItems thread ID " << QThread::currentThreadId(); qDebug() << "TaskAMMFIMTreePreparation::slot_prepareAMMListItems thread ID " << QThread::currentThreadId();
this->listAllModulesAMM = listAllModules;
loadAMMtasksFromXML(array); loadAMMtasksFromXML(array);
listItems.clear(); listItems.clear();
for(Module* module : *this->listAllModulesAMM) for(Module* module : listAllModulesAMM)
{ {
QTreeWidgetItem* item = addModuleToTreeWidgetAMM(module, flOnlyActive); QTreeWidgetItem* item = addModuleToTreeWidgetAMM(module, flOnlyActive);
listItems.append(item); listItems.append(item);
@@ -321,13 +339,9 @@ void TaskTreePreparation::slot_prepareAMMListItems(QByteArray array, QList<Modul
Q_EMIT signal_listAMMItemsReady(listItems); Q_EMIT signal_listAMMItemsReady(listItems);
} }
void TaskTreePreparation::slot_prepareAMMListItemsForTrainee(QList<TaskAmmFim> listTask, QList<Module *> *listAllModules) void TaskAMMFIMTreePreparation::slot_prepareAMMListItemsForTrainee(QList<TaskAmmFim> listTask)
{ {
qDebug() << "TaskTreePreparation::slot_prepareAMMListItemsForTrainee thread ID " << QThread::currentThreadId(); qDebug() << "TaskAMMFIMTreePreparation::slot_prepareAMMListItemsForTrainee thread ID " << QThread::currentThreadId();
this->listAllModulesAMM = listAllModules;
//loadAMMtasksFromList(listTask);
listItems.clear(); listItems.clear();
@@ -376,17 +390,15 @@ void TaskTreePreparation::slot_prepareAMMListItemsForTrainee(QList<TaskAmmFim> l
Q_EMIT signal_listAMMItemsReady(listItems); Q_EMIT signal_listAMMItemsReady(listItems);
} }
void TaskTreePreparation::slot_prepareFIMListItems(QByteArray array, QList<TaskAmmFim *> *listTaskAmmFim) void TaskAMMFIMTreePreparation::slot_prepareFIMListItems(QByteArray array)
{ {
qDebug() << "TaskTreePreparation::slot_prepareFIMListItems thread ID " << QThread::currentThreadId(); qDebug() << "TaskAMMFIMTreePreparation::slot_prepareFIMListItems thread ID " << QThread::currentThreadId();
this->listTaskAmmFim = listTaskAmmFim;
loadFIMtasksFromXML(array); loadFIMtasksFromXML(array);
listItems.clear(); listItems.clear();
for(TaskAmmFim* taskPtr : *this->listTaskAmmFim) for(TaskAmmFim* taskPtr : listTaskFIM)
{/*Задачи*/ {/*Задачи*/
TaskAmmFim task = *taskPtr; TaskAmmFim task = *taskPtr;
@@ -422,7 +434,6 @@ void TaskTreePreparation::slot_prepareFIMListItems(QByteArray array, QList<TaskA
itemTask->setIcon(0, QIcon(":/resources/icons/procedure.png")); itemTask->setIcon(0, QIcon(":/resources/icons/procedure.png"));
itemTask->setToolTip(0, task.title); itemTask->setToolTip(0, task.title);
//treeWidget->addTopLevelItem(itemTask);
for (int j = 0; j < task.malfunctionList.count(); j++) for (int j = 0; j < task.malfunctionList.count(); j++)
{/*Неисправности*/ {/*Неисправности*/
@@ -431,7 +442,7 @@ void TaskTreePreparation::slot_prepareFIMListItems(QByteArray array, QList<TaskA
QTreeWidgetItem* itemMalfunction = new QTreeWidgetItem(); QTreeWidgetItem* itemMalfunction = new QTreeWidgetItem();
itemMalfunction->setText(0, malfunction.description); itemMalfunction->setText(0, malfunction.description);
//if(type == TypeList::listCommon) //TODO if(type == TypeListTreeAMMFIM::listCommon)
{ {
itemMalfunction->setFlags(itemMalfunction->flags() | Qt::ItemIsUserCheckable); itemMalfunction->setFlags(itemMalfunction->flags() | Qt::ItemIsUserCheckable);
itemMalfunction->setCheckState(0, Qt::Checked); itemMalfunction->setCheckState(0, Qt::Checked);
@@ -463,11 +474,9 @@ void TaskTreePreparation::slot_prepareFIMListItems(QByteArray array, QList<TaskA
Q_EMIT signal_listFIMItemsReady(listItems); Q_EMIT signal_listFIMItemsReady(listItems);
} }
void TaskTreePreparation::slot_prepareFIMListItemsForTrainee(QList<TaskAmmFim> listTask, QList<TaskAmmFim *> *listTaskAmmFim) void TaskAMMFIMTreePreparation::slot_prepareFIMListItemsForTrainee(QList<TaskAmmFim> listTask)
{ {
qDebug() << "TaskTreePreparation::slot_prepareFIMListItemsForTrainee thread ID " << QThread::currentThreadId(); qDebug() << "TaskAMMFIMTreePreparation::slot_prepareFIMListItemsForTrainee thread ID " << QThread::currentThreadId();
this->listTaskAmmFim = listTaskAmmFim;
listItems.clear(); listItems.clear();
@@ -477,7 +486,7 @@ void TaskTreePreparation::slot_prepareFIMListItemsForTrainee(QList<TaskAmmFim> l
TaskAmmFim* taskNew = nullptr; TaskAmmFim* taskNew = nullptr;
taskNew = new TaskAmmFim(); taskNew = new TaskAmmFim();
*taskNew = task; *taskNew = task;
this->listTaskAmmFim->append(taskNew); listTaskFIM.append(taskNew);
QTreeWidgetItem* itemTask = new QTreeWidgetItem(); QTreeWidgetItem* itemTask = new QTreeWidgetItem();
@@ -511,7 +520,6 @@ void TaskTreePreparation::slot_prepareFIMListItemsForTrainee(QList<TaskAmmFim> l
itemTask->setIcon(0, QIcon(":/resources/icons/procedure.png")); itemTask->setIcon(0, QIcon(":/resources/icons/procedure.png"));
itemTask->setToolTip(0, task.title); itemTask->setToolTip(0, task.title);
//treeWidget->addTopLevelItem(itemTask);
for (int j = 0; j < task.malfunctionList.count(); j++) for (int j = 0; j < task.malfunctionList.count(); j++)
{/*Неисправности*/ {/*Неисправности*/
@@ -520,7 +528,7 @@ void TaskTreePreparation::slot_prepareFIMListItemsForTrainee(QList<TaskAmmFim> l
QTreeWidgetItem* itemMalfunction = new QTreeWidgetItem(); QTreeWidgetItem* itemMalfunction = new QTreeWidgetItem();
itemMalfunction->setText(0, malfunction.description); itemMalfunction->setText(0, malfunction.description);
//if(type == TypeList::listCommon) //TODO if(type == TypeListTreeAMMFIM::listCommon)
{ {
itemMalfunction->setFlags(itemMalfunction->flags() | Qt::ItemIsUserCheckable); itemMalfunction->setFlags(itemMalfunction->flags() | Qt::ItemIsUserCheckable);
itemMalfunction->setCheckState(0, Qt::Checked); itemMalfunction->setCheckState(0, Qt::Checked);

View File

@@ -22,17 +22,27 @@ enum ColumnsTreeFIM{
clmnFIM_count clmnFIM_count
}; };
enum TypeListTreeAMMFIM
{
listCommon = 0,
listForTrainee,
listOneTask
};
class TaskTreePreparation : public QObject
class TaskAMMFIMTreePreparation : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit TaskTreePreparation(QObject *parent = nullptr); explicit TaskAMMFIMTreePreparation(TypeListTreeAMMFIM type, QObject *parent = nullptr);
~TaskTreePreparation(); ~TaskAMMFIMTreePreparation();
public: public:
void stopParser(); void stopParser();
TaskAmmFim* getTaskFIMbyID(int id);
Module* getModuleAMMbyID(int id);
private: private:
QTreeWidgetItem* addModuleToTreeWidgetAMM(Module* module, bool flOnlyActive = false, QTreeWidgetItem* parentItem = nullptr); QTreeWidgetItem* addModuleToTreeWidgetAMM(Module* module, bool flOnlyActive = false, QTreeWidgetItem* parentItem = nullptr);
void loadAMMtasksFromXML(QByteArray array); void loadAMMtasksFromXML(QByteArray array);
@@ -40,14 +50,14 @@ private:
void deleteAllModulsAMM(); void deleteAllModulsAMM();
void loadFIMtasksFromXML(QByteArray array); void loadFIMtasksFromXML(QByteArray array);
void deleteAllTaskAmmFim(); void deleteAllTaskFIM();
public Q_SLOTS: public Q_SLOTS:
void slot_prepareAMMListItems(QByteArray array, QList<Module*>* listAllModulesAMM, bool flOnlyActive); void slot_prepareAMMListItems(QByteArray array, bool flOnlyActive);
void slot_prepareAMMListItemsForTrainee(QList<TaskAmmFim> listTask, QList<Module*>* listAllModulesAMM); void slot_prepareAMMListItemsForTrainee(QList<TaskAmmFim> listTask);
void slot_prepareFIMListItems(QByteArray array, QList<TaskAmmFim*>* listTaskAmmFim); void slot_prepareFIMListItems(QByteArray array);
void slot_prepareFIMListItemsForTrainee(QList<TaskAmmFim> listTask, QList<TaskAmmFim*>* listTaskAmmFim); void slot_prepareFIMListItemsForTrainee(QList<TaskAmmFim> listTask);
Q_SIGNALS: Q_SIGNALS:
void signal_listAMMItemsReady(QList<QTreeWidgetItem*> listItemsAMM); void signal_listAMMItemsReady(QList<QTreeWidgetItem*> listItemsAMM);
@@ -57,10 +67,11 @@ Q_SIGNALS:
private: private:
QList<QTreeWidgetItem*> listItems; QList<QTreeWidgetItem*> listItems;
QList<Module*>* listAllModulesAMM; QList<Module*> listAllModulesAMM;
QList<TaskAmmFim*>* listTaskAmmFim; QList<TaskAmmFim*> listTaskFIM;
bool flagStop; bool flagStop;
TypeListTreeAMMFIM type;
}; };
#endif // TASKTREEPREPARATION_H #endif // TASKTREEPREPARATION_H

View File

@@ -14,8 +14,8 @@ ViewerTrainees::ViewerTrainees(ConnectorToServer* connectorToServer, QWidget *pa
ui->horizontalLayout_11->addWidget(treeWidget); ui->horizontalLayout_11->addWidget(treeWidget);
ammTasksWidget = new AMMtasksWidget(connectorToServer, AMMtasksWidget::TypeList::listForTrainee, this); ammTasksWidget = new AMMtasksWidget(connectorToServer, TypeListTreeAMMFIM::listForTrainee, this);
fimTasksWidget = new FIMtasksWidget(connectorToServer, FIMtasksWidget::TypeList::listForTrainee, this); fimTasksWidget = new FIMtasksWidget(connectorToServer, TypeListTreeAMMFIM::listForTrainee, this);
connect(this, &ViewerTrainees::signal_traineeSelected, fimTasksWidget, &FIMtasksWidget::slot_traineeSelected); connect(this, &ViewerTrainees::signal_traineeSelected, fimTasksWidget, &FIMtasksWidget::slot_traineeSelected);
connect(this, &ViewerTrainees::signal_traineeSelected, ammTasksWidget, &AMMtasksWidget::slot_traineeSelected); connect(this, &ViewerTrainees::signal_traineeSelected, ammTasksWidget, &AMMtasksWidget::slot_traineeSelected);