cfiController

This commit is contained in:
2026-01-28 13:19:52 +03:00
parent 952e7ae65d
commit 0c5509a426
17 changed files with 348 additions and 81 deletions

View File

@@ -62,6 +62,8 @@ add_library(Server SHARED
cficontroller/cficontroller.h cficontroller/cficontroller.h
cficontroller/cfiobject.cpp cficontroller/cfiobject.cpp
cficontroller/cfiobject.h cficontroller/cfiobject.h
cficontroller/vectordouble.cpp
cficontroller/vectordouble.h
Server.qrc Server.qrc
) )

View File

@@ -18,5 +18,6 @@
<file>resources/icons/reparation.png</file> <file>resources/icons/reparation.png</file>
<file>resources/icons/save.png</file> <file>resources/icons/save.png</file>
<file>resources/icons/stoped.png</file> <file>resources/icons/stoped.png</file>
<file>resources/blankXML/ListCFI.xml</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@@ -15,7 +15,7 @@ void DBAnswerParser::initialize(DataParser *dataParser)
QByteArray DBAnswerParser::listInstructors(bool result, QList<Instructor> *listInstructors) QByteArray DBAnswerParser::listInstructors(bool result, QList<Instructor> *listInstructors)
{ {
QDomDocument commonDOM; QDomDocument commonDOM;
if(! Tools::loadXMLtoDOM(":/resources/blankXML/ListInstructors.xml", &commonDOM)) if(! Tools::loadFileXMLtoDOM(":/resources/blankXML/ListInstructors.xml", &commonDOM))
return QByteArray(); return QByteArray();
QDomNode listNode = commonDOM.namedItem("ListInstructors"); QDomNode listNode = commonDOM.namedItem("ListInstructors");
@@ -34,7 +34,7 @@ QByteArray DBAnswerParser::listInstructors(bool result, QList<Instructor> *listI
instructorNode.toElement().setAttribute("logged_in", instructor.getLoggedIn()); instructorNode.toElement().setAttribute("logged_in", instructor.getLoggedIn());
} }
Tools::saveDOMtoXML("ListInstructors.xml", &commonDOM); Tools::saveDOMtoFileXML("ListInstructors.xml", &commonDOM);
return commonDOM.toByteArray(); return commonDOM.toByteArray();
} }
@@ -42,7 +42,7 @@ QByteArray DBAnswerParser::listInstructors(bool result, QList<Instructor> *listI
QByteArray DBAnswerParser::listGroups(bool result, QList<Group> *listGroups) QByteArray DBAnswerParser::listGroups(bool result, QList<Group> *listGroups)
{ {
QDomDocument commonDOM; QDomDocument commonDOM;
if(! Tools::loadXMLtoDOM(":/resources/blankXML/ListGroups.xml", &commonDOM)) if(! Tools::loadFileXMLtoDOM(":/resources/blankXML/ListGroups.xml", &commonDOM))
return QByteArray(); return QByteArray();
QDomNode listNode = commonDOM.namedItem("ListGroups"); QDomNode listNode = commonDOM.namedItem("ListGroups");
@@ -56,7 +56,7 @@ QByteArray DBAnswerParser::listGroups(bool result, QList<Group> *listGroups)
groupNode.toElement().setAttribute("name", group.getName()); groupNode.toElement().setAttribute("name", group.getName());
} }
Tools::saveDOMtoXML("ListGroups.xml", &commonDOM); Tools::saveDOMtoFileXML("ListGroups.xml", &commonDOM);
return commonDOM.toByteArray(); return commonDOM.toByteArray();
} }
@@ -64,7 +64,7 @@ QByteArray DBAnswerParser::listGroups(bool result, QList<Group> *listGroups)
QByteArray DBAnswerParser::listTrainees(bool result, QList<Trainee> *listTrainees) QByteArray DBAnswerParser::listTrainees(bool result, QList<Trainee> *listTrainees)
{ {
QDomDocument commonDOM; QDomDocument commonDOM;
if(! Tools::loadXMLtoDOM(":/resources/blankXML/ListTrainees.xml", &commonDOM)) if(! Tools::loadFileXMLtoDOM(":/resources/blankXML/ListTrainees.xml", &commonDOM))
return QByteArray(); return QByteArray();
QDomNode listNode = commonDOM.namedItem("ListTrainees"); QDomNode listNode = commonDOM.namedItem("ListTrainees");
@@ -95,7 +95,7 @@ QByteArray DBAnswerParser::listTrainees(bool result, QList<Trainee> *listTrainee
timingNode.toElement().setAttribute("operatingTime", timing.getOperatingTimeS()); timingNode.toElement().setAttribute("operatingTime", timing.getOperatingTimeS());
} }
Tools::saveDOMtoXML("ListTrainees.xml", &commonDOM); Tools::saveDOMtoFileXML("ListTrainees.xml", &commonDOM);
return commonDOM.toByteArray(); return commonDOM.toByteArray();
} }
@@ -142,7 +142,7 @@ QByteArray DBAnswerParser::listContacts(bool result, QList<ContactModel> *listCo
QByteArray DBAnswerParser::listTasksAMMofTrainee(bool result, QList<TaskAmmFim> *listTasks, int trainee_id, bool full_list) QByteArray DBAnswerParser::listTasksAMMofTrainee(bool result, QList<TaskAmmFim> *listTasks, int trainee_id, bool full_list)
{ {
QDomDocument commonDOM; QDomDocument commonDOM;
if(! Tools::loadXMLtoDOM(":/resources/blankXML/ListTasksAMM.xml", &commonDOM)) if(! Tools::loadFileXMLtoDOM(":/resources/blankXML/ListTasksAMM.xml", &commonDOM))
return QByteArray(); return QByteArray();
QDomNode listNode = commonDOM.namedItem("ListTasksAMM"); QDomNode listNode = commonDOM.namedItem("ListTasksAMM");
@@ -173,7 +173,7 @@ QByteArray DBAnswerParser::listTasksAMMofTrainee(bool result, QList<TaskAmmFim>
} }
} }
Tools::saveDOMtoXML("ListTasksAMM.xml", &commonDOM); Tools::saveDOMtoFileXML("ListTasksAMM.xml", &commonDOM);
return commonDOM.toByteArray(); return commonDOM.toByteArray();
} }
@@ -181,7 +181,7 @@ QByteArray DBAnswerParser::listTasksAMMofTrainee(bool result, QList<TaskAmmFim>
QByteArray DBAnswerParser::listTasksFIMofTrainee(bool result, QList<TaskAmmFim> *listTasks, int trainee_id, bool full_list) QByteArray DBAnswerParser::listTasksFIMofTrainee(bool result, QList<TaskAmmFim> *listTasks, int trainee_id, bool full_list)
{ {
QDomDocument commonDOM; QDomDocument commonDOM;
if(! Tools::loadXMLtoDOM(":/resources/blankXML/ListTasksFIM.xml", &commonDOM)) if(! Tools::loadFileXMLtoDOM(":/resources/blankXML/ListTasksFIM.xml", &commonDOM))
return QByteArray(); return QByteArray();
QDomNode listNode = commonDOM.namedItem("ListTasksFIM"); QDomNode listNode = commonDOM.namedItem("ListTasksFIM");
@@ -257,7 +257,7 @@ QByteArray DBAnswerParser::listTasksFIMofTrainee(bool result, QList<TaskAmmFim>
} }
} }
Tools::saveDOMtoXML("ListTasksFIM.xml", &commonDOM); Tools::saveDOMtoFileXML("ListTasksFIM.xml", &commonDOM);
return commonDOM.toByteArray(); return commonDOM.toByteArray();
} }

