转自 http://www.oschina.net/code/snippet_195885_9703
[文件] xprojectreader.h ~ 557B 下载(65)
01 | #ifndef XPROJECTREADER_H |
02 | #define XPROJECTREADER_H |
12 | CXProjectReader(vector<STask> *); |
14 | bool read(QIODevice *device); |
15 | QString readProjectName() const ; |
18 | void readXProject(QDomElement); |
19 | void readTask(QDomElement); |
20 | ETASKTYPE toETaskType(QString); |
24 | vector<STask> *m_pVProject; |
25 | QString m_projectName; |
28 | #endif // XPROJECTREADER_H |
[文件] xprojectreader.cpp ~ 4KB 下载(56)
001 | #include "xprojectreader.h" |
002 | #include <QtGui/QtGui> |
003 | #include <QtCore/QtCore> |
005 | CXProjectReader::CXProjectReader(vector<STask> *project) |
006 | :m_pVProject(project) |
011 | bool CXProjectReader::read(QIODevice *device) |
017 | if (!m_xml.setContent(device, true , &errorStr, &errorLine, |
028 | QDomElement root = m_xml.documentElement(); |
029 | if (root.tagName() != "project" ) |
035 | else if (root.hasAttribute( "version" ) |
036 | && root.attribute( "version" ) != "1.0" ) |
044 | m_projectName = root.attribute( "name" ); |
050 | void CXProjectReader::readXProject(QDomElement root) |
053 | QDomElement child = root.firstChildElement( "task" ); |
054 | while (!child.isNull()) |
057 | child = child.nextSiblingElement( "task" ); |
061 | void CXProjectReader::readTask(QDomElement element) |
064 | sTask.type = toETaskType(element.attribute( "name" )); |
066 | QDomElement child = element.firstChildElement(); |
067 | while (!child.isNull()) |
069 | if (child.tagName() == "readonly" ) |
070 | sTask.readOnly = child.text().toInt(); |
071 | else if (child.tagName() == "value" ) |
072 | sTask.value = child.text().toStdString(); |
073 | else if (child.tagName() == "mistake" ) |
074 | sTask.mistake = child.text().toFloat(); |
075 | else if (child.tagName() == "keyitem" ) |
076 | sTask.keyItem = child.text().toInt(); |
077 | else if (child.tagName() == "vrscope" ) |
078 | sTask.vrScope = child.text().toInt(); |
080 | child = child.nextSiblingElement(); |
083 | m_pVProject->push_back(sTask); |
086 | ETASKTYPE CXProjectReader::toETaskType(QString name) |
088 | if (name == "MARK100" ) |
090 | else if (name == "MARK220" ) |
092 | else if (name == "MARK380" ) |
094 | else if (name == "OC100" ) |
096 | else if (name == "OC220" ) |
098 | else if (name == "OC380" ) |
100 | else if (name == "PRECISION100" ) |
102 | else if (name == "PRECISION220" ) |
104 | else if (name == "PRECISION380" ) |
106 | else if (name == "CLOCKMISTAKE" ) |
108 | else if (name == "COMM" ) |
110 | else if (name == "AREATERMCODE" ) |
114 | else if (name == "VOLTRANKLIMIT" ) |
115 | return VOLTRANKLIMIT; |
116 | else if (name == "APN" ) |
118 | else if (name == "HEARTBEAT" ) |
120 | else if (name == "TERMTIME" ) |
122 | else if (name == "FOOTDAY" ) |
124 | else if (name == "POWEROFFCLOCK" ) |
125 | return POWEROFFCLOCK; |
126 | else if (name == "SOFTVERSION" ) |
130 | QString CXProjectReader::readProjectName() const |
132 | return m_projectName; |
[文件] xprojectwriter.h ~ 522B 下载(49)
01 | #ifndef XPROJECTWRITER_H |
02 | #define XPROJECTWRITER_H |
04 | #include <QtXml/QDomDocument> |
11 | CXProjectWriter(vector<STask> *); |
13 | bool writeFile(QIODevice *device); |
14 | void writeProjectName(QString); |
17 | void writeTask(STask, QDomElement&); |
18 | QString fromTaskType(ETASKTYPE); |
22 | vector<STask> *m_pVProject; |
23 | QString m_projectName; |
26 | #endif // XPROJECTWRITER_H |
[文件] xprojectwriter.cpp ~ 4KB 下载(55)
001 | #include "xprojectwriter.h" |
002 | #include <QtGui/QtGui> |
004 | CXProjectWriter::CXProjectWriter(vector<STask> *project) |
005 | :m_pVProject(project) |
010 | bool CXProjectWriter::writeFile(QIODevice *device) |
014 | QDomElement root = m_xml.createElement( "project" ); |
015 | root.setAttribute( "version" , "1.0" ); |
016 | root.setAttribute( "name" , m_projectName); |
017 | m_xml.appendChild(root); |
019 | for (uint i = 0; i < m_pVProject->size(); ++i) |
020 | writeTask(m_pVProject->at(i), root); |
022 | const int IndentSize = 4; |
024 | QTextStream out(device); |
025 | m_xml.save(out, IndentSize); |
029 | void CXProjectWriter::writeTask(STask task, QDomElement& root) |
031 | QDomElement taskElement = m_xml.createElement( "task" ); |
032 | QString taskName = fromTaskType(task.type); |
033 | taskElement.setAttribute( "name" , taskName); |
034 | root.appendChild(taskElement); |
036 | QDomElement readElement = m_xml.createElement( "readonly" ); |
037 | QDomText readText = m_xml.createTextNode(QString::number(task.readOnly)); |
038 | readElement.appendChild(readText); |
040 | QDomElement valueElement = m_xml.createElement( "value" ); |
041 | QDomText valueText = m_xml.createTextNode(QString::fromStdString(task.value)); |
042 | valueElement.appendChild(valueText); |
044 | QDomElement mistakeElement = m_xml.createElement( "mistake" ); |
045 | QDomText mistakeText = m_xml.createTextNode(QString::number(task.mistake)); |
046 | mistakeElement.appendChild(mistakeText); |
048 | QDomElement keyitemElement = m_xml.createElement( "keyitem" ); |
049 | QDomText keyitemText = m_xml.createTextNode(QString::number(task.keyItem)); |
050 | keyitemElement.appendChild(keyitemText); |
052 | QDomElement vrscopeElement = m_xml.createElement( "vrscope" ); |
053 | QDomText vrscopeText = m_xml.createTextNode(QString::number(task.vrScope)); |
054 | vrscopeElement.appendChild(vrscopeText); |
056 | taskElement.appendChild(readElement); |
057 | taskElement.appendChild(valueElement); |
058 | taskElement.appendChild(mistakeElement); |
059 | taskElement.appendChild(keyitemElement); |
060 | taskElement.appendChild(vrscopeElement); |
063 | QString CXProjectWriter::fromTaskType(ETASKTYPE type) |
067 | else if (type == MARK220) |
069 | else if (type == MARK380) |
071 | else if (type == OC100) |
073 | else if (type == OC220) |
075 | else if (type == OC380) |
077 | else if (type == PRECISION100) |
078 | return "PRECISION100" ; |
079 | else if (type == PRECISION220) |
080 | return "PRECISION220" ; |
081 | else if (type == PRECISION380) |
082 | return "PRECISION380" ; |
083 | else if (type == CLOCKMISTAKE) |
084 | return "CLOCKMISTAKE" ; |
085 | else if (type == COMM) |
087 | else if (type == AREATERMCODE) |
088 | return "AREATERMCODE" ; |
091 | else if (type == VOLTRANKLIMIT) |
092 | return "VOLTRANKLIMIT" ; |
095 | else if (type == HEARTBEAT) |
097 | else if (type == TERMTIME) |
099 | else if (type == FOOTDAY) |
101 | else if (type == POWEROFFCLOCK) |
102 | return "POWEROFFCLOCK" ; |
103 | else if (type == SOFTVERSION) |
104 | return "SOFTVERSION" ; |
109 | void CXProjectWriter::writeProjectName(QString name) |
111 | m_projectName = name; |
转载于:https://www.cnblogs.com/sherry-best/archive/2012/12/20/2826356.html