пилотная рабочая версия с кодами dm/pm

This commit is contained in:
krivoshein
2024-11-27 14:45:58 +03:00
parent b94bc4764e
commit fbd2eadfa3
5 changed files with 225 additions and 8 deletions

View File

@@ -10,12 +10,18 @@ DocTasksWidget::DocTasksWidget(QWidget *parent) :
ui(new Ui::DocTasksWidget)
{
ui->setupUi(this);
treeWidget = new QTreeWidget();
connect(treeWidget, &QTreeWidget::currentItemChanged, this, &DocTasksWidget::on_treeWidget_currentItemChanged);
ui->horizontalLayout_2->addWidget(treeWidget);
treeWidget->setStyleSheet(QStringLiteral("font-size: 10pt;"
"font-family: Tahoma;"));
preparationTreeWidget();
loadDocTasksFromXML();
updateTreeWidget();
}
DocTasksWidget::~DocTasksWidget()
@@ -24,6 +30,38 @@ DocTasksWidget::~DocTasksWidget()
delete ui;
}
void DocTasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
{
if(current == nullptr)
return;
int id = current->text(ColumnsTree::clmn_ID).toInt();
Module* module = searchModuleByID(id);
if(module)
{
QString type = "Code";
QString code = "";
if(module->getType() == ModuleType::TYPE_PM)
{
PM* PMmodul = static_cast<PM*>(module);
type = "PM";
code = PMmodul->pmCode();
}
else
{
DM* DMmodul = static_cast<DM*>(module);
type = "DM";
code = DMmodul->dmCode();
}
ui->label->setText(type + " Code");
ui->editCode->setText(code);
}
}
void DocTasksWidget::DomElementParser(QDomElement element, Module* moduleParent)
{
QString name;
@@ -55,6 +93,8 @@ void DocTasksWidget::DomElementParser(QDomElement element, Module* moduleParent)
if(moduleParent)
{
PMmodul->setParentModule(moduleParent);
PM* PMmodulParent = static_cast<PM*>(moduleParent);
PMmodulParent->addChildModule(module);
}
@@ -75,9 +115,9 @@ void DocTasksWidget::DomElementParser(QDomElement element, Module* moduleParent)
module = new DM();
DM* PMmodul = static_cast<DM*>(module);
DM* DMmodul = static_cast<DM*>(module);
PMmodul->initialize(modelIdentCode,
DMmodul->initialize(modelIdentCode,
systemDiffCode,
systemCode,
subSystemCode,
@@ -91,6 +131,8 @@ void DocTasksWidget::DomElementParser(QDomElement element, Module* moduleParent)
if(moduleParent)
{
DMmodul->setParentModule(moduleParent);
PM* PMmodulParent = static_cast<PM*>(moduleParent);
PMmodulParent->addChildModule(module);
}
@@ -174,3 +216,87 @@ void DocTasksWidget::deleteAllModuls()
listAllModules.clear();
}
Module *DocTasksWidget::searchModuleByID(int id)
{
Module* ptrModule = nullptr;
for(Module* module: listAllModules)
{
ptrModule = module->getModuleByID(id);
if(ptrModule)
return ptrModule;
}
return nullptr;
}
void DocTasksWidget::preparationTreeWidget()
{
treeWidget->setColumnCount(2);
reSetHeadTreeWidget();
//treeWidget->header()->setStyleSheet(QStringLiteral("font-size: 10pt;"));
treeWidget->setStyleSheet(QStringLiteral("font-size: 10pt;"
"font-family: Tahoma;"));
treeWidget->setColumnWidth(ColumnsTree::clmn_ID, 80);
treeWidget->setColumnWidth(ColumnsTree::clmn_PMorDM, 800);
//treeWidget->setColumnHidden(ColumnsTree::clmn_ID, true);
}
void DocTasksWidget::reSetHeadTreeWidget()
{
QStringList listHeaders = {tr("PM/DM"), tr("ID")};
treeWidget->setHeaderLabels(listHeaders);
}
void DocTasksWidget::updateTreeWidget()
{
//Обновление дерева
treeWidget->clear();
for(Module* module : listAllModules)
{
addModulToTreeWidget(module);
}
}
void DocTasksWidget::addModulToTreeWidget(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);
}
if(module->getType() == ModuleType::TYPE_PM)
{
PM* PMmodul = static_cast<PM*>(module);
text = PMmodul->getLangStructRus().title;
for(Module* module : PMmodul->getListChildModules())
{
addModulToTreeWidget(module, itemModule);
}
}
else
{
DM* DMmodul = static_cast<DM*>(module);
text = DMmodul->getLangStructRus().techName;
}
itemModule->setText(ColumnsTree::clmn_PMorDM, text);
itemModule->setText(ColumnsTree::clmn_ID, ID);
}

