From 0c5509a426fd4f00f21ff23db5c4a557a39cf898 Mon Sep 17 00:00:00 2001 From: krivoshein Date: Wed, 28 Jan 2026 13:19:52 +0300 Subject: [PATCH] cfiController --- LibServer/CMakeLists.txt | 2 + LibServer/Server.qrc | 1 + LibServer/Systems/Parsers/dbanswerparser.cpp | 20 +-- .../Systems/Parsers/docsanswerparser.cpp | 4 +- LibServer/Systems/docsupdater.cpp | 6 +- LibServer/Systems/processingsystem.cpp | 3 +- LibServer/Systems/tools.cpp | 26 ++- LibServer/Systems/tools.h | 6 +- LibServer/cficontroller/cficontroller.cpp | 162 +++++++++++++++--- LibServer/cficontroller/cficontroller.h | 23 ++- LibServer/cficontroller/cfiobject.cpp | 15 ++ LibServer/cficontroller/cfiobject.h | 34 ++-- LibServer/cficontroller/vectordouble.cpp | 66 +++++++ LibServer/cficontroller/vectordouble.h | 42 +++++ LibServer/resources/blankXML/ListCFI.xml | 3 + LibServer/serverlmswidget.cpp | 14 +- LibServer/serverlmswidget.h | 2 - 17 files changed, 348 insertions(+), 81 deletions(-) create mode 100644 LibServer/cficontroller/vectordouble.cpp create mode 100644 LibServer/cficontroller/vectordouble.h create mode 100644 LibServer/resources/blankXML/ListCFI.xml diff --git a/LibServer/CMakeLists.txt b/LibServer/CMakeLists.txt index 070c4f3..1a8cdf2 100644 --- a/LibServer/CMakeLists.txt +++ b/LibServer/CMakeLists.txt @@ -62,6 +62,8 @@ add_library(Server SHARED cficontroller/cficontroller.h cficontroller/cfiobject.cpp cficontroller/cfiobject.h + cficontroller/vectordouble.cpp + cficontroller/vectordouble.h Server.qrc ) diff --git a/LibServer/Server.qrc b/LibServer/Server.qrc index 09da0c9..26a6445 100644 --- a/LibServer/Server.qrc +++ b/LibServer/Server.qrc @@ -18,5 +18,6 @@ resources/icons/reparation.png resources/icons/save.png resources/icons/stoped.png + resources/blankXML/ListCFI.xml diff --git a/LibServer/Systems/Parsers/dbanswerparser.cpp b/LibServer/Systems/Parsers/dbanswerparser.cpp index 49d2bdf..f730150 100644 --- a/LibServer/Systems/Parsers/dbanswerparser.cpp +++ b/LibServer/Systems/Parsers/dbanswerparser.cpp @@ -15,7 +15,7 @@ void DBAnswerParser::initialize(DataParser *dataParser) QByteArray DBAnswerParser::listInstructors(bool result, QList *listInstructors) { QDomDocument commonDOM; - if(! Tools::loadXMLtoDOM(":/resources/blankXML/ListInstructors.xml", &commonDOM)) + if(! Tools::loadFileXMLtoDOM(":/resources/blankXML/ListInstructors.xml", &commonDOM)) return QByteArray(); QDomNode listNode = commonDOM.namedItem("ListInstructors"); @@ -34,7 +34,7 @@ QByteArray DBAnswerParser::listInstructors(bool result, QList *listI instructorNode.toElement().setAttribute("logged_in", instructor.getLoggedIn()); } - Tools::saveDOMtoXML("ListInstructors.xml", &commonDOM); + Tools::saveDOMtoFileXML("ListInstructors.xml", &commonDOM); return commonDOM.toByteArray(); } @@ -42,7 +42,7 @@ QByteArray DBAnswerParser::listInstructors(bool result, QList *listI QByteArray DBAnswerParser::listGroups(bool result, QList *listGroups) { QDomDocument commonDOM; - if(! Tools::loadXMLtoDOM(":/resources/blankXML/ListGroups.xml", &commonDOM)) + if(! Tools::loadFileXMLtoDOM(":/resources/blankXML/ListGroups.xml", &commonDOM)) return QByteArray(); QDomNode listNode = commonDOM.namedItem("ListGroups"); @@ -56,7 +56,7 @@ QByteArray DBAnswerParser::listGroups(bool result, QList *listGroups) groupNode.toElement().setAttribute("name", group.getName()); } - Tools::saveDOMtoXML("ListGroups.xml", &commonDOM); + Tools::saveDOMtoFileXML("ListGroups.xml", &commonDOM); return commonDOM.toByteArray(); } @@ -64,7 +64,7 @@ QByteArray DBAnswerParser::listGroups(bool result, QList *listGroups) QByteArray DBAnswerParser::listTrainees(bool result, QList *listTrainees) { QDomDocument commonDOM; - if(! Tools::loadXMLtoDOM(":/resources/blankXML/ListTrainees.xml", &commonDOM)) + if(! Tools::loadFileXMLtoDOM(":/resources/blankXML/ListTrainees.xml", &commonDOM)) return QByteArray(); QDomNode listNode = commonDOM.namedItem("ListTrainees"); @@ -95,7 +95,7 @@ QByteArray DBAnswerParser::listTrainees(bool result, QList *listTrainee timingNode.toElement().setAttribute("operatingTime", timing.getOperatingTimeS()); } - Tools::saveDOMtoXML("ListTrainees.xml", &commonDOM); + Tools::saveDOMtoFileXML("ListTrainees.xml", &commonDOM); return commonDOM.toByteArray(); } @@ -142,7 +142,7 @@ QByteArray DBAnswerParser::listContacts(bool result, QList *listCo QByteArray DBAnswerParser::listTasksAMMofTrainee(bool result, QList *listTasks, int trainee_id, bool full_list) { QDomDocument commonDOM; - if(! Tools::loadXMLtoDOM(":/resources/blankXML/ListTasksAMM.xml", &commonDOM)) + if(! Tools::loadFileXMLtoDOM(":/resources/blankXML/ListTasksAMM.xml", &commonDOM)) return QByteArray(); QDomNode listNode = commonDOM.namedItem("ListTasksAMM"); @@ -173,7 +173,7 @@ QByteArray DBAnswerParser::listTasksAMMofTrainee(bool result, QList } } - Tools::saveDOMtoXML("ListTasksAMM.xml", &commonDOM); + Tools::saveDOMtoFileXML("ListTasksAMM.xml", &commonDOM); return commonDOM.toByteArray(); } @@ -181,7 +181,7 @@ QByteArray DBAnswerParser::listTasksAMMofTrainee(bool result, QList QByteArray DBAnswerParser::listTasksFIMofTrainee(bool result, QList *listTasks, int trainee_id, bool full_list) { QDomDocument commonDOM; - if(! Tools::loadXMLtoDOM(":/resources/blankXML/ListTasksFIM.xml", &commonDOM)) + if(! Tools::loadFileXMLtoDOM(":/resources/blankXML/ListTasksFIM.xml", &commonDOM)) return QByteArray(); QDomNode listNode = commonDOM.namedItem("ListTasksFIM"); @@ -257,7 +257,7 @@ QByteArray DBAnswerParser::listTasksFIMofTrainee(bool result, QList } } - Tools::saveDOMtoXML("ListTasksFIM.xml", &commonDOM); + Tools::saveDOMtoFileXML("ListTasksFIM.xml", &commonDOM); return commonDOM.toByteArray(); } diff --git a/LibServer/Systems/Parsers/docsanswerparser.cpp b/LibServer/Systems/Parsers/docsanswerparser.cpp index 371ff37..a28f7ce 100644 --- a/LibServer/Systems/Parsers/docsanswerparser.cpp +++ b/LibServer/Systems/Parsers/docsanswerparser.cpp @@ -9,7 +9,7 @@ DocsAnswerParser::DocsAnswerParser(QObject *parent) : QObject(parent) QByteArray DocsAnswerParser::listSubProc(QList list, QString dmCode) { QDomDocument commonDOM; - if(! Tools::loadXMLtoDOM(":/resources/blankXML/ListSubProc.xml", &commonDOM)) + if(! Tools::loadFileXMLtoDOM(":/resources/blankXML/ListSubProc.xml", &commonDOM)) return QByteArray(); QDomNode listNode = commonDOM.namedItem("ListSubProc"); @@ -24,7 +24,7 @@ QByteArray DocsAnswerParser::listSubProc(QList list, QString dmCode) subProcNode.toElement().setAttribute("canplay", subProc.getModeListStr()); } - Tools::saveDOMtoXML("ListSubProc.xml", &commonDOM); + Tools::saveDOMtoFileXML("ListSubProc.xml", &commonDOM); return commonDOM.toByteArray(); } diff --git a/LibServer/Systems/docsupdater.cpp b/LibServer/Systems/docsupdater.cpp index b991a9f..d3b002a 100644 --- a/LibServer/Systems/docsupdater.cpp +++ b/LibServer/Systems/docsupdater.cpp @@ -44,7 +44,7 @@ bool DocsUpdater::updateDocsXML() QString pathDocsFile = updateController->getPathAdditionalFile(tasksAMMfileName); QDomDocument docTasksDOM; - if(! Tools::loadXMLtoDOM(pathDocsFile, &docTasksDOM)) + if(! Tools::loadFileXMLtoDOM(pathDocsFile, &docTasksDOM)) return false; QDomElement manifestElement = docTasksDOM.firstChildElement("manifest"); @@ -59,7 +59,7 @@ bool DocsUpdater::updateDocsXML() domElementParserAMM(manifestElement, nullptr); - if(! Tools::saveDOMtoXML(pathDocsFile, &docTasksDOM)) + if(! Tools::saveDOMtoFileXML(pathDocsFile, &docTasksDOM)) { deleteAllModulsAMM(); listTasksAMM.clear(); @@ -271,7 +271,7 @@ bool DocsUpdater::processingScenXML(const QString dmCode, QString &canplay, QLis QDomDocument docScenDOM; - if(! Tools::loadXMLtoDOM(pathScenXMLFile, &docScenDOM)) + if(! Tools::loadFileXMLtoDOM(pathScenXMLFile, &docScenDOM)) return false; QDomElement scenarioElement = docScenDOM.firstChildElement("scenario"); diff --git a/LibServer/Systems/processingsystem.cpp b/LibServer/Systems/processingsystem.cpp index 28d15a5..76858ce 100644 --- a/LibServer/Systems/processingsystem.cpp +++ b/LibServer/Systems/processingsystem.cpp @@ -7,12 +7,13 @@ ProcessingSystem::ProcessingSystem(ProviderDBLMS* providerDBLMS, UpdateControlle QObject(parent), updateController(nullptr), docsUpdater(nullptr), - cfiController(cfiController), + cfiController(nullptr), providerDBLMS(nullptr) { this->providerDBLMS = providerDBLMS; this->updateController = updateController; this->docsUpdater = docsUpdater; + this->cfiController = cfiController; } void ProcessingSystem::initialize(MultiThreadServer *server, DataParser *dataParser, diff --git a/LibServer/Systems/tools.cpp b/LibServer/Systems/tools.cpp index 8545641..c3aaee6 100644 --- a/LibServer/Systems/tools.cpp +++ b/LibServer/Systems/tools.cpp @@ -105,9 +105,15 @@ bool Tools::checkNonStaticData(QString path) 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); @@ -122,7 +128,23 @@ bool Tools::loadXMLtoDOM(QString pathNameFile, QDomDocument *commonDOM) 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); if (!xmlOutFile.open(QFile::WriteOnly | QFile::Text)) diff --git a/LibServer/Systems/tools.h b/LibServer/Systems/tools.h index 12e6d68..faf611b 100644 --- a/LibServer/Systems/tools.h +++ b/LibServer/Systems/tools.h @@ -76,8 +76,10 @@ public: static QString createFullPath(QString path); static bool checkNonStaticData(QString path); - static bool loadXMLtoDOM(QString pathNameFile, QDomDocument* commonDOM); - static bool saveDOMtoXML(QString pathNameFile, QDomDocument* commonDOM); + static bool loadByteArrayXMLtoDOM(const QByteArray& array, QDomDocument* commonDOM); + static bool loadFileXMLtoDOM(QString pathNameFile, QDomDocument* commonDOM); + static bool loadFileXMLtoByteArray(QString pathNameFile, QByteArray& array); + static bool saveDOMtoFileXML(QString pathNameFile, QDomDocument* commonDOM); }; diff --git a/LibServer/cficontroller/cficontroller.cpp b/LibServer/cficontroller/cficontroller.cpp index 21a2490..b001005 100644 --- a/LibServer/cficontroller/cficontroller.cpp +++ b/LibServer/cficontroller/cficontroller.cpp @@ -23,7 +23,8 @@ void CfiController::unLockAccessToCfiXML() mtxAccess.unlock(); } -bool CfiController::parsingCfiXML() + +bool CfiController::parsingCfiXML(QMap& mapCfiObjects) { QMutexLocker locker(&mtxAccess); @@ -32,15 +33,91 @@ bool CfiController::parsingCfiXML() QString pathCfiListFile = updateController->getPathAdditionalFile(cfiListFileName); - QDomDocument docCfiListDOM; - if(! Tools::loadXMLtoDOM(pathCfiListFile, &docCfiListDOM)) + QDomDocument docCfiListDOM_Orig; + if(! Tools::loadFileXMLtoDOM(pathCfiListFile, &docCfiListDOM_Orig)) 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 mapCfiObjects_Orig; + QMap 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& mapCfiObjects) +{ + QDomElement CFIObjectsElement = domDoc.firstChildElement("CFIObjects"); if(CFIObjectsElement.isNull()) return false; - listCfiObjects.clear(); + mapCfiObjects.clear(); //Parsing QDomElement oneCFIObjectElement = CFIObjectsElement.firstChildElement(); @@ -57,6 +134,8 @@ bool CfiController::parsingCfiXML() { CfiObject cfiObj; + cfiObj.setDomElement(oneCFIObjectElement); + //атрибуты CFIObject QDomNamedNodeMap nodeMapOneCFIObject = oneCFIObjectElement.attributes(); cfiObj.setId(nodeMapOneCFIObject.namedItem("id").nodeValue().toInt()); @@ -85,15 +164,15 @@ bool CfiController::parsingCfiXML() setCamPos.state = nodeMapSetcamerapos.namedItem("state").nodeValue(); setCamPos.panelName = nodeMapSetcamerapos.namedItem("panelName").nodeValue(); - setCamPos.prevCamOffsetMARposY = germanLocale->toFloat(nodeMapSetcamerapos.namedItem("prevCamOffsetMARposY").nodeValue()); - setCamPos.camOffsetMARposY = germanLocale->toFloat(nodeMapSetcamerapos.namedItem("camOffsetMARposY").nodeValue()); - setCamPos.prevCharControlerHeight = germanLocale->toFloat(nodeMapSetcamerapos.namedItem("prevCharControlerHeight").nodeValue()); - setCamPos.charControlerHeight = germanLocale->toFloat(nodeMapSetcamerapos.namedItem("charControlerHeight").nodeValue()); - setCamPos.FOV = germanLocale->toFloat(nodeMapSetcamerapos.namedItem("FOV").nodeValue()); - setCamPos.moveSpeed = germanLocale->toFloat(nodeMapSetcamerapos.namedItem("moveSpeed").nodeValue()); - setCamPos.projectionSize = germanLocale->toFloat(nodeMapSetcamerapos.namedItem("projectionSize").nodeValue()); - setCamPos.offset = germanLocale->toFloat(nodeMapSetcamerapos.namedItem("offset").nodeValue()); - setCamPos.prevPlayerRot = germanLocale->toFloat(nodeMapSetcamerapos.namedItem("prevPlayerRot").nodeValue()); + setCamPos.prevCamOffsetMARposY = germanLocale->toDouble(nodeMapSetcamerapos.namedItem("prevCamOffsetMARposY").nodeValue()); + setCamPos.camOffsetMARposY = germanLocale->toDouble(nodeMapSetcamerapos.namedItem("camOffsetMARposY").nodeValue()); + setCamPos.prevCharControlerHeight = germanLocale->toDouble(nodeMapSetcamerapos.namedItem("prevCharControlerHeight").nodeValue()); + setCamPos.charControlerHeight = germanLocale->toDouble(nodeMapSetcamerapos.namedItem("charControlerHeight").nodeValue()); + setCamPos.FOV = germanLocale->toDouble(nodeMapSetcamerapos.namedItem("FOV").nodeValue()); + setCamPos.moveSpeed = germanLocale->toDouble(nodeMapSetcamerapos.namedItem("moveSpeed").nodeValue()); + setCamPos.projectionSize = germanLocale->toDouble(nodeMapSetcamerapos.namedItem("projectionSize").nodeValue()); + setCamPos.offset = germanLocale->toDouble(nodeMapSetcamerapos.namedItem("offset").nodeValue()); + setCamPos.prevPlayerRot = germanLocale->toDouble(nodeMapSetcamerapos.namedItem("prevPlayerRot").nodeValue()); //childs setcamerapos QDomElement loc_Element; @@ -122,28 +201,55 @@ bool CfiController::parsingCfiXML() cfiObj.setSetCameraPos(setCamPos); - listCfiObjects.append(cfiObj); + mapCfiObjects.insert(cfiObj.getId(), cfiObj); } }while (! (oneCFIObjectElement = oneCFIObjectElement.nextSiblingElement()).isNull()); return true; } -QVector3D CfiController::getXYZfromElement(QDomElement element) +bool CfiController::merge2map(QMap &mapCfiObjects_orig, QMap &mapCfiObjects_new) { - QVector3D vector3D; - QDomNamedNodeMap nodeMap = element.attributes(); - vector3D.setX(germanLocale->toFloat(nodeMap.namedItem("x").nodeValue())); - vector3D.setY(germanLocale->toFloat(nodeMap.namedItem("y").nodeValue())); - vector3D.setZ(germanLocale->toFloat(nodeMap.namedItem("z").nodeValue())); - return vector3D; + for(CfiObject cfiObj : mapCfiObjects_new) + { + int id = cfiObj.getId(); + + if(mapCfiObjects_orig.contains(id)) + {//Такой есть + 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 &mapCfiObjects) { - QVector2D vector2D; - QDomNamedNodeMap nodeMap = element.attributes(); - vector2D.setX(germanLocale->toFloat(nodeMap.namedItem("x").nodeValue())); - vector2D.setY(germanLocale->toFloat(nodeMap.namedItem("y").nodeValue())); - return vector2D; + QDomDocument commonDOM; + if(! Tools::loadFileXMLtoDOM(":/resources/blankXML/ListCFI.xml", &commonDOM)) + return false; + + QDomNode listNode = commonDOM.namedItem("CFIObjects"); + + for(CfiObject cfiObj : mapCfiObjects) + { + listNode.appendChild(cfiObj.getDomElement()); + } + + QString pathCfiListFile = updateController->getPathAdditionalFile(cfiListFileName); + + return Tools::saveDOMtoFileXML(pathCfiListFile, &commonDOM); } diff --git a/LibServer/cficontroller/cficontroller.h b/LibServer/cficontroller/cficontroller.h index f5ac475..0272509 100644 --- a/LibServer/cficontroller/cficontroller.h +++ b/LibServer/cficontroller/cficontroller.h @@ -17,20 +17,35 @@ public: void lockAccessToCfiXML(); void unLockAccessToCfiXML(); - bool parsingCfiXML(); + //Распарсивание файла CfiList.xml + bool parsingCfiXML(QMap& mapCfiObjects); + + //Слияние (обновление) с новыми данными + bool updateCfiXML(const QByteArray& array); + + //Для теста + //void test(); signals: private: - QVector3D getXYZfromElement(QDomElement element); - QVector2D getXYfromElement(QDomElement element); + Vector3dDouble getXYZfromElement(QDomElement element); + Vector2dDouble getXYfromElement(QDomElement element); + + double roundDoubleVal(double value, int cntNumAfterPoint); + + bool parsingCfiXML_DOM(QDomDocument& domDoc, QMap& mapCfiObjects); + + bool merge2map(QMap& mapCfiObjects_orig, QMap& mapCfiObjects_new); + + bool saveNewCfiListFile(QMap& mapCfiObjects); private: UpdateController* updateController; QMutex mtxAccess; - QList listCfiObjects; + //QList listCfiObjects; QLocale* germanLocale; }; diff --git a/LibServer/cficontroller/cfiobject.cpp b/LibServer/cficontroller/cfiobject.cpp index 69038fa..6e0366d 100644 --- a/LibServer/cficontroller/cfiobject.cpp +++ b/LibServer/cficontroller/cfiobject.cpp @@ -74,3 +74,18 @@ void CfiObject::setIsChanged(bool value) { isChanged = value; } + +QDomElement CfiObject::getDomElement() const +{ + return domElement; +} + +void CfiObject::setDomElement(const QDomElement &value) +{ + domElement = value; +} + +void CfiObject::resetIsChangedInDomElement() +{ + domElement.setAttribute("isChanged", "False"); +} diff --git a/LibServer/cficontroller/cfiobject.h b/LibServer/cficontroller/cfiobject.h index 46a5827..ba1a4f0 100644 --- a/LibServer/cficontroller/cfiobject.h +++ b/LibServer/cficontroller/cfiobject.h @@ -1,10 +1,9 @@ #ifndef CFIOBJECT_H #define CFIOBJECT_H +#include "vectordouble.h" #include -#include -#include -#include +#include struct SetCameraPos { @@ -24,18 +23,18 @@ struct SetCameraPos float offset; float prevPlayerRot; - QVector2D axesClamp; + Vector2dDouble axesClamp; - QVector3D prevPlayerPos; - QVector3D playerPos; - QVector3D playerRot; - QVector3D prevCamRot; - QVector3D camRot; - QVector3D goCenter; - QVector3D playerMARpos; - QVector3D playerMARrot; - QVector3D camMARrot; - QVector3D playerPosRelativeToThePanel; + Vector3dDouble prevPlayerPos; + Vector3dDouble playerPos; + Vector3dDouble playerRot; + Vector3dDouble prevCamRot; + Vector3dDouble camRot; + Vector3dDouble goCenter; + Vector3dDouble playerMARpos; + Vector3dDouble playerMARrot; + Vector3dDouble camMARrot; + Vector3dDouble playerPosRelativeToThePanel; }; class CfiObject @@ -64,6 +63,11 @@ public: bool getIsChanged() const; void setIsChanged(bool value); + QDomElement getDomElement() const; + void setDomElement(const QDomElement &value); + + void resetIsChangedInDomElement(); + private: int id; bool isChanged; @@ -73,6 +77,8 @@ private: QString goName; SetCameraPos setCameraPos; + + QDomElement domElement; }; #endif // CFIOBJECT_H diff --git a/LibServer/cficontroller/vectordouble.cpp b/LibServer/cficontroller/vectordouble.cpp new file mode 100644 index 0000000..4032be2 --- /dev/null +++ b/LibServer/cficontroller/vectordouble.cpp @@ -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; +} diff --git a/LibServer/cficontroller/vectordouble.h b/LibServer/cficontroller/vectordouble.h new file mode 100644 index 0000000..33fae33 --- /dev/null +++ b/LibServer/cficontroller/vectordouble.h @@ -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 diff --git a/LibServer/resources/blankXML/ListCFI.xml b/LibServer/resources/blankXML/ListCFI.xml new file mode 100644 index 0000000..20c5f5e --- /dev/null +++ b/LibServer/resources/blankXML/ListCFI.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/LibServer/serverlmswidget.cpp b/LibServer/serverlmswidget.cpp index 6467b12..1cc0851 100644 --- a/LibServer/serverlmswidget.cpp +++ b/LibServer/serverlmswidget.cpp @@ -155,19 +155,7 @@ void ServerLMSWidget::slot_UpdateDocs() QApplication::restoreOverrideCursor(); //TODO для теста - //slot_ParsingCfiXML(); -} - -void ServerLMSWidget::slot_ParsingCfiXML() -{ - QApplication::setOverrideCursor(Qt::WaitCursor); - - if(cfiController->parsingCfiXML()) - { - //TODO...что-то, наверное, должно происходить? - } - - QApplication::restoreOverrideCursor(); + //cfiController->test(); } void ServerLMSWidget::slot_startInitialization_step1() diff --git a/LibServer/serverlmswidget.h b/LibServer/serverlmswidget.h index 8687407..4ba16e2 100644 --- a/LibServer/serverlmswidget.h +++ b/LibServer/serverlmswidget.h @@ -101,8 +101,6 @@ public slots: void slot_UpdateDocs(); - void slot_ParsingCfiXML(); - void slot_startInitialization_step1(); void slot_setVersion(QString versionStr);