View File

@@ -9,7 +9,7 @@ DocsAnswerParser::DocsAnswerParser(QObject *parent) : QObject(parent)
QByteArray DocsAnswerParser::listSubProc(QList<SubProc> list, QString dmCode) QByteArray DocsAnswerParser::listSubProc(QList<SubProc> list, QString dmCode)
{ {
QDomDocument commonDOM; QDomDocument commonDOM;
if(! Tools::loadXMLtoDOM(":/resources/blankXML/ListSubProc.xml", &commonDOM)) if(! Tools::loadFileXMLtoDOM(":/resources/blankXML/ListSubProc.xml", &commonDOM))
return QByteArray(); return QByteArray();
QDomNode listNode = commonDOM.namedItem("ListSubProc"); QDomNode listNode = commonDOM.namedItem("ListSubProc");
@@ -24,7 +24,7 @@ QByteArray DocsAnswerParser::listSubProc(QList<SubProc> list, QString dmCode)
subProcNode.toElement().setAttribute("canplay", subProc.getModeListStr()); subProcNode.toElement().setAttribute("canplay", subProc.getModeListStr());
} }
Tools::saveDOMtoXML("ListSubProc.xml", &commonDOM); Tools::saveDOMtoFileXML("ListSubProc.xml", &commonDOM);
return commonDOM.toByteArray(); return commonDOM.toByteArray();
} }

