Предварительно пофиксил замирание крутилки 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(""), loginTraineeSelected(""),
idTraineeSelected(0), idTraineeSelected(0),
threadPreparation(nullptr), threadPreparation(nullptr),
threadAnimation(nullptr),
taskTreePreparation(nullptr), taskTreePreparation(nullptr),
waitAnimationWidget(nullptr), waitAnimationWidget(nullptr),
flOnlyActive(false) flOnlyActive(false)
@@ -37,17 +36,14 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
taskTreePreparation->moveToThread(threadPreparation); taskTreePreparation->moveToThread(threadPreparation);
threadPreparation->start(); threadPreparation->start();
threadPreparation->setPriority(QThread::HighestPriority); threadPreparation->setPriority(QThread::HighestPriority);
connect(this, &AMMtasksWidget::signal_prepareListItems, taskTreePreparation, &TaskTreePreparation::slot_prepareListItems); connect(this, &AMMtasksWidget::signal_prepareAMMListItems, taskTreePreparation, &TaskTreePreparation::slot_prepareAMMListItems);
connect(this, &AMMtasksWidget::signal_prepareListItemsForTrainee, taskTreePreparation, &TaskTreePreparation::slot_prepareListItemsForTrainee); connect(this, &AMMtasksWidget::signal_prepareAMMListItemsForTrainee, taskTreePreparation, &TaskTreePreparation::slot_prepareAMMListItemsForTrainee);
connect(taskTreePreparation, &TaskTreePreparation::signal_listItemsReady, this, &AMMtasksWidget::slot_listItemsReady); connect(taskTreePreparation, &TaskTreePreparation::signal_listAMMItemsReady, this, &AMMtasksWidget::slot_AMMlistItemsReady);
//threadAnimation = new QThread();
waitAnimationWidget = new WaitAnimationWidget; waitAnimationWidget = new WaitAnimationWidget;
QMovie *movie = new QMovie(":/resources/icons/762.gif"); QMovie *movie = new QMovie(":/resources/icons/762.gif");
waitAnimationWidget->setParent(this); waitAnimationWidget->setParent(this);
waitAnimationWidget->initialize(movie,this); waitAnimationWidget->initialize(movie,this);
//waitAnimationWidget->moveToThread(threadAnimation);
//threadAnimation->start();
ui->btnDelete->setObjectName("btnDelete"); ui->btnDelete->setObjectName("btnDelete");
ui->btnDelete->setEnabled(false); ui->btnDelete->setEnabled(false);
@@ -84,18 +80,15 @@ AMMtasksWidget::~AMMtasksWidget()
waitAnimationWidget->hideWithStop(); waitAnimationWidget->hideWithStop();
taskTreePreparation->stopParser(); taskTreePreparation->stopParser();
//threadAnimation->quit();
//threadAnimation->wait();
threadPreparation->quit(); threadPreparation->quit();
threadPreparation->wait(); threadPreparation->wait();
//delete threadAnimation;
delete threadPreparation; delete threadPreparation;
delete taskTreePreparation; delete taskTreePreparation;
delete waitAnimationWidget; delete waitAnimationWidget;
delete treeWidget; delete treeWidget;
delete ui; delete ui;
} }
@@ -103,7 +96,6 @@ void AMMtasksWidget::deactivate()
{ {
ui->btnAssignTask->setEnabled(false); ui->btnAssignTask->setEnabled(false);
ui->btnOnlyActive->setEnabled(false); ui->btnOnlyActive->setEnabled(false);
//taskTreePreparation->stopParser();
treeWidget->clear(); treeWidget->clear();
loginTraineeSelected = ""; loginTraineeSelected = "";
idTraineeSelected = 0; idTraineeSelected = 0;
@@ -116,9 +108,9 @@ void AMMtasksWidget::resizeEvent(QResizeEvent *event)
int width = treeWidget->width(); int width = treeWidget->width();
treeWidget->setColumnWidth(ColumnsTree::clmn_ID, 50); treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_ID, 50);
treeWidget->setColumnWidth(ColumnsTree::clmn_code, 250); treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_code, 250);
treeWidget->setColumnWidth(ColumnsTree::clmn_status, 110); treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_status, 110);
int widthPMorDM; int widthPMorDM;
if(type == TypeList::listCommon) if(type == TypeList::listCommon)
@@ -126,7 +118,7 @@ void AMMtasksWidget::resizeEvent(QResizeEvent *event)
else else
widthPMorDM = width - (410 + 10); widthPMorDM = width - (410 + 10);
treeWidget->setColumnWidth(ColumnsTree::clmn_PMorDM, widthPMorDM); treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_PMorDM, widthPMorDM);
} }
void AMMtasksWidget::changeEvent(QEvent *event) void AMMtasksWidget::changeEvent(QEvent *event)
@@ -160,7 +152,7 @@ void AMMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current,
ui->btnDelete->setEnabled(true); ui->btnDelete->setEnabled(true);
} }
int id = current->text(ColumnsTree::clmn_ID).toInt(); int id = current->text(ColumnsTreeAMM::clmnAMM_ID).toInt();
Module* module = searchModuleByID(id); Module* module = searchModuleByID(id);
@@ -213,13 +205,13 @@ 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();
if(type == TypeList::listForTrainee) if(type == TypeList::listForTrainee)
{ {
if(idTraineeSelected == trainee_id) if(idTraineeSelected == trainee_id)
{ {
//waitAnimationWidget->showWithPlay();
QList<TaskAmmFim> listTask = connectorToServer->getListTasksAMMforTrainee(trainee_id); 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) if(flRequestFromDB)
/*QByteArray array*/arrayAMM = connectorToServer->getListTaskAmmArray(); /*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(); treeWidget->clear();
@@ -270,14 +262,14 @@ Module *AMMtasksWidget::searchModuleByID(int id)
void AMMtasksWidget::preparationTreeWidget() void AMMtasksWidget::preparationTreeWidget()
{ {
treeWidget->setColumnCount(clmn_count); treeWidget->setColumnCount(clmnAMM_count);
reSetHeadTreeWidget(); reSetHeadTreeWidget();
if(type == TypeList::listCommon) if(type == TypeList::listCommon)
{ {
treeWidget->setColumnHidden(ColumnsTree::clmn_ID, true); treeWidget->setColumnHidden(ColumnsTreeAMM::clmnAMM_ID, true);
treeWidget->setColumnHidden(ColumnsTree::clmn_status, true); treeWidget->setColumnHidden(ColumnsTreeAMM::clmnAMM_status, true);
} }
} }
@@ -306,7 +298,7 @@ void AMMtasksWidget::assignTaskAMMtoTrainee()
if(current == nullptr) if(current == nullptr)
return; return;
int id = current->text(ColumnsTree::clmn_ID).toInt(); int id = current->text(ColumnsTreeAMM::clmnAMM_ID).toInt();
Module* module = searchModuleByID(id); Module* module = searchModuleByID(id);
@@ -341,7 +333,7 @@ void AMMtasksWidget::on_btnDelete_clicked()
if(treeItemParent == nullptr) 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) 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() 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) if(QMessageBox::question(this, tr("New task"), tr("Assign this task?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
assignTaskAMMtoTrainee(); assignTaskAMMtoTrainee();
} }
void AMMtasksWidget::on_btnOnlyActive_clicked()
{
if(ui->btnOnlyActive->isChecked())
{
flOnlyActive = true;
}
else
{
flOnlyActive = false;
}
loadTasksAMM(false);
}

View File

@@ -39,14 +39,10 @@ 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_btnUpdateTasks_clicked();
void on_btnDelete_clicked(); void on_btnDelete_clicked();
void on_btnOnlyActive_clicked();
void on_btnCheck_clicked(); void on_btnCheck_clicked();
void on_btnAssignTask_clicked(); void on_btnAssignTask_clicked();
void on_btnOnlyActive_clicked(); //AMM
public Q_SLOTS: public Q_SLOTS:
@@ -65,10 +61,10 @@ private:
void assignTaskAMMtoTrainee(); void assignTaskAMMtoTrainee();
Q_SIGNALS: Q_SIGNALS:
void signal_prepareListItems(QByteArray array, QList<Module*>* listAllModules, bool flOnlyActive); void signal_prepareAMMListItems(QByteArray array, QList<Module*>* listAllModules, bool flOnlyActive);
void signal_prepareListItemsForTrainee(QList<TaskAmmFim> listTask, QList<Module*>* listAllModules); void signal_prepareAMMListItemsForTrainee(QList<TaskAmmFim> listTask, QList<Module*>* listAllModules);
public Q_SLOTS: public Q_SLOTS:
void slot_listItemsReady(QList<QTreeWidgetItem*> listItems); void slot_AMMlistItemsReady(QList<QTreeWidgetItem*> listItems);
private: private:
Ui::AMMtasksWidget *ui; Ui::AMMtasksWidget *ui;
@@ -82,13 +78,12 @@ private:
int idTraineeSelected; int idTraineeSelected;
QThread* threadPreparation; QThread* threadPreparation;
QThread* threadAnimation;
TaskTreePreparation* taskTreePreparation; TaskTreePreparation* taskTreePreparation;
WaitAnimationWidget *waitAnimationWidget; WaitAnimationWidget *waitAnimationWidget;
bool flOnlyActive; bool flOnlyActive; //AMM
QByteArray arrayAMM; QByteArray arrayAMM; //AMM
}; };
#endif // AMMTASKSWIDGET_H #endif // AMMTASKSWIDGET_H

View File

@@ -15,11 +15,12 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
connectorToServer(connectorToServer), connectorToServer(connectorToServer),
treeWidget(nullptr), treeWidget(nullptr),
type(type), type(type),
userName(""),
loginTraineeSelected(""), loginTraineeSelected(""),
idTraineeSelected(0), idTraineeSelected(0),
threadAnimation(nullptr), threadPreparation(nullptr),
waitAnimationWidget(nullptr) taskTreePreparation(nullptr),
waitAnimationWidget(nullptr),
userName("")
{ {
ui->setupUi(this); ui->setupUi(this);
@@ -27,19 +28,24 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
treeWidget = new QTreeWidget(); treeWidget = new QTreeWidget();
ui->horizontalLayout_1->addWidget(treeWidget); ui->horizontalLayout_1->addWidget(treeWidget);
//treeWidget->setMinimumSize(400, 400);
connect(treeWidget, &QTreeWidget::currentItemChanged, this, &FIMtasksWidget::on_treeWidget_currentItemChanged); connect(treeWidget, &QTreeWidget::currentItemChanged, this, &FIMtasksWidget::on_treeWidget_currentItemChanged);
preparationTreeWidget(); preparationTreeWidget();
//threadAnimation = new QThread(); threadPreparation = new QThread();
taskTreePreparation = new TaskTreePreparation();
taskTreePreparation->moveToThread(threadPreparation);
threadPreparation->start();
threadPreparation->setPriority(QThread::HighestPriority);
connect(this, &FIMtasksWidget::signal_prepareFIMListItems, taskTreePreparation, &TaskTreePreparation::slot_prepareFIMListItems);
connect(this, &FIMtasksWidget::signal_prepareFIMListItemsForTrainee, taskTreePreparation, &TaskTreePreparation::slot_prepareFIMListItemsForTrainee);
connect(taskTreePreparation, &TaskTreePreparation::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");
waitAnimationWidget->setParent(this); waitAnimationWidget->setParent(this);
waitAnimationWidget->initialize(movie,this); waitAnimationWidget->initialize(movie,this);
//waitAnimationWidget->moveToThread(threadAnimation);
//threadAnimation->start();
ui->btnDelete->setObjectName("btnDelete"); ui->btnDelete->setObjectName("btnDelete");
ui->btnDelete->setEnabled(false); ui->btnDelete->setEnabled(false);
@@ -62,9 +68,9 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
{ {
ui->btnDelete->setVisible(false); ui->btnDelete->setVisible(false);
ui->btnCheck->setVisible(false); ui->btnCheck->setVisible(false);
ui->btnAssignTask->setVisible(false);
this->treeWidget->headerItem()->setHidden(true); this->treeWidget->headerItem()->setHidden(true);
this->treeWidget->setSelectionMode(QAbstractItemView::SelectionMode::NoSelection); this->treeWidget->setSelectionMode(QAbstractItemView::SelectionMode::NoSelection);
ui->btnAssignTask->setVisible(false);
} }
else else
{ {
@@ -76,15 +82,17 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
FIMtasksWidget::~FIMtasksWidget() FIMtasksWidget::~FIMtasksWidget()
{ {
deleteAllTaskAmmFim(); //deleteAllTaskAmmFim(); //TODO
waitAnimationWidget->hideWithStop(); waitAnimationWidget->hideWithStop();
taskTreePreparation->stopParser();
//threadAnimation->quit(); threadPreparation->quit();
//threadAnimation->wait(); threadPreparation->wait();
//delete threadAnimation; delete threadPreparation;
delete taskTreePreparation;
delete waitAnimationWidget; delete waitAnimationWidget;
delete treeWidget; delete treeWidget;
@@ -102,7 +110,8 @@ void FIMtasksWidget::deactivate()
void FIMtasksWidget::setOneTaskFim(TaskAmmFim* task) void FIMtasksWidget::setOneTaskFim(TaskAmmFim* task)
{ {
listTaskAmmFim.append(task); listTaskAmmFim.append(task);
fillTree(); //fillTree();
//TODO
} }
void FIMtasksWidget::resizeEvent(QResizeEvent *event) void FIMtasksWidget::resizeEvent(QResizeEvent *event)
@@ -112,8 +121,8 @@ void FIMtasksWidget::resizeEvent(QResizeEvent *event)
int width = treeWidget->width(); int width = treeWidget->width();
treeWidget->setColumnWidth(ColumnsTree::clmn_ID, 50); treeWidget->setColumnWidth(ColumnsTreeFIM::clmnFIM_ID, 50);
treeWidget->setColumnWidth(ColumnsTree::clmn_status, 110); treeWidget->setColumnWidth(ColumnsTreeFIM::clmnFIM_status, 110);
int widthTitle; int widthTitle;
if(type == TypeList::listCommon) if(type == TypeList::listCommon)
@@ -121,7 +130,7 @@ void FIMtasksWidget::resizeEvent(QResizeEvent *event)
else else
widthTitle = width - (160 + 10); widthTitle = width - (160 + 10);
treeWidget->setColumnWidth(ColumnsTree::clmn_Title, widthTitle); treeWidget->setColumnWidth(ColumnsTreeFIM::clmnFIM_Title, widthTitle);
} }
void FIMtasksWidget::changeEvent(QEvent *event) void FIMtasksWidget::changeEvent(QEvent *event)
@@ -139,7 +148,8 @@ void FIMtasksWidget::changeEvent(QEvent *event)
} }
else if(type == TypeList::listForTrainee) else if(type == TypeList::listForTrainee)
if(idTraineeSelected) if(idTraineeSelected)
fillTree(); slot_UpdateTasksFIMforTrainee(idTraineeSelected);
//fillTree();
} }
} }
@@ -157,7 +167,7 @@ void FIMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current,
QTreeWidgetItem *treeItemParent = current->parent(); QTreeWidgetItem *treeItemParent = current->parent();
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбрана задача {//Выбрана задача
int id = current->text(ColumnsTree::clmn_ID).toInt(); int id = current->text(ColumnsTreeFIM::clmnFIM_ID).toInt();
TaskAmmFim* task = getTaskByID(id); TaskAmmFim* task = getTaskByID(id);
@@ -181,86 +191,7 @@ void FIMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current,
} }
} }
void FIMtasksWidget::loadFIMtasksFromXML(QByteArray array) #ifdef OLD_FILL
{
deleteAllTaskAmmFim();
QDomDocument docTasksDOM;
docTasksDOM.setContent(array);
QDomElement RRJTasksElement = docTasksDOM.firstChildElement("RRJTasks");
if(RRJTasksElement.isNull())
return;
QDomElement taskElement = RRJTasksElement.firstChildElement();
if(taskElement.isNull())
return;
do
{/*task*/
QString name = taskElement.nodeName();
QDomNamedNodeMap nodeMap = taskElement.attributes();
if(name == "task")
{
TaskAmmFim* task = nullptr;
task = new TaskAmmFim();
task->initialize(/*nodeMap.namedItem("id").nodeValue().toInt()*/ TaskAmmFim::lastID++,
nodeMap.namedItem("type").nodeValue(),
nodeMap.namedItem("title").nodeValue(),
nodeMap.namedItem("status").nodeValue(),
nodeMap.namedItem("created").nodeValue(),
nodeMap.namedItem("changed").nodeValue());
QDomElement malfunctionElement = taskElement.firstChildElement();
if(!malfunctionElement.isNull())
{
do
{/*malfunction*/
QString name = malfunctionElement.nodeName();
QDomNamedNodeMap nodeMap = malfunctionElement.attributes();
if(name == "malfunction")
{
Malfunction malfunction;
malfunction.initialize(nodeMap.namedItem("dmCode").nodeValue(),
nodeMap.namedItem("num").nodeValue(),
nodeMap.namedItem("description").nodeValue());
QDomElement signElement = malfunctionElement.firstChildElement();
if(!signElement.isNull())
{
do
{/*malfunctionSign*/
QString name = signElement.nodeName();
QDomNamedNodeMap nodeMap = signElement.attributes();
if(name == "malfunctionSign")
{
MalfunctionSign sign;
sign.initialize(nodeMap.namedItem("type").nodeValue().toInt(),
nodeMap.namedItem("description").nodeValue());
malfunction.addMalfunctionSign(sign);
}
}while(! (signElement = signElement.nextSiblingElement()).isNull());
}
task->addMalfunction(malfunction);
}
}while(! (malfunctionElement = malfunctionElement.nextSiblingElement()).isNull());
}
listTaskAmmFim.append(task);
}
}while (! (taskElement = taskElement.nextSiblingElement()).isNull());
return;
}
void FIMtasksWidget::fillTree() void FIMtasksWidget::fillTree()
{ {
//Обновление дерева //Обновление дерева
@@ -351,6 +282,7 @@ void FIMtasksWidget::fillTree()
} }
} }
/*
void FIMtasksWidget::prepareListTasksForTrainee(QList<TaskAmmFim> listTask) void FIMtasksWidget::prepareListTasksForTrainee(QList<TaskAmmFim> listTask)
{ {
deleteAllTaskAmmFim(); deleteAllTaskAmmFim();
@@ -363,31 +295,9 @@ void FIMtasksWidget::prepareListTasksForTrainee(QList<TaskAmmFim> listTask)
listTaskAmmFim.append(newTask); listTaskAmmFim.append(newTask);
} }
} }
*/
#endif
void FIMtasksWidget::preparationTreeWidget()
{
treeWidget->setColumnCount(clmn_count);
reSetHeadTreeWidget();
if(type == TypeList::listCommon || type == TypeList::listOneTask)
{
treeWidget->setColumnHidden(ColumnsTree::clmn_ID, true);
treeWidget->setColumnHidden(ColumnsTree::clmn_status, true);
}
}
void FIMtasksWidget::reSetHeadTreeWidget()
{
QStringList listHeaders;
if(type == TypeList::listForTrainee)
listHeaders = QStringList{tr("Task FIM"), tr("ID"), tr("Status")};
else
listHeaders = QStringList{tr("Title"), tr("ID"), tr("Status")};
treeWidget->setHeaderLabels(listHeaders);
}
void FIMtasksWidget::slot_NeedUpdateUI() void FIMtasksWidget::slot_NeedUpdateUI()
{ {
@@ -410,15 +320,16 @@ void FIMtasksWidget::slot_traineeSelected(QString login)
void FIMtasksWidget::slot_UpdateTasksFIMforTrainee(int trainee_id) void FIMtasksWidget::slot_UpdateTasksFIMforTrainee(int trainee_id)
{ {
qDebug() << "SlotUpdateTasksUI" << QThread::currentThreadId(); qDebug() << "slot_UpdateTasksFIMforTrainee" << QThread::currentThreadId();
if(type == TypeList::listForTrainee) if(type == TypeList::listForTrainee)
{ {
if(idTraineeSelected == trainee_id) if(idTraineeSelected == trainee_id)
{ {
QList<TaskAmmFim> listTask = connectorToServer->getListTasksFIMforTrainee(trainee_id); QList<TaskAmmFim> listTask = connectorToServer->getListTasksFIMforTrainee(trainee_id);
prepareListTasksForTrainee(listTask); emit signal_prepareFIMListItemsForTrainee(listTask, &listTaskAmmFim);
fillTree(); //prepareListTasksForTrainee(listTask);
waitAnimationWidget->hideWithStop(); //fillTree();
//waitAnimationWidget->hideWithStop();
} }
} }
} }
@@ -430,11 +341,27 @@ void FIMtasksWidget::loadTasksFIM()
waitAnimationWidget->showWithPlay(); waitAnimationWidget->showWithPlay();
QByteArray array = connectorToServer->getListTaskFimArray(); QByteArray arrayFIM = connectorToServer->getListTaskFimArray();
loadFIMtasksFromXML(array);
//loadFIMtasksFromXML(arrayFIM);
//собственно обновление дерева //собственно обновление дерева
fillTree(); //fillTree();
//waitAnimationWidget->hideWithStop();
emit signal_prepareFIMListItems(arrayFIM, &listTaskAmmFim);
}
void FIMtasksWidget::slot_FIMlistItemsReady(QList<QTreeWidgetItem *> listItems)
{
//Обновление дерева
treeWidget->clear();
for(QTreeWidgetItem * item : listItems)
treeWidget->addTopLevelItem(item);
QTreeWidgetItem * item = treeWidget->topLevelItem(0);
if(item != nullptr)
treeWidget->setCurrentItem(item);
waitAnimationWidget->hideWithStop(); waitAnimationWidget->hideWithStop();
} }
@@ -451,26 +378,29 @@ TaskAmmFim* FIMtasksWidget::getTaskByID(int id)
return nullptr; return nullptr;
} }
void FIMtasksWidget::deleteAllTaskAmmFim() void FIMtasksWidget::preparationTreeWidget()
{ {
if(type == TypeList::listOneTask) treeWidget->setColumnCount(clmnFIM_count);
return;
for(TaskAmmFim* task: listTaskAmmFim) reSetHeadTreeWidget();
delete task;
listTaskAmmFim.clear(); if(type == TypeList::listCommon || type == TypeList::listOneTask)
{
treeWidget->setColumnHidden(ColumnsTreeFIM::clmnFIM_ID, true);
treeWidget->setColumnHidden(ColumnsTreeFIM::clmnFIM_status, true);
}
} }
void FIMtasksWidget::updateTaskItem(QTreeWidgetItem *itemTask) void FIMtasksWidget::reSetHeadTreeWidget()
{ {
for (int i = 0; i < itemTask->childCount(); i++) QStringList listHeaders;
{
QTreeWidgetItem* itemMalfunction = itemTask->child(i); if(type == TypeList::listForTrainee)
itemMalfunction->setCheckState(0, Qt::Checked); listHeaders = QStringList{tr("Task FIM"), tr("ID"), tr("Status")};
itemMalfunction->setExpanded(false); else
} listHeaders = QStringList{tr("Title"), tr("ID"), tr("Status")};
itemTask->setExpanded(false);
treeWidget->setHeaderLabels(listHeaders);
} }
void FIMtasksWidget::on_btnUpdateTasks_clicked() void FIMtasksWidget::on_btnUpdateTasks_clicked()
@@ -485,7 +415,7 @@ void FIMtasksWidget::assignTaskFIMtoTrainee()
if(current == nullptr) if(current == nullptr)
return; return;
int id = current->text(ColumnsTree::clmn_ID).toInt(); int id = current->text(ColumnsTreeFIM::clmnFIM_ID).toInt();
TaskAmmFim* task = getTaskByID(id); TaskAmmFim* task = getTaskByID(id);
@@ -510,7 +440,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); updateTaskItem(current); //TODO ?
} }
} }
@@ -524,7 +454,7 @@ void FIMtasksWidget::on_btnDelete_clicked()
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбрана задача {//Выбрана задача
int id = treeItemCurrent->text(ColumnsTree::clmn_ID).toInt(); int id = treeItemCurrent->text(ColumnsTreeFIM::clmnFIM_ID).toInt();
if(QMessageBox::warning(this, tr("Attention!"), tr("The deletion will be irrevocable.\nDelete it anyway?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok) if(QMessageBox::warning(this, tr("Attention!"), tr("The deletion will be irrevocable.\nDelete it anyway?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
{ {
@@ -544,7 +474,7 @@ void FIMtasksWidget::on_btnCheck_clicked()
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбрана задача {//Выбрана задача
int id = treeItemCurrent->text(ColumnsTree::clmn_ID).toInt(); int id = treeItemCurrent->text(ColumnsTreeFIM::clmnFIM_ID).toInt();
TaskAmmFim* task = getTaskByID(id); TaskAmmFim* task = getTaskByID(id);
@@ -568,3 +498,16 @@ void FIMtasksWidget::on_btnAssignTask_clicked()
if(QMessageBox::question(this, tr("New task"), tr("Assign this task?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok) if(QMessageBox::question(this, tr("New task"), tr("Assign this task?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
assignTaskFIMtoTrainee(); assignTaskFIMtoTrainee();
} }
void FIMtasksWidget::updateTaskItem(QTreeWidgetItem *itemTask)
{
for (int i = 0; i < itemTask->childCount(); i++)
{
QTreeWidgetItem* itemMalfunction = itemTask->child(i);
itemMalfunction->setCheckState(0, Qt::Checked);
itemMalfunction->setExpanded(false);
}
itemTask->setExpanded(false);
}

View File

@@ -5,6 +5,7 @@
#include <QTreeWidget> #include <QTreeWidget>
#include "tasksAmmFim.h" #include "tasksAmmFim.h"
#include "connectortoserver.h" #include "connectortoserver.h"
#include "taskTreePreparation.h"
namespace Ui { namespace Ui {
class FIMtasksWidget; class FIMtasksWidget;
@@ -23,12 +24,7 @@ public:
}; };
private: private:
enum ColumnsTree{
clmn_Title = 0,
clmn_ID,
clmn_status,
clmn_count
};
public: public:
explicit FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList type, QWidget *parent = nullptr); explicit FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList type, QWidget *parent = nullptr);
@@ -36,8 +32,7 @@ public:
public: public:
void deactivate(); void deactivate();
void setOneTaskFim(TaskAmmFim* task); //FIM
void setOneTaskFim(TaskAmmFim* task);
public: public:
void resizeEvent(QResizeEvent *event) override; void resizeEvent(QResizeEvent *event) override;
@@ -47,11 +42,8 @@ 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_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();
public Q_SLOTS: public Q_SLOTS:
@@ -64,20 +56,26 @@ public Q_SLOTS:
private: private:
TaskAmmFim* getTaskByID(int id); TaskAmmFim* getTaskByID(int id);
void loadFIMtasksFromXML(QByteArray array);
void fillTree();
void prepareListTasksForTrainee(QList<TaskAmmFim> listTask);
void preparationTreeWidget(); void preparationTreeWidget();
void reSetHeadTreeWidget(); void reSetHeadTreeWidget();
void loadTasksFIM(); void loadTasksFIM();
void assignTaskFIMtoTrainee();
void deleteAllTaskAmmFim();
/*
void fillTree();
void prepareListTasksForTrainee(QList<TaskAmmFim> listTask);
*/
void updateTaskItem(QTreeWidgetItem *itemTask); void updateTaskItem(QTreeWidgetItem *itemTask);
void assignTaskFIMtoTrainee();
Q_SIGNALS:
void signal_prepareFIMListItems(QByteArray array, QList<TaskAmmFim*>* listTaskAmmFim);
void signal_prepareFIMListItemsForTrainee(QList<TaskAmmFim> listTask, QList<TaskAmmFim*>* listTaskAmmFim);
public Q_SLOTS:
void slot_FIMlistItemsReady(QList<QTreeWidgetItem*> listItems);
private: private:
Ui::FIMtasksWidget *ui; Ui::FIMtasksWidget *ui;
@@ -86,13 +84,15 @@ private:
TypeList type; TypeList type;
private: private:
QString userName;
QList<TaskAmmFim*> listTaskAmmFim; QList<TaskAmmFim*> listTaskAmmFim;
QString loginTraineeSelected; QString loginTraineeSelected;
int idTraineeSelected; int idTraineeSelected;
QThread* threadAnimation; QThread* threadPreparation;
TaskTreePreparation* taskTreePreparation;
WaitAnimationWidget *waitAnimationWidget; WaitAnimationWidget *waitAnimationWidget;
QString userName; //FIM
}; };
#endif // FIMTASKSWIDGET_H #endif // FIMTASKSWIDGET_H

View File

@@ -5,7 +5,8 @@
TaskTreePreparation::TaskTreePreparation(QObject *parent) : TaskTreePreparation::TaskTreePreparation(QObject *parent) :
QObject(parent), QObject(parent),
listAllModules(nullptr), listAllModulesAMM(nullptr),
listTaskAmmFim(nullptr),
flagStop(false) flagStop(false)
{ {
qDebug() << "TaskTreePreparation init thread ID " << QThread::currentThreadId(); qDebug() << "TaskTreePreparation init thread ID " << QThread::currentThreadId();
@@ -13,7 +14,7 @@ TaskTreePreparation::TaskTreePreparation(QObject *parent) :
TaskTreePreparation::~TaskTreePreparation() TaskTreePreparation::~TaskTreePreparation()
{ {
deleteAllModuls(); deleteAllModulsAMM();
} }
void TaskTreePreparation::stopParser() void TaskTreePreparation::stopParser()
@@ -21,7 +22,7 @@ void TaskTreePreparation::stopParser()
flagStop = true; flagStop = true;
} }
QTreeWidgetItem *TaskTreePreparation::addModuleToTreeWidget(Module *module, bool flOnlyActive, QTreeWidgetItem *parentItem) QTreeWidgetItem *TaskTreePreparation::addModuleToTreeWidgetAMM(Module *module, bool flOnlyActive, QTreeWidgetItem *parentItem)
{ {
QTreeWidgetItem* itemModule = nullptr; QTreeWidgetItem* itemModule = nullptr;
@@ -48,7 +49,7 @@ QTreeWidgetItem *TaskTreePreparation::addModuleToTreeWidget(Module *module, bool
for(Module* module : PMmodul->getListChildModules()) for(Module* module : PMmodul->getListChildModules())
{ {
addModuleToTreeWidget(module, flOnlyActive, itemModule); addModuleToTreeWidgetAMM(module, flOnlyActive, itemModule);
} }
} }
else else
@@ -62,9 +63,9 @@ QTreeWidgetItem *TaskTreePreparation::addModuleToTreeWidget(Module *module, bool
itemModule->setIcon(0, QIcon(":/resources/icons/procedure.png")); itemModule->setIcon(0, QIcon(":/resources/icons/procedure.png"));
} }
itemModule->setText(ColumnsTree::clmn_PMorDM, text); itemModule->setText(ColumnsTreeAMM::clmnAMM_PMorDM, text);
itemModule->setText(ColumnsTree::clmn_code, code); itemModule->setText(ColumnsTreeAMM::clmnAMM_code, code);
itemModule->setText(ColumnsTree::clmn_ID, ID); itemModule->setText(ColumnsTreeAMM::clmnAMM_ID, ID);
itemModule->setToolTip(0, text); itemModule->setToolTip(0, text);
return itemModule; return itemModule;
@@ -72,7 +73,7 @@ QTreeWidgetItem *TaskTreePreparation::addModuleToTreeWidget(Module *module, bool
void TaskTreePreparation::loadAMMtasksFromXML(QByteArray array) void TaskTreePreparation::loadAMMtasksFromXML(QByteArray array)
{ {
deleteAllModuls(); deleteAllModulsAMM();
QDomDocument docTasksDOM; QDomDocument docTasksDOM;
@@ -82,25 +83,117 @@ void TaskTreePreparation::loadAMMtasksFromXML(QByteArray array)
if(manifestElement.isNull()) if(manifestElement.isNull())
return; return;
domElementParser(manifestElement, nullptr); domElementParserAMM(manifestElement, nullptr);
} }
void TaskTreePreparation::deleteAllModuls() void TaskTreePreparation::loadFIMtasksFromXML(QByteArray array)
{ {
if(listAllModules == nullptr) deleteAllTaskAmmFim();
QDomDocument docTasksDOM;
docTasksDOM.setContent(array);
QDomElement RRJTasksElement = docTasksDOM.firstChildElement("RRJTasks");
if(RRJTasksElement.isNull())
return; return;
for(Module* module: *listAllModules) QDomElement taskElement = RRJTasksElement.firstChildElement();
if(taskElement.isNull())
return;
do
{/*task*/
QString name = taskElement.nodeName();
QDomNamedNodeMap nodeMap = taskElement.attributes();
if(name == "task")
{
TaskAmmFim* task = nullptr;
task = new TaskAmmFim();
task->initialize(/*nodeMap.namedItem("id").nodeValue().toInt()*/ TaskAmmFim::lastID++,
nodeMap.namedItem("type").nodeValue(),
nodeMap.namedItem("title").nodeValue(),
nodeMap.namedItem("status").nodeValue(),
nodeMap.namedItem("created").nodeValue(),
nodeMap.namedItem("changed").nodeValue());
QDomElement malfunctionElement = taskElement.firstChildElement();
if(!malfunctionElement.isNull())
{
do
{/*malfunction*/
QString name = malfunctionElement.nodeName();
QDomNamedNodeMap nodeMap = malfunctionElement.attributes();
if(name == "malfunction")
{
Malfunction malfunction;
malfunction.initialize(nodeMap.namedItem("dmCode").nodeValue(),
nodeMap.namedItem("num").nodeValue(),
nodeMap.namedItem("description").nodeValue());
QDomElement signElement = malfunctionElement.firstChildElement();
if(!signElement.isNull())
{
do
{/*malfunctionSign*/
QString name = signElement.nodeName();
QDomNamedNodeMap nodeMap = signElement.attributes();
if(name == "malfunctionSign")
{
MalfunctionSign sign;
sign.initialize(nodeMap.namedItem("type").nodeValue().toInt(),
nodeMap.namedItem("description").nodeValue());
malfunction.addMalfunctionSign(sign);
}
}while(! (signElement = signElement.nextSiblingElement()).isNull());
}
task->addMalfunction(malfunction);
}
}while(! (malfunctionElement = malfunctionElement.nextSiblingElement()).isNull());
}
listTaskAmmFim->append(task);
}
}while (! (taskElement = taskElement.nextSiblingElement()).isNull());
return;
}
void TaskTreePreparation::deleteAllTaskAmmFim()
{
//if(type == TypeList::listOneTask)
//return;
for(TaskAmmFim* task: *listTaskAmmFim)
delete task;
listTaskAmmFim->clear();
}
void TaskTreePreparation::deleteAllModulsAMM()
{
if(listAllModulesAMM == nullptr)
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);
} }
listAllModules->clear(); listAllModulesAMM->clear();
} }
void TaskTreePreparation::domElementParser(QDomElement element, Module* moduleParent) void TaskTreePreparation::domElementParserAMM(QDomElement element, Module* moduleParent)
{ {
QString name; QString name;
@@ -200,38 +293,39 @@ void TaskTreePreparation::domElementParser(QDomElement element, Module* modulePa
} }
domElementParser(childElement, module); domElementParserAMM(childElement, module);
if(moduleParent == nullptr) if(moduleParent == nullptr)
listAllModules->append(module); listAllModulesAMM->append(module);
}while (! (childElement = childElement.nextSiblingElement()).isNull()); }while (! (childElement = childElement.nextSiblingElement()).isNull());
} }
void TaskTreePreparation::slot_prepareListItems(QByteArray array, QList<Module*>* listAllModules, bool flOnlyActive)
{
qDebug() << "TaskTreePreparation::slot_prepareListItems thread ID " << QThread::currentThreadId();
this->listAllModules = listAllModules; void TaskTreePreparation::slot_prepareAMMListItems(QByteArray array, QList<Module*>* listAllModules, bool flOnlyActive)
{
qDebug() << "TaskTreePreparation::slot_prepareAMMListItems thread ID " << QThread::currentThreadId();
this->listAllModulesAMM = listAllModules;
loadAMMtasksFromXML(array); loadAMMtasksFromXML(array);
listItems.clear(); listItems.clear();
for(Module* module : *this->listAllModules) for(Module* module : *this->listAllModulesAMM)
{ {
QTreeWidgetItem* item = addModuleToTreeWidget(module, flOnlyActive); QTreeWidgetItem* item = addModuleToTreeWidgetAMM(module, flOnlyActive);
listItems.append(item); listItems.append(item);
} }
Q_EMIT signal_listItemsReady(listItems); Q_EMIT signal_listAMMItemsReady(listItems);
} }
void TaskTreePreparation::slot_prepareListItemsForTrainee(QList<TaskAmmFim> listTask, QList<Module *> *listAllModules) void TaskTreePreparation::slot_prepareAMMListItemsForTrainee(QList<TaskAmmFim> listTask, QList<Module *> *listAllModules)
{ {
qDebug() << "TaskTreePreparation::slot_prepareListItemsForTrainee thread ID " << QThread::currentThreadId(); qDebug() << "TaskTreePreparation::slot_prepareAMMListItemsForTrainee thread ID " << QThread::currentThreadId();
this->listAllModules = listAllModules; this->listAllModulesAMM = listAllModules;
//loadAMMtasksFromList(listTask); //loadAMMtasksFromList(listTask);
@@ -249,29 +343,29 @@ void TaskTreePreparation::slot_prepareListItemsForTrainee(QList<TaskAmmFim> list
item = new QTreeWidgetItem(); item = new QTreeWidgetItem();
item->setIcon(0, QIcon(":/resources/icons/procedure.png")); item->setIcon(0, QIcon(":/resources/icons/procedure.png"));
item->setText(ColumnsTree::clmn_PMorDM, text); item->setText(ColumnsTreeAMM::clmnAMM_PMorDM, text);
item->setText(ColumnsTree::clmn_code, code); item->setText(ColumnsTreeAMM::clmnAMM_code, code);
item->setText(ColumnsTree::clmn_ID, ID); item->setText(ColumnsTreeAMM::clmnAMM_ID, ID);
if(status == "completed") if(status == "completed")
{ {
item->setText(ColumnsTree::clmn_status, tr("completed")); item->setText(ColumnsTreeAMM::clmnAMM_status, tr("completed"));
item->setIcon(ColumnsTree::clmn_status, QIcon(QStringLiteral(":/resources/icons/circleGreen.png"))); item->setIcon(ColumnsTreeAMM::clmnAMM_status, QIcon(QStringLiteral(":/resources/icons/circleGreen.png")));
} }
else if(status == "failed") else if(status == "failed")
{ {
item->setText(ColumnsTree::clmn_status, tr("failed")); item->setText(ColumnsTreeAMM::clmnAMM_status, tr("failed"));
item->setIcon(ColumnsTree::clmn_status, QIcon(QStringLiteral(":/resources/icons/circleRed.png"))); item->setIcon(ColumnsTreeAMM::clmnAMM_status, QIcon(QStringLiteral(":/resources/icons/circleRed.png")));
} }
else if(status == "checkup") else if(status == "checkup")
{ {
item->setText(ColumnsTree::clmn_status, tr("checkup")); item->setText(ColumnsTreeAMM::clmnAMM_status, tr("checkup"));
item->setIcon(ColumnsTree::clmn_status, QIcon(QStringLiteral(":/resources/icons/circleYellow.png"))); item->setIcon(ColumnsTreeAMM::clmnAMM_status, QIcon(QStringLiteral(":/resources/icons/circleYellow.png")));
} }
else else
{ {
item->setText(ColumnsTree::clmn_status, tr("new")); item->setText(ColumnsTreeAMM::clmnAMM_status, tr("new"));
item->setIcon(ColumnsTree::clmn_status, QIcon(QStringLiteral(":/resources/icons/circleGray.png"))); item->setIcon(ColumnsTreeAMM::clmnAMM_status, QIcon(QStringLiteral(":/resources/icons/circleGray.png")));
} }
item->setToolTip(0, text); item->setToolTip(0, text);
@@ -279,5 +373,182 @@ void TaskTreePreparation::slot_prepareListItemsForTrainee(QList<TaskAmmFim> list
listItems.append(item); listItems.append(item);
} }
Q_EMIT signal_listItemsReady(listItems); Q_EMIT signal_listAMMItemsReady(listItems);
}
void TaskTreePreparation::slot_prepareFIMListItems(QByteArray array, QList<TaskAmmFim *> *listTaskAmmFim)
{
qDebug() << "TaskTreePreparation::slot_prepareFIMListItems thread ID " << QThread::currentThreadId();
this->listTaskAmmFim = listTaskAmmFim;
loadFIMtasksFromXML(array);
listItems.clear();
for(TaskAmmFim* taskPtr : *this->listTaskAmmFim)
{/*Задачи*/
TaskAmmFim task = *taskPtr;
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) //TODO
{
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);
}
}
listItems.append(itemTask);
}
Q_EMIT signal_listFIMItemsReady(listItems);
}
void TaskTreePreparation::slot_prepareFIMListItemsForTrainee(QList<TaskAmmFim> listTask, QList<TaskAmmFim *> *listTaskAmmFim)
{
qDebug() << "TaskTreePreparation::slot_prepareFIMListItemsForTrainee thread ID " << QThread::currentThreadId();
this->listTaskAmmFim = listTaskAmmFim;
listItems.clear();
for(TaskAmmFim task : listTask)
{/*Задачи*/
//TaskAmmFim* task = listTaskAmmFim.at(i);
TaskAmmFim* taskNew = nullptr;
taskNew = new TaskAmmFim();
*taskNew = task;
this->listTaskAmmFim->append(taskNew);
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) //TODO
{
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);
}
}
listItems.append(itemTask);
}
Q_EMIT signal_listFIMItemsReady(listItems);
} }

