пилотная рабочая версия с кодами 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,18 +10,56 @@ 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()
{
deleteAllModuls();
delete ui;
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)
@@ -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);
}