View File

@@ -14,15 +14,29 @@ class DocTasksWidget : public QWidget
{
Q_OBJECT
private:
enum ColumnsTree{
clmn_PMorDM = 0,
clmn_ID
};
public:
explicit DocTasksWidget(QWidget *parent = nullptr);
~DocTasksWidget();
private Q_SLOTS:
void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
private:
void DomElementParser(QDomElement element, Module* moduleParent);
void loadDocTasksFromXML();
void deleteAllModuls();
Module* searchModuleByID(int id);
void preparationTreeWidget();
void reSetHeadTreeWidget();
void updateTreeWidget();
void addModulToTreeWidget(Module* module, QTreeWidgetItem* parentItem = nullptr);
private:
Ui::DocTasksWidget *ui;

View File

@@ -31,6 +31,20 @@
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_2"/>
</item>
<item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Code</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="editCode"/>
</item>
</layout>
</item>
</layout>
</widget>
</item>

View File

@@ -1,10 +1,13 @@
#include "module.h"
int Module::lastID = 0;
Module::Module():
type (ModuleType::TYPE_PM),
parentModule(nullptr)
parentModule(nullptr),
ID(0)
{
ID = ++lastID;
}
Module::~Module()
@@ -12,6 +15,29 @@ Module::~Module()
}
Module *Module::getModuleByID(int id)
{
if(getID() == id)
return this;
if(this->getType() == ModuleType::TYPE_PM)
{
PM* PMmodul = static_cast<PM*>(this);
Module* ptrModule = nullptr;
for(Module* module: PMmodul->getListChildModules())
{
ptrModule = module->getModuleByID(id);
if(ptrModule)
return ptrModule;
}
}
return nullptr;
}
PM::PM():
@@ -51,6 +77,11 @@ void PM::setLangStructRus(QString title)
langRus.title = title;
}
PM::pmLangStruct PM::getLangStructRus()
{
return langRus;
}
void PM::setLangStructEng(QString title)
{
langEng.title = title;
@@ -61,6 +92,16 @@ void PM::addChildModule(Module *childModule)
listChildModules.append(childModule);
}
QList<Module *> PM::getListChildModules()
{
return listChildModules;
}
QString PM::pmCode()
{
return (modelIdentCode + "-" + pmIssuer + "-" + pmNumber + "-" + pmVolume).toUpper();
}
DM::DM():
@@ -114,6 +155,11 @@ void DM::setLangStructRus(QString techName, QString infoName, QString pdf, QStri
langRus.xml = xml;
}
DM::dmLangStruct DM::getLangStructRus()
{
return langRus;
}
void DM::setLangStructEng(QString techName, QString infoName, QString pdf, QString bookmark, QString xml)
{
langEng.techName = techName;
@@ -122,3 +168,11 @@ void DM::setLangStructEng(QString techName, QString infoName, QString pdf, QStri
langEng.bookmark = bookmark;
langEng.xml = xml;
}
QString DM::dmCode()
{
return (modelIdentCode + "-" + systemDiffCode + "-" + systemCode + "-" +
subSystemCode + subSubSystemCode + "-" + assyCode + "-" +
disassyCode + disassyCodeVariant + "-" + infoCode +
infoCodeVariant + "-" + itemLocationCode).toUpper();
}

View File

@@ -15,12 +15,16 @@ public:
Module();
~Module();
int getID(){ return ID; };
ModuleType getType(){ return type; };
void setParentModule(Module* parentModule){ this->parentModule = parentModule; };
Module* getModuleByID(int id);
protected:
ModuleType type;
Module* parentModule;
int ID;
static int lastID;
};
@@ -39,8 +43,11 @@ public:
public:
void initialize(QString modelIdentCode, QString pmIssuer, QString pmNumber, QString pmVolume);
void setLangStructRus(QString title);
pmLangStruct getLangStructRus();
void setLangStructEng(QString title);
void addChildModule(Module* childModule);
QList<Module*> getListChildModules();
QString pmCode();
private:
QString modelIdentCode;
@@ -84,7 +91,9 @@ public:
QString infoCodeVariant,
QString itemLocationCode);
void setLangStructRus(QString techName, QString infoName, QString pdf, QString bookmark, QString xml);
dmLangStruct getLangStructRus();
void setLangStructEng(QString techName, QString infoName, QString pdf, QString bookmark, QString xml);
QString dmCode();
private:
QString modelIdentCode;