From eebe56dd6ca8357f21f3bd1d0ee1778e2db7fa67 Mon Sep 17 00:00:00 2001 From: krivoshein Date: Mon, 27 Jan 2025 15:17:49 +0300 Subject: [PATCH] stopParser --- InstructorsAndTrainees/tasks/ammtaskswidget.cpp | 15 +++++++++++++++ .../tasks/tasktreepreparation.cpp | 14 +++++++++++++- .../tasks/tasktreepreparation.h | 4 ++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp index 1699a20..9356ef7 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp @@ -59,6 +59,21 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty AMMtasksWidget::~AMMtasksWidget() { + waitAnimationWidget->hideWithStop(); + taskTreePreparation->stopParser(); + + threadAnimation->quit(); + threadAnimation->wait(); + + threadPreparation->quit(); + threadPreparation->wait(); + + delete threadAnimation; + delete threadPreparation; + + delete taskTreePreparation; + delete waitAnimationWidget; + delete treeWidget; delete ui; } diff --git a/InstructorsAndTrainees/tasks/tasktreepreparation.cpp b/InstructorsAndTrainees/tasks/tasktreepreparation.cpp index 17a7200..0ec82e9 100644 --- a/InstructorsAndTrainees/tasks/tasktreepreparation.cpp +++ b/InstructorsAndTrainees/tasks/tasktreepreparation.cpp @@ -5,7 +5,8 @@ TaskTreePreparation::TaskTreePreparation(QObject *parent) : QObject(parent), - listAllModules(nullptr) + listAllModules(nullptr), + flagStop(false) { qDebug() << "TaskTreePreparation init thread ID " << QThread::currentThreadId(); } @@ -15,10 +16,18 @@ TaskTreePreparation::~TaskTreePreparation() deleteAllModuls(); } +void TaskTreePreparation::stopParser() +{ + flagStop = true; +} + QTreeWidgetItem *TaskTreePreparation::addModuleToTreeWidget(Module *module, QTreeWidgetItem *parentItem) { QTreeWidgetItem* itemModule = nullptr; + if(flagStop) + return itemModule; + QString text = ""; QString ID = QString::number(module->getID()); QString code = ""; @@ -91,6 +100,9 @@ void TaskTreePreparation::domElementParser(QDomElement element, Module* modulePa { QString name; + if(flagStop) + return; + QDomElement childElement = element.firstChildElement(); if(childElement.isNull()) return; diff --git a/InstructorsAndTrainees/tasks/tasktreepreparation.h b/InstructorsAndTrainees/tasks/tasktreepreparation.h index c6bdbd2..56b5a50 100644 --- a/InstructorsAndTrainees/tasks/tasktreepreparation.h +++ b/InstructorsAndTrainees/tasks/tasktreepreparation.h @@ -19,6 +19,9 @@ public: explicit TaskTreePreparation(QObject *parent = nullptr); ~TaskTreePreparation(); +public: + void stopParser(); + private: QTreeWidgetItem* addModuleToTreeWidget(Module* module, QTreeWidgetItem* parentItem = nullptr); void loadAMMtasksFromXML(QByteArray array); @@ -34,6 +37,7 @@ Q_SIGNALS: private: QList listItems; QList* listAllModules; + bool flagStop; }; #endif // TASKTREEPREPARATION_H