mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
cfiController
This commit is contained in:
@@ -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
|
||||
)
|
||||
|
||||
|
||||
@@ -18,5 +18,6 @@
|
||||
<file>resources/icons/reparation.png</file>
|
||||
<file>resources/icons/save.png</file>
|
||||
<file>resources/icons/stoped.png</file>
|
||||
<file>resources/blankXML/ListCFI.xml</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
@@ -15,7 +15,7 @@ void DBAnswerParser::initialize(DataParser *dataParser)
|
||||
QByteArray DBAnswerParser::listInstructors(bool result, QList<Instructor> *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<Instructor> *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<Instructor> *listI
|
||||
QByteArray DBAnswerParser::listGroups(bool result, QList<Group> *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<Group> *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<Group> *listGroups)
|
||||
QByteArray DBAnswerParser::listTrainees(bool result, QList<Trainee> *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<Trainee> *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<ContactModel> *listCo
|
||||
QByteArray DBAnswerParser::listTasksAMMofTrainee(bool result, QList<TaskAmmFim> *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<TaskAmmFim>
|
||||
}
|
||||
}
|
||||
|
||||
Tools::saveDOMtoXML("ListTasksAMM.xml", &commonDOM);
|
||||
Tools::saveDOMtoFileXML("ListTasksAMM.xml", &commonDOM);
|
||||
|
||||
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)
|
||||
{
|
||||
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<TaskAmmFim>
|
||||
}
|
||||
}
|
||||
|
||||
Tools::saveDOMtoXML("ListTasksFIM.xml", &commonDOM);
|
||||
Tools::saveDOMtoFileXML("ListTasksFIM.xml", &commonDOM);
|
||||
|
||||
return commonDOM.toByteArray();
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ DocsAnswerParser::DocsAnswerParser(QObject *parent) : QObject(parent)
|
||||
QByteArray DocsAnswerParser::listSubProc(QList<SubProc> 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<SubProc> list, QString dmCode)
|
||||
subProcNode.toElement().setAttribute("canplay", subProc.getModeListStr());
|
||||
}
|
||||
|
||||
Tools::saveDOMtoXML("ListSubProc.xml", &commonDOM);
|
||||
Tools::saveDOMtoFileXML("ListSubProc.xml", &commonDOM);
|
||||
|
||||
return commonDOM.toByteArray();
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -23,7 +23,8 @@ void CfiController::unLockAccessToCfiXML()
|
||||
mtxAccess.unlock();
|
||||
}
|
||||
|
||||
bool CfiController::parsingCfiXML()
|
||||
|
||||
bool CfiController::parsingCfiXML(QMap<int, CfiObject>& 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<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())
|
||||
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<int, CfiObject> &mapCfiObjects_orig, QMap<int, CfiObject> &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<int, CfiObject> &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);
|
||||
}
|
||||
|
||||
@@ -17,20 +17,35 @@ public:
|
||||
void lockAccessToCfiXML();
|
||||
void unLockAccessToCfiXML();
|
||||
|
||||
bool parsingCfiXML();
|
||||
//Распарсивание файла CfiList.xml
|
||||
bool parsingCfiXML(QMap<int, CfiObject>& 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<int, CfiObject>& mapCfiObjects);
|
||||
|
||||
bool merge2map(QMap<int, CfiObject>& mapCfiObjects_orig, QMap<int, CfiObject>& mapCfiObjects_new);
|
||||
|
||||
bool saveNewCfiListFile(QMap<int, CfiObject>& mapCfiObjects);
|
||||
|
||||
private:
|
||||
UpdateController* updateController;
|
||||
|
||||
QMutex mtxAccess;
|
||||
|
||||
QList<CfiObject> listCfiObjects;
|
||||
//QList<CfiObject> listCfiObjects;
|
||||
|
||||
QLocale* germanLocale;
|
||||
};
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
#ifndef CFIOBJECT_H
|
||||
#define CFIOBJECT_H
|
||||
|
||||
#include "vectordouble.h"
|
||||
#include <QString>
|
||||
#include <QVector>
|
||||
#include <QVector2D>
|
||||
#include <QVector3D>
|
||||
#include <QDomElement>
|
||||
|
||||
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
|
||||
|
||||
66
LibServer/cficontroller/vectordouble.cpp
Normal file
66
LibServer/cficontroller/vectordouble.cpp
Normal 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;
|
||||
}
|
||||
42
LibServer/cficontroller/vectordouble.h
Normal file
42
LibServer/cficontroller/vectordouble.h
Normal 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
|
||||
3
LibServer/resources/blankXML/ListCFI.xml
Normal file
3
LibServer/resources/blankXML/ListCFI.xml
Normal file
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CFIObjects>
|
||||
</CFIObjects>
|
||||
@@ -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()
|
||||
|
||||
@@ -101,8 +101,6 @@ public slots:
|
||||
|
||||
void slot_UpdateDocs();
|
||||
|
||||
void slot_ParsingCfiXML();
|
||||
|
||||
void slot_startInitialization_step1();
|
||||
|
||||
void slot_setVersion(QString versionStr);
|
||||
|
||||
Reference in New Issue
Block a user