first after fork install

This commit is contained in:
krivoshein
2024-11-27 09:42:52 +03:00
parent 7637922872
commit ce4e3e0a95
6 changed files with 483 additions and 0 deletions

View 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();
}

View File

@@ -0,0 +1,34 @@
#ifndef DOCTASKSWIDGET_H
#define DOCTASKSWIDGET_H
#include <QWidget>
#include <QTreeWidget>
#include <QDomNode>
#include "module.h"
namespace Ui {
class DocTasksWidget;
}
class DocTasksWidget : public QWidget
{
Q_OBJECT
public:
explicit DocTasksWidget(QWidget *parent = nullptr);
~DocTasksWidget();
private:
void DomElementParser(QDomElement element, Module* moduleParent);
void loadDocTasksFromXML();
void deleteAllModuls();
private:
Ui::DocTasksWidget *ui;
QTreeWidget* treeWidget;
QList<Module*> listAllModules;
};
#endif // DOCTASKSWIDGET_H

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DocTasksWidget</class>
<widget class="QWidget" name="DocTasksWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="font">
<font>
<family>Tahoma</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Document</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_2"/>
</item>
</layout>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -0,0 +1,124 @@
#include "module.h"
Module::Module():
type (ModuleType::TYPE_PM),
parentModule(nullptr)
{
}
Module::~Module()
{
}
PM::PM():
modelIdentCode (""),
pmIssuer (""),
pmNumber (""),
pmVolume ("")
{
type = ModuleType::TYPE_PM;
langRus.title = "";
langEng.title = "";
}
PM::~PM()
{
for(Module* module: listChildModules)
{
if(module->getType() == ModuleType::TYPE_PM)
delete static_cast<PM*>(module);
else
delete static_cast<DM*>(module);
}
listChildModules.clear();
}
void PM::initialize(QString modelIdentCode, QString pmIssuer, QString pmNumber, QString pmVolume)
{
this->modelIdentCode = modelIdentCode;
this->pmIssuer = pmIssuer;
this->pmNumber = pmNumber;
this->pmVolume = pmVolume;
}
void PM::setLangStructRus(QString title)
{
langRus.title = title;
}
void PM::setLangStructEng(QString title)
{
langEng.title = title;
}
void PM::addChildModule(Module *childModule)
{
listChildModules.append(childModule);
}
DM::DM():
modelIdentCode (""),
systemDiffCode (""),
systemCode (""),
subSystemCode (""),
subSubSystemCode (""),
assyCode (""),
disassyCode (""),
disassyCodeVariant (""),
infoCode (""),
infoCodeVariant (""),
itemLocationCode ("")
{
type = ModuleType::TYPE_DM;
setLangStructRus("", "", "", "", "");
setLangStructEng("", "", "", "", "");
}
DM::~DM()
{
}
void DM::initialize(QString modelIdentCode, QString systemDiffCode, QString systemCode,
QString subSystemCode, QString subSubSystemCode, QString assyCode,
QString disassyCode, QString disassyCodeVariant, QString infoCode,
QString infoCodeVariant, QString itemLocationCode)
{
this->modelIdentCode = modelIdentCode;
this->systemDiffCode = systemDiffCode;
this->systemCode = systemCode;
this->subSystemCode = subSystemCode;
this->subSubSystemCode = subSubSystemCode;
this->assyCode = assyCode;
this->disassyCode = disassyCode;
this->disassyCodeVariant = disassyCodeVariant;
this->infoCode = infoCode;
this->infoCodeVariant = infoCodeVariant;
this->itemLocationCode = itemLocationCode;
}
void DM::setLangStructRus(QString techName, QString infoName, QString pdf, QString bookmark, QString xml)
{
langRus.techName = techName;
langRus.infoName = infoName;
langRus.pdf = pdf;
langRus.bookmark = bookmark;
langRus.xml = xml;
}
void DM::setLangStructEng(QString techName, QString infoName, QString pdf, QString bookmark, QString xml)
{
langEng.techName = techName;
langEng.infoName = infoName;
langEng.pdf = pdf;
langEng.bookmark = bookmark;
langEng.xml = xml;
}

View File

@@ -0,0 +1,106 @@
#ifndef MODULE_H
#define MODULE_H
#include <QString>
#include <QList>
enum ModuleType
{
TYPE_PM = 0,
TYPE_DM = 1
};
class Module
{
public:
Module();
~Module();
ModuleType getType(){ return type; };
void setParentModule(Module* parentModule){ this->parentModule = parentModule; };
protected:
ModuleType type;
Module* parentModule;
};
class PM : public Module
{
public:
struct pmLangStruct
{
QString title;
};
public:
PM();
~PM();
public:
void initialize(QString modelIdentCode, QString pmIssuer, QString pmNumber, QString pmVolume);
void setLangStructRus(QString title);
void setLangStructEng(QString title);
void addChildModule(Module* childModule);
private:
QString modelIdentCode;
QString pmIssuer;
QString pmNumber;
QString pmVolume;
pmLangStruct langRus;
pmLangStruct langEng;
QList<Module*> listChildModules;
};
class DM : public Module
{
public:
struct dmLangStruct
{
QString techName;
QString infoName;
QString pdf;
QString bookmark;
QString xml;
};
public:
DM();
~DM();
public:
void initialize(QString modelIdentCode,
QString systemDiffCode,
QString systemCode,
QString subSystemCode,
QString subSubSystemCode,
QString assyCode,
QString disassyCode,
QString disassyCodeVariant,
QString infoCode,
QString infoCodeVariant,
QString itemLocationCode);
void setLangStructRus(QString techName, QString infoName, QString pdf, QString bookmark, QString xml);
void setLangStructEng(QString techName, QString infoName, QString pdf, QString bookmark, QString xml);
private:
QString modelIdentCode;
QString systemDiffCode;
QString systemCode;
QString subSystemCode;
QString subSubSystemCode;
QString assyCode;
QString disassyCode;
QString disassyCodeVariant;
QString infoCode;
QString infoCodeVariant;
QString itemLocationCode;
dmLangStruct langRus;
dmLangStruct langEng;
};
#endif // MODULE_H

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB