Сделал выдачу tasksFIM.xml из сервера по запросу GUI-клиента

This commit is contained in:
krivoshein
2025-01-17 14:29:27 +03:00
parent 24fb521e03
commit 1950690f82
24 changed files with 342 additions and 91 deletions

View File

@@ -62,6 +62,19 @@ void DocTasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current,
}
}
void DocTasksWidget::slot_NeedUpdateUI()
{
loadTasksAMM();
}
void DocTasksWidget::loadTasksAMM()
{
//Обновление дерева
treeWidget->clear();
//TODO собственно обновление дерева
}
void DocTasksWidget::domElementParser(QDomElement element, Module* moduleParent)
{
QString name;

View File

@@ -27,6 +27,10 @@ public:
private Q_SLOTS:
void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
public Q_SLOTS:
//Слот обработки сигнала необходимости обновления интерфейса
void slot_NeedUpdateUI();
private:
void domElementParser(QDomElement element, Module* moduleParent);
void loadDocTasksFromXML();
@@ -38,11 +42,14 @@ private:
void updateTreeWidget();
void addModuleToTreeWidget(Module* module, QTreeWidgetItem* parentItem = nullptr);
void loadTasksAMM();
private:
Ui::DocTasksWidget *ui;
QTreeWidget* treeWidget;
QList<Module*> listAllModules;
};
#endif // DOCTASKSWIDGET_H

View File