View File

@@ -7,14 +7,22 @@
#include "module.h" #include "module.h"
#include "tasksAmmFim.h" #include "tasksAmmFim.h"
enum ColumnsTree{ enum ColumnsTreeAMM{
clmn_PMorDM = 0, clmnAMM_PMorDM = 0,
clmn_code, clmnAMM_code,
clmn_ID, clmnAMM_ID,
clmn_status, clmnAMM_status,
clmn_count clmnAMM_count
}; };
enum ColumnsTreeFIM{
clmnFIM_Title = 0,
clmnFIM_ID,
clmnFIM_status,
clmnFIM_count
};
class TaskTreePreparation : public QObject class TaskTreePreparation : public QObject
{ {
Q_OBJECT Q_OBJECT
@@ -26,21 +34,32 @@ public:
void stopParser(); void stopParser();
private: private:
QTreeWidgetItem* addModuleToTreeWidget(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);
void domElementParser(QDomElement element, Module* moduleParent); void domElementParserAMM(QDomElement element, Module* moduleParent);
void deleteAllModuls(); void deleteAllModulsAMM();
void loadFIMtasksFromXML(QByteArray array);
void deleteAllTaskAmmFim();
public Q_SLOTS: public Q_SLOTS:
void slot_prepareListItems(QByteArray array, QList<Module*>* listAllModules, bool flOnlyActive); void slot_prepareAMMListItems(QByteArray array, QList<Module*>* listAllModulesAMM, bool flOnlyActive);
void slot_prepareListItemsForTrainee(QList<TaskAmmFim> listTask, QList<Module*>* listAllModules); void slot_prepareAMMListItemsForTrainee(QList<TaskAmmFim> listTask, QList<Module*>* listAllModulesAMM);
void slot_prepareFIMListItems(QByteArray array, QList<TaskAmmFim*>* listTaskAmmFim);
void slot_prepareFIMListItemsForTrainee(QList<TaskAmmFim> listTask, QList<TaskAmmFim*>* listTaskAmmFim);
Q_SIGNALS: Q_SIGNALS:
void signal_listItemsReady(QList<QTreeWidgetItem*> listItems); void signal_listAMMItemsReady(QList<QTreeWidgetItem*> listItemsAMM);
void signal_listFIMItemsReady(QList<QTreeWidgetItem*> listItemsFIM);
private: private:
QList<QTreeWidgetItem*> listItems; QList<QTreeWidgetItem*> listItems;
QList<Module*>* listAllModules;
QList<Module*>* listAllModulesAMM;
QList<TaskAmmFim*>* listTaskAmmFim;
bool flagStop; bool flagStop;
}; };