View File

@@ -44,7 +44,7 @@ bool DocsUpdater::updateDocsXML()
QString pathDocsFile = updateController->getPathAdditionalFile(tasksAMMfileName); QString pathDocsFile = updateController->getPathAdditionalFile(tasksAMMfileName);
QDomDocument docTasksDOM; QDomDocument docTasksDOM;
if(! Tools::loadXMLtoDOM(pathDocsFile, &docTasksDOM)) if(! Tools::loadFileXMLtoDOM(pathDocsFile, &docTasksDOM))
return false; return false;
QDomElement manifestElement = docTasksDOM.firstChildElement("manifest"); QDomElement manifestElement = docTasksDOM.firstChildElement("manifest");
@@ -59,7 +59,7 @@ bool DocsUpdater::updateDocsXML()
domElementParserAMM(manifestElement, nullptr); domElementParserAMM(manifestElement, nullptr);
if(! Tools::saveDOMtoXML(pathDocsFile, &docTasksDOM)) if(! Tools::saveDOMtoFileXML(pathDocsFile, &docTasksDOM))
{ {
deleteAllModulsAMM(); deleteAllModulsAMM();
listTasksAMM.clear(); listTasksAMM.clear();
@@ -271,7 +271,7 @@ bool DocsUpdater::processingScenXML(const QString dmCode, QString &canplay, QLis
QDomDocument docScenDOM; QDomDocument docScenDOM;
if(! Tools::loadXMLtoDOM(pathScenXMLFile, &docScenDOM)) if(! Tools::loadFileXMLtoDOM(pathScenXMLFile, &docScenDOM))
return false; return false;
QDomElement scenarioElement = docScenDOM.firstChildElement("scenario"); QDomElement scenarioElement = docScenDOM.firstChildElement("scenario");

View File

@@ -7,12 +7,13 @@ ProcessingSystem::ProcessingSystem(ProviderDBLMS* providerDBLMS, UpdateControlle
QObject(parent), QObject(parent),
updateController(nullptr), updateController(nullptr),
docsUpdater(nullptr), docsUpdater(nullptr),
cfiController(cfiController), cfiController(nullptr),
providerDBLMS(nullptr) providerDBLMS(nullptr)
{ {
this->providerDBLMS = providerDBLMS; this->providerDBLMS = providerDBLMS;
this->updateController = updateController; this->updateController = updateController;
this->docsUpdater = docsUpdater; this->docsUpdater = docsUpdater;
this->cfiController = cfiController;
} }
void ProcessingSystem::initialize(MultiThreadServer *server, DataParser *dataParser, void ProcessingSystem::initialize(MultiThreadServer *server, DataParser *dataParser,

View File

@@ -105,9 +105,15 @@ bool Tools::checkNonStaticData(QString path)
return false; return false;
} }
bool Tools::loadByteArrayXMLtoDOM(const QByteArray &array, QDomDocument *commonDOM)
{
commonDOM->setContent(array);
return true;
}
bool Tools::loadXMLtoDOM(QString pathNameFile, QDomDocument *commonDOM)
bool Tools::loadFileXMLtoDOM(QString pathNameFile, QDomDocument *commonDOM)
{ {
QFile xmlInFile(pathNameFile); QFile xmlInFile(pathNameFile);
@@ -122,7 +128,23 @@ bool Tools::loadXMLtoDOM(QString pathNameFile, QDomDocument *commonDOM)
return true; return true;
} }
bool Tools::saveDOMtoXML(QString pathNameFile, QDomDocument *commonDOM) bool Tools::loadFileXMLtoByteArray(QString pathNameFile, QByteArray &array)
{
QFile xmlInFile(pathNameFile);
if (! xmlInFile.open(QFile::ReadOnly | QFile::Text)) {
qDebug() << "loadXMLtoDOM: Couldn't read the file: " + pathNameFile;
return false;
}
array = xmlInFile.readAll();
xmlInFile.close();
return true;
}
bool Tools::saveDOMtoFileXML(QString pathNameFile, QDomDocument *commonDOM)
{ {
QFile xmlOutFile(pathNameFile); QFile xmlOutFile(pathNameFile);
if (!xmlOutFile.open(QFile::WriteOnly | QFile::Text)) if (!xmlOutFile.open(QFile::WriteOnly | QFile::Text))

View File

@@ -76,8 +76,10 @@ public:
static QString createFullPath(QString path); static QString createFullPath(QString path);
static bool checkNonStaticData(QString path); static bool checkNonStaticData(QString path);
static bool loadXMLtoDOM(QString pathNameFile, QDomDocument* commonDOM); static bool loadByteArrayXMLtoDOM(const QByteArray& array, QDomDocument* commonDOM);
static bool saveDOMtoXML(QString pathNameFile, QDomDocument* commonDOM); static bool loadFileXMLtoDOM(QString pathNameFile, QDomDocument* commonDOM);
static bool loadFileXMLtoByteArray(QString pathNameFile, QByteArray& array);
static bool saveDOMtoFileXML(QString pathNameFile, QDomDocument* commonDOM);
}; };

View File

@@ -23,7 +23,8 @@ void CfiController::unLockAccessToCfiXML()
mtxAccess.unlock(); mtxAccess.unlock();
} }
bool CfiController::parsingCfiXML()
bool CfiController::parsingCfiXML(QMap<int, CfiObject>& mapCfiObjects)
{ {
QMutexLocker locker(&mtxAccess); QMutexLocker locker(&mtxAccess);
@@ -32,15 +33,91 @@ bool CfiController::parsingCfiXML()
QString pathCfiListFile = updateController->getPathAdditionalFile(cfiListFileName); QString pathCfiListFile = updateController->getPathAdditionalFile(cfiListFileName);
QDomDocument docCfiListDOM; QDomDocument docCfiListDOM_Orig;
if(! Tools::loadXMLtoDOM(pathCfiListFile, &docCfiListDOM)) if(! Tools::loadFileXMLtoDOM(pathCfiListFile, &docCfiListDOM_Orig))
return false; return false;
QDomElement CFIObjectsElement = docCfiListDOM.firstChildElement("CFIObjects"); if(!parsingCfiXML_DOM(docCfiListDOM_Orig, mapCfiObjects))
return false;
return true;
}
bool CfiController::updateCfiXML(const QByteArray &array)
{
QMutexLocker locker(&mtxAccess);
if(!updateController)
return false;
//Исходный файл (на Сервере)
QString pathCfiListFile = updateController->getPathAdditionalFile(cfiListFileName);
QDomDocument docCfiListDOM_Orig;
if(! Tools::loadFileXMLtoDOM(pathCfiListFile, &docCfiListDOM_Orig))
return false;
//Новый файл с изменениями (поступивший от клиента) в формате массива
QDomDocument docCfiListDOM_New;
if(! Tools::loadByteArrayXMLtoDOM(array, &docCfiListDOM_New))
return false;
QMap<int, CfiObject> mapCfiObjects_Orig;
QMap<int, CfiObject> mapCfiObjects_New;
if(!parsingCfiXML_DOM(docCfiListDOM_Orig, mapCfiObjects_Orig))
return false;
if(!parsingCfiXML_DOM(docCfiListDOM_New, mapCfiObjects_New))
return false;
if(!merge2map(mapCfiObjects_Orig, mapCfiObjects_New))
return false;
return saveNewCfiListFile(mapCfiObjects_Orig);
}
/*
void CfiController::test()
{
QString pathCfiListFile = updateController->getPathAdditionalFile("/new_CfiList.xml");
QByteArray array;
Tools::loadFileXMLtoByteArray(pathCfiListFile, array);
updateCfiXML(array);
}
*/
Vector3dDouble CfiController::getXYZfromElement(QDomElement element)
{
Vector3dDouble vector3D;
QDomNamedNodeMap nodeMap = element.attributes();
vector3D.setX(germanLocale->toDouble(nodeMap.namedItem("x").nodeValue()));
vector3D.setY(germanLocale->toDouble(nodeMap.namedItem("y").nodeValue()));
vector3D.setZ(germanLocale->toDouble(nodeMap.namedItem("z").nodeValue()));
return vector3D;
}
Vector2dDouble CfiController::getXYfromElement(QDomElement element)
{
Vector2dDouble vector2D;
QDomNamedNodeMap nodeMap = element.attributes();
vector2D.setX(germanLocale->toDouble(nodeMap.namedItem("x").nodeValue()));
vector2D.setY(germanLocale->toDouble(nodeMap.namedItem("y").nodeValue()));
return vector2D;
}
double CfiController::roundDoubleVal(double value, int cntNumAfterPoint)
{
return round(value * pow(10, cntNumAfterPoint)) / pow(10, cntNumAfterPoint);
}
bool CfiController::parsingCfiXML_DOM(QDomDocument &domDoc, QMap<int, CfiObject>& mapCfiObjects)
{
QDomElement CFIObjectsElement = domDoc.firstChildElement("CFIObjects");
if(CFIObjectsElement.isNull()) if(CFIObjectsElement.isNull())
return false; return false;
listCfiObjects.clear(); mapCfiObjects.clear();
//Parsing //Parsing
QDomElement oneCFIObjectElement = CFIObjectsElement.firstChildElement(); QDomElement oneCFIObjectElement = CFIObjectsElement.firstChildElement();
@@ -57,6 +134,8 @@ bool CfiController::parsingCfiXML()
{ {
CfiObject cfiObj; CfiObject cfiObj;
cfiObj.setDomElement(oneCFIObjectElement);
//атрибуты CFIObject //атрибуты CFIObject
QDomNamedNodeMap nodeMapOneCFIObject = oneCFIObjectElement.attributes(); QDomNamedNodeMap nodeMapOneCFIObject = oneCFIObjectElement.attributes();
cfiObj.setId(nodeMapOneCFIObject.namedItem("id").nodeValue().toInt()); cfiObj.setId(nodeMapOneCFIObject.namedItem("id").nodeValue().toInt());
@@ -85,15 +164,15 @@ bool CfiController::parsingCfiXML()
setCamPos.state = nodeMapSetcamerapos.namedItem("state").nodeValue(); setCamPos.state = nodeMapSetcamerapos.namedItem("state").nodeValue();
setCamPos.panelName = nodeMapSetcamerapos.namedItem("panelName").nodeValue(); setCamPos.panelName = nodeMapSetcamerapos.namedItem("panelName").nodeValue();
setCamPos.prevCamOffsetMARposY = germanLocale->toFloat(nodeMapSetcamerapos.namedItem("prevCamOffsetMARposY").nodeValue()); setCamPos.prevCamOffsetMARposY = germanLocale->toDouble(nodeMapSetcamerapos.namedItem("prevCamOffsetMARposY").nodeValue());
setCamPos.camOffsetMARposY = germanLocale->toFloat(nodeMapSetcamerapos.namedItem("camOffsetMARposY").nodeValue()); setCamPos.camOffsetMARposY = germanLocale->toDouble(nodeMapSetcamerapos.namedItem("camOffsetMARposY").nodeValue());
setCamPos.prevCharControlerHeight = germanLocale->toFloat(nodeMapSetcamerapos.namedItem("prevCharControlerHeight").nodeValue()); setCamPos.prevCharControlerHeight = germanLocale->toDouble(nodeMapSetcamerapos.namedItem("prevCharControlerHeight").nodeValue());
setCamPos.charControlerHeight = germanLocale->toFloat(nodeMapSetcamerapos.namedItem("charControlerHeight").nodeValue()); setCamPos.charControlerHeight = germanLocale->toDouble(nodeMapSetcamerapos.namedItem("charControlerHeight").nodeValue());
setCamPos.FOV = germanLocale->toFloat(nodeMapSetcamerapos.namedItem("FOV").nodeValue()); setCamPos.FOV = germanLocale->toDouble(nodeMapSetcamerapos.namedItem("FOV").nodeValue());
setCamPos.moveSpeed = germanLocale->toFloat(nodeMapSetcamerapos.namedItem("moveSpeed").nodeValue()); setCamPos.moveSpeed = germanLocale->toDouble(nodeMapSetcamerapos.namedItem("moveSpeed").nodeValue());
setCamPos.projectionSize = germanLocale->toFloat(nodeMapSetcamerapos.namedItem("projectionSize").nodeValue()); setCamPos.projectionSize = germanLocale->toDouble(nodeMapSetcamerapos.namedItem("projectionSize").nodeValue());
setCamPos.offset = germanLocale->toFloat(nodeMapSetcamerapos.namedItem("offset").nodeValue()); setCamPos.offset = germanLocale->toDouble(nodeMapSetcamerapos.namedItem("offset").nodeValue());
setCamPos.prevPlayerRot = germanLocale->toFloat(nodeMapSetcamerapos.namedItem("prevPlayerRot").nodeValue()); setCamPos.prevPlayerRot = germanLocale->toDouble(nodeMapSetcamerapos.namedItem("prevPlayerRot").nodeValue());
//childs setcamerapos //childs setcamerapos
QDomElement loc_Element; QDomElement loc_Element;
@@ -122,28 +201,55 @@ bool CfiController::parsingCfiXML()
cfiObj.setSetCameraPos(setCamPos); cfiObj.setSetCameraPos(setCamPos);
listCfiObjects.append(cfiObj); mapCfiObjects.insert(cfiObj.getId(), cfiObj);
} }
}while (! (oneCFIObjectElement = oneCFIObjectElement.nextSiblingElement()).isNull()); }while (! (oneCFIObjectElement = oneCFIObjectElement.nextSiblingElement()).isNull());
return true; return true;
} }
QVector3D CfiController::getXYZfromElement(QDomElement element) bool CfiController::merge2map(QMap<int, CfiObject> &mapCfiObjects_orig, QMap<int, CfiObject> &mapCfiObjects_new)
{ {
QVector3D vector3D; for(CfiObject cfiObj : mapCfiObjects_new)
QDomNamedNodeMap nodeMap = element.attributes(); {
vector3D.setX(germanLocale->toFloat(nodeMap.namedItem("x").nodeValue())); int id = cfiObj.getId();
vector3D.setY(germanLocale->toFloat(nodeMap.namedItem("y").nodeValue()));
vector3D.setZ(germanLocale->toFloat(nodeMap.namedItem("z").nodeValue())); if(mapCfiObjects_orig.contains(id))
return vector3D; {//Такой есть
if(cfiObj.getIsChanged())
{//Заменяем
mapCfiObjects_orig.take(id);
cfiObj.setIsChanged(false);
cfiObj.resetIsChangedInDomElement();
mapCfiObjects_orig.insert(id, cfiObj);
}
}
else
{//Добавляем
cfiObj.setIsChanged(false);
cfiObj.resetIsChangedInDomElement();
mapCfiObjects_orig.insert(id, cfiObj);
}
}
return true;
} }
QVector2D CfiController::getXYfromElement(QDomElement element) bool CfiController::saveNewCfiListFile(QMap<int, CfiObject> &mapCfiObjects)
{ {
QVector2D vector2D; QDomDocument commonDOM;
QDomNamedNodeMap nodeMap = element.attributes(); if(! Tools::loadFileXMLtoDOM(":/resources/blankXML/ListCFI.xml", &commonDOM))
vector2D.setX(germanLocale->toFloat(nodeMap.namedItem("x").nodeValue())); return false;
vector2D.setY(germanLocale->toFloat(nodeMap.namedItem("y").nodeValue()));
return vector2D; QDomNode listNode = commonDOM.namedItem("CFIObjects");
for(CfiObject cfiObj : mapCfiObjects)
{
listNode.appendChild(cfiObj.getDomElement());
}
QString pathCfiListFile = updateController->getPathAdditionalFile(cfiListFileName);
return Tools::saveDOMtoFileXML(pathCfiListFile, &commonDOM);
} }