@@ -6,17 +6,18 @@
#include "ui_fimtaskswidget.h"
#include "tasksAmmFim.h"
FIMtasksWidget::FIMtasksWidget(QWidget *parent) :
FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, QWidget *parent) :
QWidget(parent),
ui(new Ui::FIMtasksWidget)
ui(new Ui::FIMtasksWidget),
connectorToServer(connectorToServer)
{
ui->setupUi(this);
loadTasksAmmFimFromXML();
//loadTasksAmmFimFromXML();
preparationTreeWidget();
fillTree();
//fillTree();
}
FIMtasksWidget::~FIMtasksWidget()
@@ -24,92 +25,86 @@ FIMtasksWidget::~FIMtasksWidget()
delete ui;
}
void FIMtasksWidget::loadTasksAmmFimFromXML()
QList<TaskAmmFim> FIMtasksWidget::loadTasksAmmFimFromXML(QByteArray array)
{
QList<TaskAmmFim> listTaskAmmFim;
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;
docTasksDOM.setContent(array);
QDomElement taskElement = RRJTasksElement.firstChildElement();
if(taskElement.isNull())
return;
QDomElement RRJTasksElement = docTasksDOM.firstChildElement("RRJTasks");
if(RRJTasksElement.isNull())
return listTaskAmmFim;
do
{/*task*/
QString name = taskElement.nodeName();
QDomNamedNodeMap nodeMap = taskElement.attributes();
QDomElement taskElement = RRJTasksElement.firstChildElement();
if(taskElement.isNull())
return listTaskAmmFim;
if(name == "task")
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())
{
TaskAmmFim task;
do
{/*malfunction*/
QString name = malfunctionElement.nodeName();
QDomNamedNodeMap nodeMap = malfunctionElement.attributes();
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());
if(name == "malfunction")
{
Malfunction malfunction;
QDomElement malfunctionElement = taskElement.firstChildElement();
if(!malfunctionElement.isNull())
{
do
{/*malfunction*/
QString name = malfunctionElement.nodeName();
QDomNamedNodeMap nodeMap = malfunctionElement.attributes();
malfunction.initialize(nodeMap.namedItem("dmCode").nodeValue(),
nodeMap.namedItem("num").nodeValue(),
nodeMap.namedItem("description").nodeValue());
if(name == "malfunction")
QDomElement signElement = malfunctionElement.firstChildElement();
if(!signElement.isNull())
{
Malfunction malfunction;
do
{/*malfunctionSign*/
QString name = signElement.nodeName();
QDomNamedNodeMap nodeMap = signElement.attributes();
malfunction.initialize(nodeMap.namedItem("dmCode").nodeValue(),
nodeMap.namedItem("num").nodeValue(),
nodeMap.namedItem("description").nodeValue());
if(name == "malfunctionSign")
{
MalfunctionSign sign;
QDomElement signElement = malfunctionElement.firstChildElement();
if(!signElement.isNull())
{
do
{/*malfunctionSign*/
QString name = signElement.nodeName();
QDomNamedNodeMap nodeMap = signElement.attributes();
sign.initialize(nodeMap.namedItem("type").nodeValue().toInt(),
nodeMap.namedItem("description").nodeValue());
if(name == "malfunctionSign")
{
MalfunctionSign sign;
malfunction.addMalfunctionSign(sign);
}
sign.initialize(nodeMap.namedItem("type").nodeValue().toInt(),
nodeMap.namedItem("description").nodeValue());
malfunction.addMalfunctionSign(sign);
}
}while(! (signElement = signElement.nextSiblingElement()).isNull());
}
task.addMalfunction(malfunction);
}while(! (signElement = signElement.nextSiblingElement()).isNull());
}
}while(! (malfunctionElement = malfunctionElement.nextSiblingElement()).isNull());
}
listTaskAmmFim.append(task);
task.addMalfunction(malfunction);
}
}while(! (malfunctionElement = malfunctionElement.nextSiblingElement()).isNull());
}
}while (! (taskElement = taskElement.nextSiblingElement()).isNull());
}
listTaskAmmFim.append(task);
}
}while (! (taskElement = taskElement.nextSiblingElement()).isNull());
return listTaskAmmFim;
}
void FIMtasksWidget::fillTree()
void FIMtasksWidget::fillTree(QList<TaskAmmFim> listTaskAmmFim)
{
for(int i = 0; i < listTaskAmmFim.count(); i++)
{/*Задачи*/
@@ -172,3 +167,22 @@ void FIMtasksWidget::reSetHeadTreeWidget()
QStringList listHeaders = {tr("Title"), tr("ID")};
ui->treeWidget->setHeaderLabels(listHeaders);
}
void FIMtasksWidget::slot_NeedUpdateUI()
{
loadTasksFIM();
}
void FIMtasksWidget::loadTasksFIM()
{
//Обновление дерева
ui->treeWidget->clear();
//собственно обновление дерева
fillTree(connectorToServer->getListTaskFim());
}
void FIMtasksWidget::on_btnUpdateTasks_clicked()
{
connectorToServer->sendQueryTasksXML("fim");
}

View File

@@ -3,6 +3,7 @@
#include <QWidget>
#include "tasksAmmFim.h"
#include "connectortoserver.h"
namespace Ui {
class FIMtasksWidget;
@@ -19,22 +20,34 @@ private:
};
public:
explicit FIMtasksWidget(QWidget *parent = nullptr);
explicit FIMtasksWidget(ConnectorToServer* connectorToServer, QWidget *parent = nullptr);
~FIMtasksWidget();
private:
void loadTasksAmmFimFromXML();
void fillTree();
public:
static QList<TaskAmmFim> loadTasksAmmFimFromXML(QByteArray array);
private:
void fillTree(QList<TaskAmmFim> listTaskAmmFim);
void preparationTreeWidget();
void reSetHeadTreeWidget();
public Q_SLOTS:
//Слот обработки сигнала необходимости обновления интерфейса
void slot_NeedUpdateUI();
private:
void loadTasksFIM();
public:
QString userName;
QList<TaskAmmFim> listTaskAmmFim;
//QList<TaskAmmFim> listTaskAmmFim;
private slots:
void on_btnUpdateTasks_clicked();
private:
Ui::FIMtasksWidget *ui;
ConnectorToServer* connectorToServer;
};
#endif // FIMTASKSWIDGET_H

View File

@@ -22,6 +22,13 @@
<string>FIM</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="3" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>List of tasks</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QTreeWidget" name="treeWidget">
<column>
@@ -31,12 +38,16 @@
</column>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>List of tasks</string>
</property>
</widget>
<item row="5" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QToolButton" name="btnUpdateTasks">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>