#include #include #include #include #include "fimtaskswidget.h" #include "ui_fimtaskswidget.h" #include "tasksAmmFim.h" FIMtasksWidget::FIMtasksWidget(QWidget *parent) : QWidget(parent), ui(new Ui::FIMtasksWidget) { ui->setupUi(this); loadTasksAmmFimFromXML(); preparationTreeWidget(); fillTree(); } FIMtasksWidget::~FIMtasksWidget() { delete ui; } void FIMtasksWidget::loadTasksAmmFimFromXML() { QDomDocument docTasksDOM; QString xmlFileName = "./tasksFIM.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 RRJTasksElement = docTasksDOM.firstChildElement("RRJTasks"); if(RRJTasksElement.isNull()) return; QDomElement taskElement = RRJTasksElement.firstChildElement(); if(taskElement.isNull()) return; do {/*task*/ QString name = taskElement.nodeName(); QDomNamedNodeMap nodeMap = taskElement.attributes(); if(name == "task") { TaskAmmFim task; task.initialize(nodeMap.namedItem("id").nodeValue().toInt(), nodeMap.namedItem("type").nodeValue(), nodeMap.namedItem("title").nodeValue(), nodeMap.namedItem("status").nodeValue(), nodeMap.namedItem("created").nodeValue(), nodeMap.namedItem("changed").nodeValue()); QDomElement malfunctionElement = taskElement.firstChildElement(); if(!malfunctionElement.isNull()) { do {/*malfunction*/ QString name = malfunctionElement.nodeName(); QDomNamedNodeMap nodeMap = malfunctionElement.attributes(); if(name == "malfunction") { Malfunction malfunction; malfunction.initialize(nodeMap.namedItem("dmCode").nodeValue(), nodeMap.namedItem("num").nodeValue(), nodeMap.namedItem("description").nodeValue()); QDomElement signElement = malfunctionElement.firstChildElement(); if(!signElement.isNull()) { do {/*malfunctionSign*/ QString name = signElement.nodeName(); QDomNamedNodeMap nodeMap = signElement.attributes(); if(name == "malfunctionSign") { MalfunctionSign sign; sign.initialize(nodeMap.namedItem("type").nodeValue().toInt(), nodeMap.namedItem("description").nodeValue()); malfunction.addMalfunctionSign(sign); } }while(! (signElement = signElement.nextSiblingElement()).isNull()); } task.addMalfunction(malfunction); } }while(! (malfunctionElement = malfunctionElement.nextSiblingElement()).isNull()); } listTaskAmmFim.append(task); } }while (! (taskElement = taskElement.nextSiblingElement()).isNull()); } } void FIMtasksWidget::fillTree() { for(int i = 0; i < listTaskAmmFim.count(); i++) {/*Задачи*/ TaskAmmFim task = listTaskAmmFim.at(i); QTreeWidgetItem* itemTask = new QTreeWidgetItem(); itemTask->setText(0, task.title); itemTask->setText(1, QString::number(task.id)); itemTask->setFlags(itemTask->flags() | Qt::ItemIsUserCheckable); itemTask->setCheckState(0, Qt::Checked); itemTask->setIcon(0, QIcon(":/resources/icons/procedure.png")); ui->treeWidget->addTopLevelItem(itemTask); for (int j = 0; j < task.malfunctionList.count(); j++) {/*Неисправности*/ Malfunction malfunction = task.malfunctionList.at(j); QTreeWidgetItem* itemMalfunction = new QTreeWidgetItem(); itemMalfunction->setText(0, malfunction.description); itemMalfunction->setFlags(itemMalfunction->flags() | Qt::ItemIsUserCheckable); itemMalfunction->setCheckState(0, Qt::Checked); itemMalfunction->setIcon(0, QIcon(":/resources/icons/malfunction.png")); itemTask->addChild(itemMalfunction); for (int k = 0; k < malfunction.malfunctionSigns.count(); k++) {/*Сигнализация*/ MalfunctionSign sign = malfunction.malfunctionSigns.at(k); QTreeWidgetItem* itemSign = new QTreeWidgetItem(); itemSign->setText(0, sign.description); //itemSign->setFlags(itemSign->flags() | Qt::ItemIsUserCheckable); //itemSign->setCheckState(0, Qt::Checked); itemSign->setIcon(0, QIcon(":/resources/icons/sign.png")); itemMalfunction->addChild(itemSign); } } } } void FIMtasksWidget::preparationTreeWidget() { ui->treeWidget->setColumnCount(2); reSetHeadTreeWidget(); ui->treeWidget->setColumnWidth(ColumnsTree::clmn_ID, 20); ui->treeWidget->setColumnWidth(ColumnsTree::clmn_Title, 500); //ui->treeWidget->setColumnHidden(ColumnsTree::clmn_ID, true); } void FIMtasksWidget::reSetHeadTreeWidget() { QStringList listHeaders = {tr("Title"), tr("ID")}; ui->treeWidget->setHeaderLabels(listHeaders); }