View File

@@ -17,20 +17,35 @@ public:
void lockAccessToCfiXML(); void lockAccessToCfiXML();
void unLockAccessToCfiXML(); void unLockAccessToCfiXML();
bool parsingCfiXML(); //Распарсивание файла CfiList.xml
bool parsingCfiXML(QMap<int, CfiObject>& mapCfiObjects);
//Слияние (обновление) с новыми данными
bool updateCfiXML(const QByteArray& array);
//Для теста
//void test();
signals: signals:
private: private:
QVector3D getXYZfromElement(QDomElement element); Vector3dDouble getXYZfromElement(QDomElement element);
QVector2D getXYfromElement(QDomElement element); Vector2dDouble getXYfromElement(QDomElement element);
double roundDoubleVal(double value, int cntNumAfterPoint);
bool parsingCfiXML_DOM(QDomDocument& domDoc, QMap<int, CfiObject>& mapCfiObjects);
bool merge2map(QMap<int, CfiObject>& mapCfiObjects_orig, QMap<int, CfiObject>& mapCfiObjects_new);
bool saveNewCfiListFile(QMap<int, CfiObject>& mapCfiObjects);
private: private:
UpdateController* updateController; UpdateController* updateController;
QMutex mtxAccess; QMutex mtxAccess;
QList<CfiObject> listCfiObjects; //QList<CfiObject> listCfiObjects;
QLocale* germanLocale; QLocale* germanLocale;
}; };

