mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
Перенес парсинг taskAMM.XML в отдельный поток
This commit is contained in:
@@ -11,10 +11,17 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, QWidget *pa
|
||||
QWidget(parent),
|
||||
ui(new Ui::AMMtasksWidget),
|
||||
connectorToServer(connectorToServer),
|
||||
loginTraineeSelected("")
|
||||
treeWidget(nullptr),
|
||||
loginTraineeSelected(""),
|
||||
threadPreparation(nullptr),
|
||||
threadAnimation(nullptr),
|
||||
taskTreePreparation(nullptr),
|
||||
waitAnimationWidget(nullptr)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
qDebug() << "AMMtasksWidget init thread ID " << QThread::currentThreadId();
|
||||
|
||||
treeWidget = new QTreeWidget();
|
||||
ui->horizontalLayout_1->addWidget(treeWidget);
|
||||
|
||||
@@ -22,9 +29,7 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, QWidget *pa
|
||||
|
||||
preparationTreeWidget();
|
||||
|
||||
ui->btnAssignTaskToTrainee->setEnabled(false);
|
||||
|
||||
qDebug() << "AMMtasksWidget init thread ID " << QThread::currentThreadId();
|
||||
ui->btnAssignTaskToTrainee->setEnabled(false);
|
||||
|
||||
threadPreparation = new QThread();
|
||||
taskTreePreparation = new TaskTreePreparation();
|
||||
@@ -34,16 +39,17 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, QWidget *pa
|
||||
connect(this, &AMMtasksWidget::signal_prepareListItems, taskTreePreparation, &TaskTreePreparation::slot_prepareListItems);
|
||||
connect(taskTreePreparation, &TaskTreePreparation::signal_listItemsReady, this, &AMMtasksWidget::slot_listItemsReady);
|
||||
|
||||
waitAnimationWidget = new WaitAnimationWidget;
|
||||
threadAnimation = new QThread();
|
||||
waitAnimationWidget = new WaitAnimationWidget;
|
||||
QMovie *movie = new QMovie(":/resources/icons/762.gif");
|
||||
waitAnimationWidget->setParent(this);
|
||||
waitAnimationWidget->initialize(movie,this);
|
||||
waitAnimationWidget->moveToThread(threadPreparation);
|
||||
waitAnimationWidget->moveToThread(threadAnimation);
|
||||
threadAnimation->start();
|
||||
}
|
||||
|
||||
AMMtasksWidget::~AMMtasksWidget()
|
||||
{
|
||||
deleteAllModuls();
|
||||
delete ui;
|
||||
}
|
||||
|
||||
@@ -109,10 +115,8 @@ void AMMtasksWidget::loadTasksAMM()
|
||||
waitAnimationWidget->showWithPlay();
|
||||
|
||||
QByteArray array = connectorToServer->getListTaskAmmArray();
|
||||
loadAMMtasksFromXML(array);
|
||||
|
||||
//fillTree();
|
||||
signal_prepareListItems(listAllModules);
|
||||
signal_prepareListItems(array, &listAllModules);
|
||||
}
|
||||
|
||||
void AMMtasksWidget::slot_listItemsReady(QList<QTreeWidgetItem *> listItems)
|
||||
@@ -121,141 +125,11 @@ void AMMtasksWidget::slot_listItemsReady(QList<QTreeWidgetItem *> listItems)
|
||||
treeWidget->clear();
|
||||
|
||||
for(QTreeWidgetItem * item : listItems)
|
||||
{
|
||||
treeWidget->addTopLevelItem(item);
|
||||
}
|
||||
|
||||
waitAnimationWidget->hideWithStop();
|
||||
}
|
||||
|
||||
void AMMtasksWidget::domElementParser(QDomElement element, Module* moduleParent)
|
||||
{
|
||||
QString name;
|
||||
|
||||
QDomElement childElement = element.firstChildElement();
|
||||
if(childElement.isNull())
|
||||
return;
|
||||
|
||||
Module* module = nullptr;
|
||||
|
||||
do
|
||||
{
|
||||
name = childElement.nodeName();
|
||||
|
||||
QDomNamedNodeMap nodeMap = childElement.attributes();
|
||||
|
||||
if(name == "pm")
|
||||
{
|
||||
module = new PM();
|
||||
PM* PMmodul = static_cast<PM*>(module);
|
||||
|
||||
PMmodul->initialize(nodeMap.namedItem("modelIdentCode").nodeValue(),
|
||||
nodeMap.namedItem("pmIssuer").nodeValue(),
|
||||
nodeMap.namedItem("pmNumber").nodeValue(),
|
||||
nodeMap.namedItem("pmVolume").nodeValue());
|
||||
|
||||
if(moduleParent)
|
||||
{
|
||||
PMmodul->setParentModule(moduleParent);
|
||||
|
||||
PM* PMmodulParent = static_cast<PM*>(moduleParent);
|
||||
PMmodulParent->addChildModule(module);
|
||||
}
|
||||
}
|
||||
else if(name == "dm")
|
||||
{
|
||||
module = new DM();
|
||||
DM* DMmodul = static_cast<DM*>(module);
|
||||
|
||||
DMmodul->initialize(nodeMap.namedItem("modelIdentCode").nodeValue(),
|
||||
nodeMap.namedItem("systemDiffCode").nodeValue(),
|
||||
nodeMap.namedItem("systemCode").nodeValue(),
|
||||
nodeMap.namedItem("subSystemCode").nodeValue(),
|
||||
nodeMap.namedItem("subSubSystemCode").nodeValue(),
|
||||
nodeMap.namedItem("assyCode").nodeValue(),
|
||||
nodeMap.namedItem("disassyCode").nodeValue(),
|
||||
nodeMap.namedItem("disassyCodeVariant").nodeValue(),
|
||||
nodeMap.namedItem("infoCode").nodeValue(),
|
||||
nodeMap.namedItem("infoCodeVariant").nodeValue(),
|
||||
nodeMap.namedItem("itemLocationCode").nodeValue());
|
||||
|
||||
if(moduleParent)
|
||||
{
|
||||
DMmodul->setParentModule(moduleParent);
|
||||
|
||||
PM* PMmodulParent = static_cast<PM*>(moduleParent);
|
||||
PMmodulParent->addChildModule(module);
|
||||
}
|
||||
}
|
||||
else if(name == "rus" || name == "eng")
|
||||
{
|
||||
if(moduleParent)
|
||||
{
|
||||
if(moduleParent->getType() == ModuleType::TYPE_PM)
|
||||
{//PM
|
||||
PM* PMmodulParent = static_cast<PM*>(moduleParent);
|
||||
|
||||
if(name == "rus")
|
||||
PMmodulParent->setLangStructRus(nodeMap.namedItem("title").nodeValue());
|
||||
else
|
||||
PMmodulParent->setLangStructEng(nodeMap.namedItem("title").nodeValue());
|
||||
}
|
||||
else
|
||||
{//DM
|
||||
DM* DMmodulParent = static_cast<DM*>(moduleParent);
|
||||
|
||||
if(name == "rus")
|
||||
DMmodulParent->setLangStructRus(nodeMap.namedItem("techName").nodeValue(),
|
||||
nodeMap.namedItem("infoName").nodeValue(),
|
||||
nodeMap.namedItem("pdf").nodeValue(),
|
||||
nodeMap.namedItem("bookmark").nodeValue(),
|
||||
nodeMap.namedItem("xml").nodeValue());
|
||||
else
|
||||
DMmodulParent->setLangStructEng(nodeMap.namedItem("techName").nodeValue(),
|
||||
nodeMap.namedItem("infoName").nodeValue(),
|
||||
nodeMap.namedItem("pdf").nodeValue(),
|
||||
nodeMap.namedItem("bookmark").nodeValue(),
|
||||
nodeMap.namedItem("xml").nodeValue());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
domElementParser(childElement, module);
|
||||
|
||||
if(moduleParent == nullptr)
|
||||
listAllModules.append(module);
|
||||
|
||||
}while (! (childElement = childElement.nextSiblingElement()).isNull());
|
||||
}
|
||||
|
||||
void AMMtasksWidget::loadAMMtasksFromXML(QByteArray array)
|
||||
{
|
||||
deleteAllModuls();
|
||||
|
||||
QDomDocument docTasksDOM;
|
||||
|
||||
docTasksDOM.setContent(array);
|
||||
|
||||
QDomElement manifestElement = docTasksDOM.firstChildElement("manifest");
|
||||
if(manifestElement.isNull())
|
||||
return;
|
||||
|
||||
domElementParser(manifestElement, nullptr);
|
||||
}
|
||||
|
||||
void AMMtasksWidget::deleteAllModuls()
|
||||
{
|
||||
for(Module* module: listAllModules)
|
||||
{
|
||||
if(module->getType() == ModuleType::TYPE_PM)
|
||||
delete static_cast<PM*>(module);
|
||||
else
|
||||
delete static_cast<DM*>(module);
|
||||
}
|
||||
listAllModules.clear();
|
||||
}
|
||||
|
||||
Module *AMMtasksWidget::searchModuleByID(int id)
|
||||
{
|
||||
Module* ptrModule = nullptr;
|
||||
@@ -288,63 +162,6 @@ void AMMtasksWidget::reSetHeadTreeWidget()
|
||||
treeWidget->setHeaderLabels(listHeaders);
|
||||
}
|
||||
|
||||
void AMMtasksWidget::fillTree()
|
||||
{
|
||||
//Обновление дерева
|
||||
treeWidget->clear();
|
||||
|
||||
for(Module* module : listAllModules)
|
||||
{
|
||||
QTreeWidgetItem* item = addModuleToTreeWidget(module);
|
||||
treeWidget->addTopLevelItem(item);
|
||||
}
|
||||
}
|
||||
|
||||
QTreeWidgetItem* AMMtasksWidget::addModuleToTreeWidget(Module *module, QTreeWidgetItem* parentItem)
|
||||
{
|
||||
QTreeWidgetItem* itemModule = nullptr;
|
||||
|
||||
QString text;
|
||||
QString ID = QString::number(module->getID());
|
||||
|
||||
if(parentItem)
|
||||
{
|
||||
itemModule = new QTreeWidgetItem();
|
||||
parentItem->addChild(itemModule);
|
||||
}
|
||||
else
|
||||
{
|
||||
//itemModule = new QTreeWidgetItem(treeWidget);
|
||||
itemModule = new QTreeWidgetItem();
|
||||
}
|
||||
|
||||
if(module->getType() == ModuleType::TYPE_PM)
|
||||
{
|
||||
PM* PMmodul = static_cast<PM*>(module);
|
||||
text = PMmodul->getLangStructRus().title;
|
||||
|
||||
for(Module* module : PMmodul->getListChildModules())
|
||||
{
|
||||
addModuleToTreeWidget(module, itemModule);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
DM* DMmodul = static_cast<DM*>(module);
|
||||
text = DMmodul->getLangStructRus().techName;
|
||||
|
||||
//itemModule->setFlags(itemModule->flags() | Qt::ItemIsUserCheckable);
|
||||
//itemModule->setCheckState(0, Qt::Checked);
|
||||
itemModule->setIcon(0, QIcon(":/resources/icons/procedure.png"));
|
||||
}
|
||||
|
||||
itemModule->setText(ColumnsTree::clmn_PMorDM, text);
|
||||
itemModule->setText(ColumnsTree::clmn_ID, ID);
|
||||
|
||||
return itemModule;
|
||||
}
|
||||
|
||||
|
||||
void AMMtasksWidget::on_btnUpdateTasks_clicked()
|
||||
{
|
||||
connectorToServer->sendQueryTasksXML("amm");
|
||||
|
||||
Reference in New Issue
Block a user