From 389a37a2e4f126f3aa1b4d89b2cf7a9577d864ea Mon Sep 17 00:00:00 2001 From: krivoshein Date: Tue, 1 Jul 2025 10:37:59 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D1=8B=D0=BD=D0=B5=D1=81=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=B4=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=D0=BA=D1=83=20=D0=B4=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B2=D0=B0=20FIM=20=D0=B2=20=D0=BE=D1=82=D0=B4?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=BF=D0=BE=D1=82=D0=BE?= =?UTF-8?q?=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../instructorsandtraineeswidget.cpp | 4 +- .../tasks/ammtaskswidget.cpp | 63 ++---- InstructorsAndTrainees/tasks/ammtaskswidget.h | 28 +-- .../tasks/dialogchecktask.cpp | 2 +- .../tasks/fimtaskswidget.cpp | 198 ++++-------------- InstructorsAndTrainees/tasks/fimtaskswidget.h | 35 +--- .../tasks/tasktreepreparation.cpp | 114 +++++----- .../tasks/tasktreepreparation.h | 31 ++- .../trainees/viewertrainees.cpp | 4 +- 9 files changed, 161 insertions(+), 318 deletions(-) diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp index 89e8bbf..d2d81f5 100644 --- a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp +++ b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp @@ -63,8 +63,8 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) : connect(connectorToServer,&ConnectorToServer::signal_ConnectedToServer,this,&InstructorsAndTraineesWidget::slot_ConnectedToServer); - ammTasksWidget = new AMMtasksWidget(connectorToServer, AMMtasksWidget::TypeList::listCommon, this); - fimTasksWidget = new FIMtasksWidget(connectorToServer, FIMtasksWidget::TypeList::listCommon, this); + ammTasksWidget = new AMMtasksWidget(connectorToServer, TypeListTreeAMMFIM::listCommon, this); + fimTasksWidget = new FIMtasksWidget(connectorToServer, TypeListTreeAMMFIM::listCommon, this); connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksFIM, fimTasksWidget, &FIMtasksWidget::slot_NeedUpdateUI); connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksAMM, ammTasksWidget, &AMMtasksWidget::slot_NeedUpdateUI); diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp index 8ad572d..5c77f88 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp @@ -7,7 +7,7 @@ #include "ammtaskswidget.h" #include "ui_ammtaskswidget.h" -AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeList type, QWidget *parent) : +AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTreeAMMFIM type, QWidget *parent) : QWidget(parent), ui(new Ui::AMMtasksWidget), connectorToServer(connectorToServer), @@ -32,13 +32,13 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty preparationTreeWidget(); threadPreparation = new QThread(); - taskTreePreparation = new TaskTreePreparation(); + taskTreePreparation = new TaskAMMFIMTreePreparation(type); taskTreePreparation->moveToThread(threadPreparation); threadPreparation->start(); threadPreparation->setPriority(QThread::HighestPriority); - 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); + connect(this, &AMMtasksWidget::signal_prepareAMMListItems, taskTreePreparation, &TaskAMMFIMTreePreparation::slot_prepareAMMListItems); + connect(this, &AMMtasksWidget::signal_prepareAMMListItemsForTrainee, taskTreePreparation, &TaskAMMFIMTreePreparation::slot_prepareAMMListItemsForTrainee); + connect(taskTreePreparation, &TaskAMMFIMTreePreparation::signal_listAMMItemsReady, this, &AMMtasksWidget::slot_AMMlistItemsReady); waitAnimationWidget = new WaitAnimationWidget; QMovie *movie = new QMovie(":/resources/icons/762.gif"); @@ -54,7 +54,7 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty ui->btnAssignTask->setObjectName("btnAssignTask"); ui->btnAssignTask->setEnabled(false); - if(type == TypeList::listCommon) + if(type == TypeListTreeAMMFIM::listCommon) { ui->horizontalLayout_3->addWidget(ui->btnAssignTask); ui->horizontalLayout_3->addWidget(ui->btnOnlyActive); @@ -85,9 +85,9 @@ AMMtasksWidget::~AMMtasksWidget() delete threadPreparation; - delete taskTreePreparation; + delete taskTreePreparation; delete waitAnimationWidget; - delete treeWidget; + delete treeWidget; delete ui; } @@ -113,7 +113,7 @@ void AMMtasksWidget::resizeEvent(QResizeEvent *event) treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_status, 110); int widthPMorDM; - if(type == TypeList::listCommon) + if(type == TypeListTreeAMMFIM::listCommon) widthPMorDM = width - (250 + 10); else widthPMorDM = width - (410 + 10); @@ -130,11 +130,11 @@ void AMMtasksWidget::changeEvent(QEvent *event) reSetHeadTreeWidget(); - if(type == TypeList::listCommon) + if(type == TypeListTreeAMMFIM::listCommon) { //slot_NeedUpdateUI(); } - else if(type == TypeList::listForTrainee) + else if(type == TypeListTreeAMMFIM::listForTrainee) if(idTraineeSelected) slot_UpdateTasksAMMforTrainee(idTraineeSelected); } @@ -154,7 +154,7 @@ void AMMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, int id = current->text(ColumnsTreeAMM::clmnAMM_ID).toInt(); - Module* module = searchModuleByID(id); + Module* module = taskTreePreparation->getModuleAMMbyID(id); if(module) { @@ -196,7 +196,7 @@ void AMMtasksWidget::slot_traineeSelected(QString login) loginTraineeSelected = login; idTraineeSelected = connectorToServer->getIdTraineeByLogin(loginTraineeSelected); - if(type == TypeList::listForTrainee) + if(type == TypeListTreeAMMFIM::listForTrainee) { waitAnimationWidget->showWithPlay(); 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) { qDebug() << "slot_UpdateTasksAMMforTrainee" << QThread::currentThreadId(); - if(type == TypeList::listForTrainee) + if(type == TypeListTreeAMMFIM::listForTrainee) { if(idTraineeSelected == trainee_id) { QList listTask = connectorToServer->getListTasksAMMforTrainee(trainee_id); - signal_prepareAMMListItemsForTrainee(listTask, &listAllModules); + signal_prepareAMMListItemsForTrainee(listTask); } } } @@ -223,10 +223,12 @@ void AMMtasksWidget::loadTasksAMM(bool flRequestFromDB) waitAnimationWidget->showWithPlay(); - if(flRequestFromDB) - /*QByteArray array*/arrayAMM = connectorToServer->getListTaskAmmArray(); + QByteArray arrayAMM; - emit signal_prepareAMMListItems(/*array*/arrayAMM, &listAllModules, flOnlyActive); + if(flRequestFromDB) + arrayAMM = connectorToServer->getListTaskAmmArray(); + + emit signal_prepareAMMListItems(arrayAMM, flOnlyActive); } void AMMtasksWidget::slot_AMMlistItemsReady(QList listItems) @@ -246,27 +248,13 @@ void AMMtasksWidget::slot_AMMlistItemsReady(QList listItems) 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() { treeWidget->setColumnCount(clmnAMM_count); reSetHeadTreeWidget(); - if(type == TypeList::listCommon) + if(type == TypeListTreeAMMFIM::listCommon) { treeWidget->setColumnHidden(ColumnsTreeAMM::clmnAMM_ID, true); treeWidget->setColumnHidden(ColumnsTreeAMM::clmnAMM_status, true); @@ -277,7 +265,7 @@ void AMMtasksWidget::reSetHeadTreeWidget() { QStringList listHeaders; - if(type == TypeList::listForTrainee) + if(type == TypeListTreeAMMFIM::listForTrainee) listHeaders = QStringList{tr("Task AMM"), tr("DM code"), tr("ID"), tr("Status")}; else listHeaders = QStringList{tr("PM/DM"), tr("Code"), tr("ID"), tr("Status")}; @@ -286,11 +274,6 @@ void AMMtasksWidget::reSetHeadTreeWidget() treeWidget->setHeaderLabels(listHeaders); } -void AMMtasksWidget::on_btnUpdateTasks_clicked() -{ - connectorToServer->sendQueryTasksXML("amm"); -} - void AMMtasksWidget::assignTaskAMMtoTrainee() { QTreeWidgetItem *current = treeWidget->currentItem(); @@ -300,7 +283,7 @@ void AMMtasksWidget::assignTaskAMMtoTrainee() int id = current->text(ColumnsTreeAMM::clmnAMM_ID).toInt(); - Module* module = searchModuleByID(id); + Module* module = taskTreePreparation->getModuleAMMbyID(id); if(module) { diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.h b/InstructorsAndTrainees/tasks/ammtaskswidget.h index 65beeb8..9419add 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.h +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.h @@ -6,7 +6,7 @@ #include #include "module.h" #include "connectortoserver.h" -#include "taskTreePreparation.h" +#include "tasktreepreparation.h" namespace Ui { class AMMtasksWidget; @@ -17,15 +17,7 @@ class AMMtasksWidget : public QWidget Q_OBJECT public: - enum TypeList - { - listCommon = 0, - listForTrainee - }; - - -public: - explicit AMMtasksWidget(ConnectorToServer* connectorToServer, TypeList type, QWidget *parent = nullptr); + explicit AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTreeAMMFIM type, QWidget *parent = nullptr); ~AMMtasksWidget(); public: @@ -38,7 +30,6 @@ protected: private Q_SLOTS: void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); - void on_btnUpdateTasks_clicked(); void on_btnDelete_clicked(); void on_btnCheck_clicked(); void on_btnAssignTask_clicked(); @@ -53,16 +44,15 @@ public Q_SLOTS: void slot_UpdateTasksAMMforTrainee(int trainee_id); -private: - Module* searchModuleByID(int id); +private: void preparationTreeWidget(); void reSetHeadTreeWidget(); void loadTasksAMM(bool flRequestFromDB = true); void assignTaskAMMtoTrainee(); Q_SIGNALS: - void signal_prepareAMMListItems(QByteArray array, QList* listAllModules, bool flOnlyActive); - void signal_prepareAMMListItemsForTrainee(QList listTask, QList* listAllModules); + void signal_prepareAMMListItems(QByteArray array, bool flOnlyActive); + void signal_prepareAMMListItemsForTrainee(QList listTask); public Q_SLOTS: void slot_AMMlistItemsReady(QList listItems); @@ -70,20 +60,16 @@ private: Ui::AMMtasksWidget *ui; ConnectorToServer* connectorToServer; QTreeWidget* treeWidget; - TypeList type; + TypeListTreeAMMFIM type; -private: - QList listAllModules; QString loginTraineeSelected; int idTraineeSelected; QThread* threadPreparation; - TaskTreePreparation* taskTreePreparation; + TaskAMMFIMTreePreparation* taskTreePreparation; WaitAnimationWidget *waitAnimationWidget; bool flOnlyActive; //AMM - - QByteArray arrayAMM; //AMM }; #endif // AMMTASKSWIDGET_H diff --git a/InstructorsAndTrainees/tasks/dialogchecktask.cpp b/InstructorsAndTrainees/tasks/dialogchecktask.cpp index b47f3fb..bdf1fff 100644 --- a/InstructorsAndTrainees/tasks/dialogchecktask.cpp +++ b/InstructorsAndTrainees/tasks/dialogchecktask.cpp @@ -9,7 +9,7 @@ DialogCheckTask::DialogCheckTask(ConnectorToServer* connectorToServer, QWidget * { ui->setupUi(this); - fimTasksWidget = new FIMtasksWidget(nullptr, FIMtasksWidget::TypeList::listOneTask, this); + fimTasksWidget = new FIMtasksWidget(nullptr, TypeListTreeAMMFIM::listOneTask, this); ui->verticalLayout_3->addWidget(fimTasksWidget); diff --git a/InstructorsAndTrainees/tasks/fimtaskswidget.cpp b/InstructorsAndTrainees/tasks/fimtaskswidget.cpp index a1dca3d..d202c3d 100644 --- a/InstructorsAndTrainees/tasks/fimtaskswidget.cpp +++ b/InstructorsAndTrainees/tasks/fimtaskswidget.cpp @@ -9,7 +9,7 @@ #include "tasksAmmFim.h" #include "dialogchecktask.h" -FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList type, QWidget *parent) : +FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeListTreeAMMFIM type, QWidget *parent) : QWidget(parent), ui(new Ui::FIMtasksWidget), connectorToServer(connectorToServer), @@ -34,13 +34,13 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty preparationTreeWidget(); threadPreparation = new QThread(); - taskTreePreparation = new TaskTreePreparation(); + taskTreePreparation = new TaskAMMFIMTreePreparation(type); 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); + connect(this, &FIMtasksWidget::signal_prepareFIMListItems, taskTreePreparation, &TaskAMMFIMTreePreparation::slot_prepareFIMListItems); + connect(this, &FIMtasksWidget::signal_prepareFIMListItemsForTrainee, taskTreePreparation, &TaskAMMFIMTreePreparation::slot_prepareFIMListItemsForTrainee); + connect(taskTreePreparation, &TaskAMMFIMTreePreparation::signal_listFIMItemsReady, this, &FIMtasksWidget::slot_FIMlistItemsReady); waitAnimationWidget = new WaitAnimationWidget; QMovie *movie = new QMovie(":/resources/icons/762.gif"); @@ -54,7 +54,7 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty ui->btnAssignTask->setObjectName("btnAssignTask"); ui->btnAssignTask->setEnabled(false); - if(type == TypeList::listCommon) + if(type == TypeListTreeAMMFIM::listCommon) { ui->horizontalLayout_3->addWidget(ui->btnAssignTask); ui->horizontalLayout_3->addWidget(ui->btnCheck); @@ -64,7 +64,7 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty ui->btnDelete->setVisible(false); ui->btnCheck->setVisible(false); } - else if(type == TypeList::listOneTask) + else if(type == TypeListTreeAMMFIM::listOneTask) { ui->btnDelete->setVisible(false); ui->btnCheck->setVisible(false); @@ -82,8 +82,6 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty FIMtasksWidget::~FIMtasksWidget() { - //deleteAllTaskAmmFim(); //TODO - waitAnimationWidget->hideWithStop(); taskTreePreparation->stopParser(); @@ -92,9 +90,9 @@ FIMtasksWidget::~FIMtasksWidget() delete threadPreparation; - delete taskTreePreparation; + delete taskTreePreparation; delete waitAnimationWidget; - delete treeWidget; + delete treeWidget; delete ui; } @@ -109,9 +107,9 @@ void FIMtasksWidget::deactivate() void FIMtasksWidget::setOneTaskFim(TaskAmmFim* task) { - listTaskAmmFim.append(task); - //fillTree(); - //TODO + QList listTask; + listTask.append(*task); + emit signal_prepareFIMListItemsForTrainee(listTask); } void FIMtasksWidget::resizeEvent(QResizeEvent *event) @@ -125,7 +123,7 @@ void FIMtasksWidget::resizeEvent(QResizeEvent *event) treeWidget->setColumnWidth(ColumnsTreeFIM::clmnFIM_status, 110); int widthTitle; - if(type == TypeList::listCommon) + if(type == TypeListTreeAMMFIM::listCommon) widthTitle = width - (0 + 10); else widthTitle = width - (160 + 10); @@ -142,14 +140,13 @@ void FIMtasksWidget::changeEvent(QEvent *event) reSetHeadTreeWidget(); - if(type == TypeList::listCommon) + if(type == TypeListTreeAMMFIM::listCommon) { //slot_NeedUpdateUI(); } - else if(type == TypeList::listForTrainee) + else if(type == TypeListTreeAMMFIM::listForTrainee) if(idTraineeSelected) slot_UpdateTasksFIMforTrainee(idTraineeSelected); - //fillTree(); } } @@ -169,7 +166,15 @@ void FIMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, {//Выбрана задача 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; @@ -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 listTask) -{ - deleteAllTaskAmmFim(); - - for(TaskAmmFim task : listTask) - { - TaskAmmFim* newTask = new TaskAmmFim(); - *newTask = task; - - listTaskAmmFim.append(newTask); - } -} -*/ -#endif - - void FIMtasksWidget::slot_NeedUpdateUI() { qDebug() << "FIMtasksWidget::slot_NeedUpdateUI thread ID " << QThread::currentThreadId(); @@ -311,7 +208,7 @@ void FIMtasksWidget::slot_traineeSelected(QString login) loginTraineeSelected = login; idTraineeSelected = connectorToServer->getIdTraineeByLogin(loginTraineeSelected); - if(type == TypeList::listForTrainee) + if(type == TypeListTreeAMMFIM::listForTrainee) { waitAnimationWidget->showWithPlay(); 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) { qDebug() << "slot_UpdateTasksFIMforTrainee" << QThread::currentThreadId(); - if(type == TypeList::listForTrainee) + if(type == TypeListTreeAMMFIM::listForTrainee) { if(idTraineeSelected == trainee_id) { QList listTask = connectorToServer->getListTasksFIMforTrainee(trainee_id); - emit signal_prepareFIMListItemsForTrainee(listTask, &listTaskAmmFim); - //prepareListTasksForTrainee(listTask); - //fillTree(); - //waitAnimationWidget->hideWithStop(); + emit signal_prepareFIMListItemsForTrainee(listTask); } } } @@ -343,12 +237,7 @@ void FIMtasksWidget::loadTasksFIM() QByteArray arrayFIM = connectorToServer->getListTaskFimArray(); - //loadFIMtasksFromXML(arrayFIM); - //собственно обновление дерева - //fillTree(); - //waitAnimationWidget->hideWithStop(); - - emit signal_prepareFIMListItems(arrayFIM, &listTaskAmmFim); + emit signal_prepareFIMListItems(arrayFIM); } void FIMtasksWidget::slot_FIMlistItemsReady(QList listItems) @@ -361,21 +250,13 @@ void FIMtasksWidget::slot_FIMlistItemsReady(QList listItems) QTreeWidgetItem * item = treeWidget->topLevelItem(0); if(item != nullptr) + { treeWidget->setCurrentItem(item); - - waitAnimationWidget->hideWithStop(); -} - -TaskAmmFim* FIMtasksWidget::getTaskByID(int id) -{ - for(int i = 0; i < listTaskAmmFim.count(); i++) - {/*Задачи*/ - TaskAmmFim* task = listTaskAmmFim.at(i); - if(task->id == id) - return task; + if(type == TypeListTreeAMMFIM::listOneTask) + treeWidget->expandAll(); } - return nullptr; + waitAnimationWidget->hideWithStop(); } void FIMtasksWidget::preparationTreeWidget() @@ -384,7 +265,7 @@ void FIMtasksWidget::preparationTreeWidget() 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_status, true); @@ -395,7 +276,7 @@ void FIMtasksWidget::reSetHeadTreeWidget() { QStringList listHeaders; - if(type == TypeList::listForTrainee) + if(type == TypeListTreeAMMFIM::listForTrainee) listHeaders = QStringList{tr("Task FIM"), tr("ID"), tr("Status")}; else listHeaders = QStringList{tr("Title"), tr("ID"), tr("Status")}; @@ -403,11 +284,6 @@ void FIMtasksWidget::reSetHeadTreeWidget() treeWidget->setHeaderLabels(listHeaders); } -void FIMtasksWidget::on_btnUpdateTasks_clicked() -{ - connectorToServer->sendQueryTasksXML("fim"); -} - void FIMtasksWidget::assignTaskFIMtoTrainee() { QTreeWidgetItem *current = treeWidget->currentItem(); @@ -417,7 +293,7 @@ void FIMtasksWidget::assignTaskFIMtoTrainee() int id = current->text(ColumnsTreeFIM::clmnFIM_ID).toInt(); - TaskAmmFim* task = getTaskByID(id); + TaskAmmFim* task = taskTreePreparation->getTaskFIMbyID(id); if(task) { @@ -440,7 +316,7 @@ void FIMtasksWidget::assignTaskFIMtoTrainee() 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(); - TaskAmmFim* task = getTaskByID(id); + TaskAmmFim* task = taskTreePreparation->getTaskFIMbyID(id); DialogCheckTask dlg(connectorToServer, this); diff --git a/InstructorsAndTrainees/tasks/fimtaskswidget.h b/InstructorsAndTrainees/tasks/fimtaskswidget.h index 33798d1..f185183 100644 --- a/InstructorsAndTrainees/tasks/fimtaskswidget.h +++ b/InstructorsAndTrainees/tasks/fimtaskswidget.h @@ -5,7 +5,7 @@ #include #include "tasksAmmFim.h" #include "connectortoserver.h" -#include "taskTreePreparation.h" +#include "tasktreepreparation.h" namespace Ui { class FIMtasksWidget; @@ -15,19 +15,11 @@ class FIMtasksWidget : public QWidget { Q_OBJECT -public: - enum TypeList - { - listCommon = 0, - listForTrainee, - listOneTask - }; - private: public: - explicit FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList type, QWidget *parent = nullptr); + explicit FIMtasksWidget(ConnectorToServer* connectorToServer, TypeListTreeAMMFIM type, QWidget *parent = nullptr); ~FIMtasksWidget(); public: @@ -41,7 +33,6 @@ protected: private Q_SLOTS: void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); - void on_btnUpdateTasks_clicked(); void on_btnDelete_clicked(); void on_btnCheck_clicked(); void on_btnAssignTask_clicked(); @@ -54,26 +45,16 @@ public Q_SLOTS: void slot_UpdateTasksFIMforTrainee(int trainee_id); -private: - TaskAmmFim* getTaskByID(int id); +private: void preparationTreeWidget(); void reSetHeadTreeWidget(); void loadTasksFIM(); void assignTaskFIMtoTrainee(); - - - /* - void fillTree(); - void prepareListTasksForTrainee(QList listTask); - */ - void updateTaskItem(QTreeWidgetItem *itemTask); - - Q_SIGNALS: - void signal_prepareFIMListItems(QByteArray array, QList* listTaskAmmFim); - void signal_prepareFIMListItemsForTrainee(QList listTask, QList* listTaskAmmFim); + void signal_prepareFIMListItems(QByteArray array); + void signal_prepareFIMListItemsForTrainee(QList listTask); public Q_SLOTS: void slot_FIMlistItemsReady(QList listItems); @@ -81,15 +62,13 @@ private: Ui::FIMtasksWidget *ui; ConnectorToServer* connectorToServer; QTreeWidget* treeWidget; - TypeList type; + TypeListTreeAMMFIM type; -private: - QList listTaskAmmFim; QString loginTraineeSelected; int idTraineeSelected; QThread* threadPreparation; - TaskTreePreparation* taskTreePreparation; + TaskAMMFIMTreePreparation* taskTreePreparation; WaitAnimationWidget *waitAnimationWidget; QString userName; //FIM diff --git a/InstructorsAndTrainees/tasks/tasktreepreparation.cpp b/InstructorsAndTrainees/tasks/tasktreepreparation.cpp index 524bf90..e86f688 100644 --- a/InstructorsAndTrainees/tasks/tasktreepreparation.cpp +++ b/InstructorsAndTrainees/tasks/tasktreepreparation.cpp @@ -3,26 +3,50 @@ #include "tasktreepreparation.h" -TaskTreePreparation::TaskTreePreparation(QObject *parent) : +TaskAMMFIMTreePreparation::TaskAMMFIMTreePreparation(TypeListTreeAMMFIM type, QObject *parent) : QObject(parent), - listAllModulesAMM(nullptr), - listTaskAmmFim(nullptr), - flagStop(false) + flagStop(false), + type(type) { - qDebug() << "TaskTreePreparation init thread ID " << QThread::currentThreadId(); + qDebug() << "TaskAMMFIMTreePreparation init thread ID " << QThread::currentThreadId(); } -TaskTreePreparation::~TaskTreePreparation() +TaskAMMFIMTreePreparation::~TaskAMMFIMTreePreparation() { deleteAllModulsAMM(); + deleteAllTaskFIM(); } -void TaskTreePreparation::stopParser() +void TaskAMMFIMTreePreparation::stopParser() { 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; @@ -71,7 +95,7 @@ QTreeWidgetItem *TaskTreePreparation::addModuleToTreeWidgetAMM(Module *module, b return itemModule; } -void TaskTreePreparation::loadAMMtasksFromXML(QByteArray array) +void TaskAMMFIMTreePreparation::loadAMMtasksFromXML(QByteArray array) { deleteAllModulsAMM(); @@ -86,9 +110,9 @@ void TaskTreePreparation::loadAMMtasksFromXML(QByteArray array) domElementParserAMM(manifestElement, nullptr); } -void TaskTreePreparation::loadFIMtasksFromXML(QByteArray array) +void TaskAMMFIMTreePreparation::loadFIMtasksFromXML(QByteArray array) { - deleteAllTaskAmmFim(); + deleteAllTaskFIM(); QDomDocument docTasksDOM; @@ -104,6 +128,10 @@ void TaskTreePreparation::loadFIMtasksFromXML(QByteArray array) do {/*task*/ + + if(flagStop) + return; + QString name = taskElement.nodeName(); QDomNamedNodeMap nodeMap = taskElement.attributes(); @@ -159,41 +187,34 @@ void TaskTreePreparation::loadFIMtasksFromXML(QByteArray array) } }while(! (malfunctionElement = malfunctionElement.nextSiblingElement()).isNull()); } - listTaskAmmFim->append(task); + listTaskFIM.append(task); } }while (! (taskElement = taskElement.nextSiblingElement()).isNull()); return; } -void TaskTreePreparation::deleteAllTaskAmmFim() +void TaskAMMFIMTreePreparation::deleteAllTaskFIM() { - //if(type == TypeList::listOneTask) - //return; - - for(TaskAmmFim* task: *listTaskAmmFim) + for(TaskAmmFim* task: listTaskFIM) delete task; - listTaskAmmFim->clear(); + listTaskFIM.clear(); } - -void TaskTreePreparation::deleteAllModulsAMM() +void TaskAMMFIMTreePreparation::deleteAllModulsAMM() { - if(listAllModulesAMM == nullptr) - return; - - for(Module* module: *listAllModulesAMM) + for(Module* module: listAllModulesAMM) { if(module->getType() == ModuleType::TYPE_PM) delete static_cast(module); else delete static_cast(module); } - listAllModulesAMM->clear(); + listAllModulesAMM.clear(); } -void TaskTreePreparation::domElementParserAMM(QDomElement element, Module* moduleParent) +void TaskAMMFIMTreePreparation::domElementParserAMM(QDomElement element, Module* moduleParent) { QString name; @@ -296,23 +317,20 @@ void TaskTreePreparation::domElementParserAMM(QDomElement element, Module* modul domElementParserAMM(childElement, module); if(moduleParent == nullptr) - listAllModulesAMM->append(module); + listAllModulesAMM.append(module); }while (! (childElement = childElement.nextSiblingElement()).isNull()); } - -void TaskTreePreparation::slot_prepareAMMListItems(QByteArray array, QList* listAllModules, bool flOnlyActive) +void TaskAMMFIMTreePreparation::slot_prepareAMMListItems(QByteArray array, bool flOnlyActive) { - qDebug() << "TaskTreePreparation::slot_prepareAMMListItems thread ID " << QThread::currentThreadId(); - - this->listAllModulesAMM = listAllModules; + qDebug() << "TaskAMMFIMTreePreparation::slot_prepareAMMListItems thread ID " << QThread::currentThreadId(); loadAMMtasksFromXML(array); listItems.clear(); - for(Module* module : *this->listAllModulesAMM) + for(Module* module : listAllModulesAMM) { QTreeWidgetItem* item = addModuleToTreeWidgetAMM(module, flOnlyActive); listItems.append(item); @@ -321,13 +339,9 @@ void TaskTreePreparation::slot_prepareAMMListItems(QByteArray array, QList listTask, QList *listAllModules) +void TaskAMMFIMTreePreparation::slot_prepareAMMListItemsForTrainee(QList listTask) { - qDebug() << "TaskTreePreparation::slot_prepareAMMListItemsForTrainee thread ID " << QThread::currentThreadId(); - - this->listAllModulesAMM = listAllModules; - - //loadAMMtasksFromList(listTask); + qDebug() << "TaskAMMFIMTreePreparation::slot_prepareAMMListItemsForTrainee thread ID " << QThread::currentThreadId(); listItems.clear(); @@ -376,17 +390,15 @@ void TaskTreePreparation::slot_prepareAMMListItemsForTrainee(QList l Q_EMIT signal_listAMMItemsReady(listItems); } -void TaskTreePreparation::slot_prepareFIMListItems(QByteArray array, QList *listTaskAmmFim) +void TaskAMMFIMTreePreparation::slot_prepareFIMListItems(QByteArray array) { - qDebug() << "TaskTreePreparation::slot_prepareFIMListItems thread ID " << QThread::currentThreadId(); - - this->listTaskAmmFim = listTaskAmmFim; + qDebug() << "TaskAMMFIMTreePreparation::slot_prepareFIMListItems thread ID " << QThread::currentThreadId(); loadFIMtasksFromXML(array); listItems.clear(); - for(TaskAmmFim* taskPtr : *this->listTaskAmmFim) + for(TaskAmmFim* taskPtr : listTaskFIM) {/*Задачи*/ TaskAmmFim task = *taskPtr; @@ -422,7 +434,6 @@ void TaskTreePreparation::slot_prepareFIMListItems(QByteArray array, QListsetIcon(0, QIcon(":/resources/icons/procedure.png")); itemTask->setToolTip(0, task.title); - //treeWidget->addTopLevelItem(itemTask); for (int j = 0; j < task.malfunctionList.count(); j++) {/*Неисправности*/ @@ -431,7 +442,7 @@ void TaskTreePreparation::slot_prepareFIMListItems(QByteArray array, QListsetText(0, malfunction.description); - //if(type == TypeList::listCommon) //TODO + if(type == TypeListTreeAMMFIM::listCommon) { itemMalfunction->setFlags(itemMalfunction->flags() | Qt::ItemIsUserCheckable); itemMalfunction->setCheckState(0, Qt::Checked); @@ -463,11 +474,9 @@ void TaskTreePreparation::slot_prepareFIMListItems(QByteArray array, QList listTask, QList *listTaskAmmFim) +void TaskAMMFIMTreePreparation::slot_prepareFIMListItemsForTrainee(QList listTask) { - qDebug() << "TaskTreePreparation::slot_prepareFIMListItemsForTrainee thread ID " << QThread::currentThreadId(); - - this->listTaskAmmFim = listTaskAmmFim; + qDebug() << "TaskAMMFIMTreePreparation::slot_prepareFIMListItemsForTrainee thread ID " << QThread::currentThreadId(); listItems.clear(); @@ -477,7 +486,7 @@ void TaskTreePreparation::slot_prepareFIMListItemsForTrainee(QList l TaskAmmFim* taskNew = nullptr; taskNew = new TaskAmmFim(); *taskNew = task; - this->listTaskAmmFim->append(taskNew); + listTaskFIM.append(taskNew); QTreeWidgetItem* itemTask = new QTreeWidgetItem(); @@ -511,7 +520,6 @@ void TaskTreePreparation::slot_prepareFIMListItemsForTrainee(QList l 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++) {/*Неисправности*/ @@ -520,7 +528,7 @@ void TaskTreePreparation::slot_prepareFIMListItemsForTrainee(QList l QTreeWidgetItem* itemMalfunction = new QTreeWidgetItem(); itemMalfunction->setText(0, malfunction.description); - //if(type == TypeList::listCommon) //TODO + if(type == TypeListTreeAMMFIM::listCommon) { itemMalfunction->setFlags(itemMalfunction->flags() | Qt::ItemIsUserCheckable); itemMalfunction->setCheckState(0, Qt::Checked); diff --git a/InstructorsAndTrainees/tasks/tasktreepreparation.h b/InstructorsAndTrainees/tasks/tasktreepreparation.h index 41f43a1..38d14f4 100644 --- a/InstructorsAndTrainees/tasks/tasktreepreparation.h +++ b/InstructorsAndTrainees/tasks/tasktreepreparation.h @@ -22,17 +22,27 @@ enum ColumnsTreeFIM{ clmnFIM_count }; +enum TypeListTreeAMMFIM +{ + listCommon = 0, + listForTrainee, + listOneTask +}; -class TaskTreePreparation : public QObject + +class TaskAMMFIMTreePreparation : public QObject { Q_OBJECT public: - explicit TaskTreePreparation(QObject *parent = nullptr); - ~TaskTreePreparation(); + explicit TaskAMMFIMTreePreparation(TypeListTreeAMMFIM type, QObject *parent = nullptr); + ~TaskAMMFIMTreePreparation(); public: void stopParser(); + TaskAmmFim* getTaskFIMbyID(int id); + Module* getModuleAMMbyID(int id); + private: QTreeWidgetItem* addModuleToTreeWidgetAMM(Module* module, bool flOnlyActive = false, QTreeWidgetItem* parentItem = nullptr); void loadAMMtasksFromXML(QByteArray array); @@ -40,14 +50,14 @@ private: void deleteAllModulsAMM(); void loadFIMtasksFromXML(QByteArray array); - void deleteAllTaskAmmFim(); + void deleteAllTaskFIM(); public Q_SLOTS: - void slot_prepareAMMListItems(QByteArray array, QList* listAllModulesAMM, bool flOnlyActive); - void slot_prepareAMMListItemsForTrainee(QList listTask, QList* listAllModulesAMM); + void slot_prepareAMMListItems(QByteArray array, bool flOnlyActive); + void slot_prepareAMMListItemsForTrainee(QList listTask); - void slot_prepareFIMListItems(QByteArray array, QList* listTaskAmmFim); - void slot_prepareFIMListItemsForTrainee(QList listTask, QList* listTaskAmmFim); + void slot_prepareFIMListItems(QByteArray array); + void slot_prepareFIMListItemsForTrainee(QList listTask); Q_SIGNALS: void signal_listAMMItemsReady(QList listItemsAMM); @@ -57,10 +67,11 @@ Q_SIGNALS: private: QList listItems; - QList* listAllModulesAMM; - QList* listTaskAmmFim; + QList listAllModulesAMM; + QList listTaskFIM; bool flagStop; + TypeListTreeAMMFIM type; }; #endif // TASKTREEPREPARATION_H diff --git a/InstructorsAndTrainees/trainees/viewertrainees.cpp b/InstructorsAndTrainees/trainees/viewertrainees.cpp index a919418..1aa3dc4 100644 --- a/InstructorsAndTrainees/trainees/viewertrainees.cpp +++ b/InstructorsAndTrainees/trainees/viewertrainees.cpp @@ -14,8 +14,8 @@ ViewerTrainees::ViewerTrainees(ConnectorToServer* connectorToServer, QWidget *pa ui->horizontalLayout_11->addWidget(treeWidget); - ammTasksWidget = new AMMtasksWidget(connectorToServer, AMMtasksWidget::TypeList::listForTrainee, this); - fimTasksWidget = new FIMtasksWidget(connectorToServer, FIMtasksWidget::TypeList::listForTrainee, this); + ammTasksWidget = new AMMtasksWidget(connectorToServer, TypeListTreeAMMFIM::listForTrainee, this); + fimTasksWidget = new FIMtasksWidget(connectorToServer, TypeListTreeAMMFIM::listForTrainee, this); connect(this, &ViewerTrainees::signal_traineeSelected, fimTasksWidget, &FIMtasksWidget::slot_traineeSelected); connect(this, &ViewerTrainees::signal_traineeSelected, ammTasksWidget, &AMMtasksWidget::slot_traineeSelected);