--- /dev/null
+#include "xmlutil.h"\r
+#include <QDebug>\r
+\r
+Xmlutil::Xmlutil(QObject *parent) :\r
+ QObject(parent)\r
+{\r
+}\r
+\r
+QDomElement Xmlutil::addElement(QDomDocument &doc, QDomNode &node,\r
+ const QString &tag, const QString &value)\r
+{\r
+ QDomElement element = doc.createElement(tag);\r
+ node.appendChild(element);\r
+ if(!value.isNull())\r
+ {\r
+ QDomText text = doc.createTextNode(value);\r
+ element.appendChild(text);\r
+ }\r
+ return element;\r
+}\r
+\r
+/*\r
+// Unit test from main\r
+\r
+ Steps step("+4670", 1);\r
+ int error = 0;\r
+\r
+ Profile p;\r
+ p.mName = "Diva";\r
+ p.mNoOfSteps = 2;\r
+ p.mSteps.append(step);\r
+ step.setDelay(2);\r
+ step.setValue("+4788");\r
+ p.mSteps.append(step);\r
+\r
+ qDebug() << p.generateProfileXML(p, error);\r
+\r
+*/\r
+QString Xmlutil::generateProfileXML(const Profile &profile, int *error,\r
+ QDomDocument *doc, QDomElement *elem)\r
+{\r
+ QDomDocument *pDoc = NULL;\r
+ if(0 == doc)\r
+ pDoc = new QDomDocument;\r
+ else\r
+ pDoc = doc;\r
+\r
+ QDomElement domElement;\r
+\r
+ if(0 == elem)\r
+ domElement = Xmlutil::addElement(*pDoc, *pDoc, PROFILE_ELEM_TAG);\r
+ else\r
+ domElement = Xmlutil::addElement(*pDoc, *elem, PROFILE_ELEM_TAG);\r
+\r
+ domElement.setAttribute(NAME_ATTR, profile.mName);\r
+ domElement.setAttribute(NO_OF_STEPS_ATTR, profile.mNoOfSteps);\r
+\r
+ if(profile.mNoOfSteps > 0)\r
+ {\r
+ for(unsigned int i = 0; i < profile.mNoOfSteps; i++)\r
+ {\r
+ QDomElement stepEl = Xmlutil::addElement(*pDoc, domElement, STEP_TAG);\r
+ Steps step = profile.mSteps.at(i);\r
+ stepEl.setAttribute(VALUE_ATTR, step.value());\r
+ stepEl.setAttribute(DELAY_ATTR, step.delay());\r
+ }\r
+ }\r
+\r
+ QString xmlString = pDoc->toString();\r
+\r
+ if(0 == doc)\r
+ delete pDoc;\r
+\r
+ return xmlString;\r
+}\r
+\r
+/*\r
+QString generateXML()\r
+{\r
+ Steps step("+4670", 1);\r
+ Profile p;\r
+ p.mName = "Diva";\r
+ p.mNoOfSteps = 2;\r
+ p.mSteps.append(step);\r
+ step.setDelay(2);\r
+ step.setValue("+4788");\r
+ p.mSteps.append(step);\r
+\r
+ return xmlutil::generateProfileXML(p);\r
+}\r
+\r
+// Unit test from main...\r
+\r
+ QString xmlString = generateXML();\r
+ Profile p;\r
+\r
+ int e = xmlutil::degenerateProfileXML(xmlString, p);\r
+*/\r
+\r
+int Xmlutil::degenerateProfileXML(const QString xmlString, Profile &profile,\r
+ QDomElement *pElem)\r
+{\r
+ QDomDocument doc;\r
+ Steps step;\r
+ QDomElement *elem = NULL;\r
+ if(0 == pElem && !xmlString.isNull())\r
+ {\r
+ doc.setContent(xmlString);\r
+ *elem = doc.namedItem(PROFILE_ELEM_TAG).toElement();\r
+ }\r
+ else\r
+ {\r
+ elem = pElem;\r
+ }\r
+\r
+ if(elem->isNull())\r
+ return -1;\r
+\r
+ profile.mName = elem->attribute(NAME_ATTR);\r
+ profile.mNoOfSteps = elem->attribute(NO_OF_STEPS_ATTR).toInt();\r
+\r
+ qDebug() << profile.mName << ":" << profile.mNoOfSteps;\r
+ QDomElement child = elem->firstChild().toElement();\r
+\r
+ profile.mSteps.clear();\r
+\r
+ for(unsigned int i = 0; i < profile.mNoOfSteps ; i++)\r
+ {\r
+ step.setDelay(child.attribute(DELAY_ATTR).toInt());\r
+ step.setValue(child.attribute(VALUE_ATTR));\r
+ profile.mSteps.append(step);\r
+ qDebug() << step.value() << ":" << step.delay();\r
+ child = child.nextSiblingElement();\r
+ }\r
+ return 0;\r
+}\r