View File

@@ -74,3 +74,18 @@ void CfiObject::setIsChanged(bool value)
{ {
isChanged = value; isChanged = value;
} }
QDomElement CfiObject::getDomElement() const
{
return domElement;
}
void CfiObject::setDomElement(const QDomElement &value)
{
domElement = value;
}
void CfiObject::resetIsChangedInDomElement()
{
domElement.setAttribute("isChanged", "False");
}

View File

@@ -1,10 +1,9 @@
#ifndef CFIOBJECT_H #ifndef CFIOBJECT_H
#define CFIOBJECT_H #define CFIOBJECT_H
#include "vectordouble.h"
#include <QString> #include <QString>
#include <QVector> #include <QDomElement>
#include <QVector2D>
#include <QVector3D>
struct SetCameraPos struct SetCameraPos
{ {
@@ -24,18 +23,18 @@ struct SetCameraPos
float offset; float offset;
float prevPlayerRot; float prevPlayerRot;
QVector2D axesClamp; Vector2dDouble axesClamp;
QVector3D prevPlayerPos; Vector3dDouble prevPlayerPos;
QVector3D playerPos; Vector3dDouble playerPos;
QVector3D playerRot; Vector3dDouble playerRot;
QVector3D prevCamRot; Vector3dDouble prevCamRot;
QVector3D camRot; Vector3dDouble camRot;
QVector3D goCenter; Vector3dDouble goCenter;
QVector3D playerMARpos; Vector3dDouble playerMARpos;
QVector3D playerMARrot; Vector3dDouble playerMARrot;
QVector3D camMARrot; Vector3dDouble camMARrot;
QVector3D playerPosRelativeToThePanel; Vector3dDouble playerPosRelativeToThePanel;
}; };
class CfiObject class CfiObject
@@ -64,6 +63,11 @@ public:
bool getIsChanged() const; bool getIsChanged() const;
void setIsChanged(bool value); void setIsChanged(bool value);
QDomElement getDomElement() const;
void setDomElement(const QDomElement &value);
void resetIsChangedInDomElement();
private: private:
int id; int id;
bool isChanged; bool isChanged;
@@ -73,6 +77,8 @@ private:
QString goName; QString goName;
SetCameraPos setCameraPos; SetCameraPos setCameraPos;
QDomElement domElement;
}; };
#endif // CFIOBJECT_H #endif // CFIOBJECT_H

