mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
first after fork install
This commit is contained in:
176
DB_IaT/InstructorsAndTrainees/docTasks/doctaskswidget.cpp
Normal file
176
DB_IaT/InstructorsAndTrainees/docTasks/doctaskswidget.cpp
Normal file
@@ -0,0 +1,176 @@
|
||||
#include <QFile>
|
||||
#include <QXmlStreamReader>
|
||||
#include <QDomDocument>
|
||||
#include <QMessageBox>
|
||||
#include "doctaskswidget.h"
|
||||
#include "ui_doctaskswidget.h"
|
||||
|
||||
DocTasksWidget::DocTasksWidget(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
ui(new Ui::DocTasksWidget)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
treeWidget = new QTreeWidget();
|
||||
ui->horizontalLayout_2->addWidget(treeWidget);
|
||||
treeWidget->setStyleSheet(QStringLiteral("font-size: 10pt;"
|
||||
"font-family: Tahoma;"));
|
||||
|
||||
loadDocTasksFromXML();
|
||||
}
|
||||
|
||||
DocTasksWidget::~DocTasksWidget()
|
||||
{
|
||||
deleteAllModuls();
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void DocTasksWidget::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")
|
||||
{
|
||||
QString modelIdentCode = nodeMap.namedItem("modelIdentCode").nodeValue();
|
||||
QString pmIssuer = nodeMap.namedItem("pmIssuer").nodeValue();
|
||||
QString pmNumber = nodeMap.namedItem("pmNumber").nodeValue();
|
||||
QString pmVolume = nodeMap.namedItem("pmVolume").nodeValue();
|
||||
|
||||
module = new PM();
|
||||
|
||||
PM* PMmodul = static_cast<PM*>(module);
|
||||
|
||||
PMmodul->initialize(modelIdentCode, pmIssuer, pmNumber, pmVolume);
|
||||
|
||||
if(moduleParent)
|
||||
{
|
||||
PM* PMmodulParent = static_cast<PM*>(moduleParent);
|
||||
PMmodulParent->addChildModule(module);
|
||||
}
|
||||
}
|
||||
else if(name == "dm")
|
||||
{
|
||||
QString modelIdentCode = nodeMap.namedItem("modelIdentCode").nodeValue();
|
||||
QString systemDiffCode = nodeMap.namedItem("systemDiffCode").nodeValue();
|
||||
QString systemCode = nodeMap.namedItem("systemCode").nodeValue();
|
||||
QString subSystemCode = nodeMap.namedItem("subSystemCode").nodeValue();
|
||||
QString subSubSystemCode = nodeMap.namedItem("subSubSystemCode").nodeValue();
|
||||
QString assyCode = nodeMap.namedItem("assyCode").nodeValue();
|
||||
QString disassyCode = nodeMap.namedItem("disassyCode").nodeValue();
|
||||
QString disassyCodeVariant = nodeMap.namedItem("disassyCodeVariant").nodeValue();
|
||||
QString infoCode = nodeMap.namedItem("infoCode").nodeValue();
|
||||
QString infoCodeVariant = nodeMap.namedItem("infoCodeVariant").nodeValue();
|
||||
QString itemLocationCode = nodeMap.namedItem("itemLocationCode").nodeValue();
|
||||
|
||||
module = new DM();
|
||||
|
||||
DM* PMmodul = static_cast<DM*>(module);
|
||||
|
||||
PMmodul->initialize(modelIdentCode,
|
||||
systemDiffCode,
|
||||
systemCode,
|
||||
subSystemCode,
|
||||
subSubSystemCode,
|
||||
assyCode,
|
||||
disassyCode,
|
||||
disassyCodeVariant,
|
||||
infoCode,
|
||||
infoCodeVariant,
|
||||
itemLocationCode);
|
||||
|
||||
if(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
|
||||
QString title = nodeMap.namedItem("title").nodeValue();
|
||||
|
||||
PM* PMmodulParent = static_cast<PM*>(moduleParent);
|
||||
|
||||
if(name == "rus")
|
||||
PMmodulParent->setLangStructRus(title);
|
||||
else
|
||||
PMmodulParent->setLangStructEng(title);
|
||||
}
|
||||
else
|
||||
{//DM
|
||||
QString techName = nodeMap.namedItem("techName").nodeValue();
|
||||
QString infoName = nodeMap.namedItem("infoName").nodeValue();
|
||||
QString pdf = nodeMap.namedItem("pdf").nodeValue();
|
||||
QString bookmark = nodeMap.namedItem("bookmark").nodeValue();
|
||||
QString xml = nodeMap.namedItem("xml").nodeValue();
|
||||
|
||||
DM* DMmodulParent = static_cast<DM*>(moduleParent);
|
||||
|
||||
if(name == "rus")
|
||||
DMmodulParent->setLangStructRus(techName, infoName, pdf, bookmark, xml);
|
||||
else
|
||||
DMmodulParent->setLangStructEng(techName, infoName, pdf, bookmark, xml);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
DomElementParser(childElement, module);
|
||||
|
||||
if(moduleParent == nullptr)
|
||||
listAllModules.append(module);
|
||||
|
||||
}while (! (childElement = childElement.nextSiblingElement()).isNull());
|
||||
}
|
||||
|
||||
void DocTasksWidget::loadDocTasksFromXML()
|
||||
{
|
||||
QDomDocument docTasksDOM;
|
||||
QString xmlFileName = "./docs.xml";
|
||||
QFile xmlInFile(xmlFileName);
|
||||
if (!xmlInFile.open(QFile::ReadOnly | QFile::Text))
|
||||
{
|
||||
QMessageBox::critical(nullptr, tr("Attention!"), tr("The file could not be opened ") + xmlFileName);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
docTasksDOM.setContent(xmlInFile.readAll());
|
||||
xmlInFile.close();
|
||||
|
||||
QDomElement manifestElement = docTasksDOM.firstChildElement("manifest");
|
||||
if(manifestElement.isNull())
|
||||
return;
|
||||
|
||||
deleteAllModuls();
|
||||
|
||||
DomElementParser(manifestElement, nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
void DocTasksWidget::deleteAllModuls()
|
||||
{
|
||||
for(Module* module: listAllModules)
|
||||
{
|
||||
if(module->getType() == ModuleType::TYPE_PM)
|
||||
delete static_cast<PM*>(module);
|
||||
else
|
||||
delete static_cast<DM*>(module);
|
||||
}
|
||||
listAllModules.clear();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user