View File

@@ -0,0 +1,66 @@
#include "vectordouble.h"
Vector2dDouble::Vector2dDouble() :
x(0.0),
y(0.0)
{
}
double Vector2dDouble::getX() const
{
return x;
}
void Vector2dDouble::setX(double value)
{
x = value;
}
double Vector2dDouble::getY() const
{
return y;
}
void Vector2dDouble::setY(double value)
{
y = value;
}
Vector3dDouble::Vector3dDouble() :
x(0.0),
y(0.0),
z(0.0)
{
}
double Vector3dDouble::getX() const
{
return x;
}
void Vector3dDouble::setX(double value)
{
x = value;
}
double Vector3dDouble::getY() const
{
return y;
}
void Vector3dDouble::setY(double value)
{
y = value;
}
double Vector3dDouble::getZ() const
{
return z;
}
void Vector3dDouble::setZ(double value)
{
z = value;
}

View File

@@ -0,0 +1,42 @@
#ifndef VECTORDOUBLE_H
#define VECTORDOUBLE_H
class Vector2dDouble
{
public:
Vector2dDouble();
double getX() const;
void setX(double value);
double getY() const;
void setY(double value);
private:
double x;
double y;
};
class Vector3dDouble
{
public:
Vector3dDouble();
double getX() const;
void setX(double value);
double getY() const;
void setY(double value);
double getZ() const;
void setZ(double value);
private:
double x;
double y;
double z;
};
#endif // VECTORDOUBLE_H

View File

@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<CFIObjects>
</CFIObjects>

View File

@@ -155,19 +155,7 @@ void ServerLMSWidget::slot_UpdateDocs()
QApplication::restoreOverrideCursor(); QApplication::restoreOverrideCursor();
//TODO для теста //TODO для теста
//slot_ParsingCfiXML(); //cfiController->test();
}
void ServerLMSWidget::slot_ParsingCfiXML()
{
QApplication::setOverrideCursor(Qt::WaitCursor);
if(cfiController->parsingCfiXML())
{
//TODO...что-то, наверное, должно происходить?
}
QApplication::restoreOverrideCursor();
} }
void ServerLMSWidget::slot_startInitialization_step1() void ServerLMSWidget::slot_startInitialization_step1()

View File

@@ -101,8 +101,6 @@ public slots:
void slot_UpdateDocs(); void slot_UpdateDocs();
void slot_ParsingCfiXML();
void slot_startInitialization_step1(); void slot_startInitialization_step1();
void slot_setVersion(QString versionStr); void slot_setVersion(QString versionStr);