转自 http://www.oschina.net/code/snippet_195885_9703
[文件] xprojectreader.h ~ 557B 下载(65)
01 |
#ifndef XPROJECTREADER_H |
02 |
#define XPROJECTREADER_H |
03 |
|
04 |
#include <vector> |
05 |
#include <QtXml/QtXml> |
06 |
#include "global.h" |
07 |
class QString; |
08 |
|
09 |
class CXProjectReader |
10 |
{ |
11 |
public: |
12 |
CXProjectReader(vector<STask> *); |
13 |
|
14 |
bool read(QIODevice *device); |
15 |
QString readProjectName() const; |
16 |
|
17 |
private: |
18 |
void readXProject(QDomElement); |
19 |
void readTask(QDomElement); |
20 |
ETASKTYPE toETaskType(QString); |
21 |
|
22 |
QDomDocument m_xml; |
23 |
//QXmlStreamReader m_xml; |
24 |
vector<STask> *m_pVProject; |
25 |
QString m_projectName; |
26 |
}; |
27 |
|
28 |
#endif // XPROJECTREADER_H |
[文件] xprojectreader.cpp ~ 4KB 下载(56)
001 |
#include "xprojectreader.h" |
002 |
#include <QtGui/QtGui> |
003 |
#include <QtCore/QtCore> |
004 |
|
005 |
CXProjectReader::CXProjectReader(vector<STask> *project) |
006 |
:m_pVProject(project) |
007 |
{ |
008 |
|
009 |
} |
010 |
|
011 |
bool CXProjectReader::read(QIODevice *device) |
012 |
{ |
013 |
QString errorStr; |
014 |
int errorLine; |
015 |
int errorColumn; |
016 |
|
017 |
if (!m_xml.setContent(device, true, &errorStr, &errorLine, |
018 |
&errorColumn)) |
019 |
{ |
020 |
//QMessageBox::information(window(), QObject::tr("DOM Project"), |
021 |
// QObject::tr("Parse error at line %1, column %2:\n%3") |
022 |
// .arg(errorLine) |
023 |
// .arg(errorColumn) |
024 |
// .arg(errorStr)); |
025 |
return false; |
026 |
} |
027 |
|
028 |
QDomElement root = m_xml.documentElement(); |
029 |
if (root.tagName() != "project") |
030 |
{ |
031 |
//QMessageBox::information(window(), QObject::tr("DOM Project"), |
032 |
// QObject::tr("The file is not an xml file.")); |
033 |
return false; |
034 |
} |
035 |
else if (root.hasAttribute("version") |
036 |
&& root.attribute("version") != "1.0") |
037 |
{ |
038 |
//QMessageBox::information(window(), QObject::tr("DOM Project"), |
039 |
// QObject::tr("The file is not an xml version 1.0 " |
040 |
// "file.")); |
041 |
return false; |
042 |
} |
043 |
|
044 |
m_projectName = root.attribute("name"); |
045 |
readXProject(root); |
046 |
|
047 |
return true; |
048 |
} |
049 |
|
050 |
void CXProjectReader::readXProject(QDomElement root) |
051 |
{ |
052 |
//QDomElement root = m_xml.documentElement(); |
053 |
QDomElement child = root.firstChildElement("task"); |
054 |
while (!child.isNull()) |
055 |
{ |
056 |
readTask(child); |
057 |
child = child.nextSiblingElement("task"); |
058 |
} |
059 |
} |
060 |
|
061 |
void CXProjectReader::readTask(QDomElement element) |
062 |
{ |
063 |
STask sTask; |
064 |
sTask.type = toETaskType(element.attribute("name")); |
065 |
|
066 |
QDomElement child = element.firstChildElement(); |
067 |
while (!child.isNull()) |
068 |
{ |
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(); |
079 |
|
080 |
child = child.nextSiblingElement(); |
081 |
} |
082 |
|
083 |
m_pVProject->push_back(sTask); |
084 |
} |
085 |
|
086 |
ETASKTYPE CXProjectReader::toETaskType(QString name) |
087 |
{ |
088 |
if(name == "MARK100") |
089 |
return MARK100; //100V��ѹ�ı궨 |
090 |
else if(name == "MARK220") |
091 |
return MARK220; //220V��ѹ�ı궨 |
092 |
else if(name == "MARK380") |
093 |
return MARK380; //380V��ѹ�ı궨 |
094 |
else if(name == "OC100") |
095 |
return OC100; //100V��ѹ��OC�� |
096 |
else if(name == "OC220") |
097 |
return OC220; //220V��ѹ��OC�� |
098 |
else if(name == "OC380") |
099 |
return OC380; //380V��ѹ��OC�� |
100 |
else if(name == "PRECISION100") |
101 |
return PRECISION100; //100V��ѹ�ľ��ȼ�� |
102 |
else if(name == "PRECISION220") |
103 |
return PRECISION220; //220V��ѹ�ľ��ȼ�� |
104 |
else if(name == "PRECISION380") |
105 |
return PRECISION380; //380V��ѹ�ľ��ȼ�� |
106 |
else if(name == "CLOCKMISTAKE") |
107 |
return CLOCKMISTAKE; //ʱ����� |
108 |
else if(name == "COMM") |
109 |
return COMM; //ͨѶ��ʽ��IP-PORT,192.1.1.81-8080 |
110 |
else if(name == "AREATERMCODE") |
111 |
return AREATERMCODE; //�ն�������,ʮ������� |
112 |
// else if(name == "TERMCODE") |
113 |
// return TERMCODE; //�ն˵�ַ |
114 |
else if(name == "VOLTRANKLIMIT") |
115 |
return VOLTRANKLIMIT;//��ѹ�ȼ���������,100-7-10 |
116 |
else if(name == "APN") |
117 |
return APN; //APN,CMNET��CMWAP |
118 |
else if(name == "HEARTBEAT") |
119 |
return HEARTBEAT; //������ |
120 |
else if(name == "TERMTIME") |
121 |
return TERMTIME; //�ն�ʱ�� |
122 |
else if(name == "FOOTDAY") |
123 |
return FOOTDAY; //������ |
124 |
else if(name == "POWEROFFCLOCK") |
125 |
return POWEROFFCLOCK;//�����ʱ�Ӽ��͵�ѹ��� |
126 |
else if(name == "SOFTVERSION") |
127 |
return SOFTVERSION; //�ն�����汾 |
128 |
} |
129 |
|
130 |
QString CXProjectReader::readProjectName() const |
131 |
{ |
132 |
return m_projectName; |
133 |
} |
[文件] xprojectwriter.h ~ 522B 下载(49)
01 |
#ifndef XPROJECTWRITER_H |
02 |
#define XPROJECTWRITER_H |
03 |
|
04 |
#include <QtXml/QDomDocument> |
05 |
#include "global.h" |
06 |
class QString; |
07 |
|
08 |
class CXProjectWriter |
09 |
{ |
10 |
public: |
11 |
CXProjectWriter(vector<STask> *); |
12 |
|
13 |
bool writeFile(QIODevice *device); |
14 |
void writeProjectName(QString); |
15 |
|
16 |
private: |
17 |
void writeTask(STask, QDomElement&); |
18 |
QString fromTaskType(ETASKTYPE); |
19 |
|
20 |
QDomDocument m_xml; |
21 |
//QXmlStreamWriter m_xml; |
22 |
vector<STask> *m_pVProject; |
23 |
QString m_projectName; |
24 |
}; |
25 |
|
26 |
#endif // XPROJECTWRITER_H |
[文件] xprojectwriter.cpp ~ 4KB 下载(55)
001 |
#include "xprojectwriter.h" |
002 |
#include <QtGui/QtGui> |
003 |
|
004 |
CXProjectWriter::CXProjectWriter(vector<STask> *project) |
005 |
:m_pVProject(project) |
006 |
{ |
007 |
//m_xml.setAutoFormatting(true); |
008 |
} |
009 |
|
010 |
bool CXProjectWriter::writeFile(QIODevice *device) |
011 |
{ |
012 |
//QDomElement root = m_xml.documentElement(); |
013 |
//root.setTagName("project"); |
014 |
QDomElement root = m_xml.createElement("project"); |
015 |
root.setAttribute("version", "1.0"); |
016 |
root.setAttribute("name", m_projectName); |
017 |
m_xml.appendChild(root); |
018 |
|
019 |
for (uint i = 0; i < m_pVProject->size(); ++i) |
020 |
writeTask(m_pVProject->at(i), root); |
021 |
|
022 |
const int IndentSize = 4; |
023 |
|
024 |
QTextStream out(device); |
025 |
m_xml.save(out, IndentSize); |
026 |
return true; |
027 |
} |
028 |
|
029 |
void CXProjectWriter::writeTask(STask task, QDomElement& root) |
030 |
{ |
031 |
QDomElement taskElement = m_xml.createElement("task"); |
032 |
QString taskName = fromTaskType(task.type); |
033 |
taskElement.setAttribute("name", taskName); |
034 |
root.appendChild(taskElement); |
035 |
|
036 |
QDomElement readElement = m_xml.createElement("readonly"); |
037 |
QDomText readText = m_xml.createTextNode(QString::number(task.readOnly)); |
038 |
readElement.appendChild(readText); |
039 |
|
040 |
QDomElement valueElement = m_xml.createElement("value"); |
041 |
QDomText valueText = m_xml.createTextNode(QString::fromStdString(task.value)); |
042 |
valueElement.appendChild(valueText); |
043 |
|
044 |
QDomElement mistakeElement = m_xml.createElement("mistake"); |
045 |
QDomText mistakeText = m_xml.createTextNode(QString::number(task.mistake)); |
046 |
mistakeElement.appendChild(mistakeText); |
047 |
|
048 |
QDomElement keyitemElement = m_xml.createElement("keyitem"); |
049 |
QDomText keyitemText = m_xml.createTextNode(QString::number(task.keyItem)); |
050 |
keyitemElement.appendChild(keyitemText); |
051 |
|
052 |
QDomElement vrscopeElement = m_xml.createElement("vrscope"); |
053 |
QDomText vrscopeText = m_xml.createTextNode(QString::number(task.vrScope)); |
054 |
vrscopeElement.appendChild(vrscopeText); |
055 |
|
056 |
taskElement.appendChild(readElement); |
057 |
taskElement.appendChild(valueElement); |
058 |
taskElement.appendChild(mistakeElement); |
059 |
taskElement.appendChild(keyitemElement); |
060 |
taskElement.appendChild(vrscopeElement); |
061 |
} |
062 |
|
063 |
QString CXProjectWriter::fromTaskType(ETASKTYPE type) |
064 |
{ |
065 |
if(type == MARK100) |
066 |
return "MARK100"; //100V��ѹ�ı궨 |
067 |
else if(type == MARK220) |
068 |
return "MARK220"; //220V��ѹ�ı궨 |
069 |
else if(type == MARK380) |
070 |
return "MARK380"; //380V��ѹ�ı궨 |
071 |
else if(type == OC100) |
072 |
return "OC100"; //100V��ѹ��OC�� |
073 |
else if(type == OC220) |
074 |
return "OC220"; //220V��ѹ��OC�� |
075 |
else if(type == OC380) |
076 |
return "OC380"; //380V��ѹ��OC�� |
077 |
else if(type == PRECISION100) |
078 |
return "PRECISION100"; //100V��ѹ�ľ��ȼ�� |
079 |
else if(type == PRECISION220) |
080 |
return "PRECISION220"; //220V��ѹ�ľ��ȼ�� |
081 |
else if(type == PRECISION380) |
082 |
return "PRECISION380"; //380V��ѹ�ľ��ȼ�� |
083 |
else if(type == CLOCKMISTAKE) |
084 |
return "CLOCKMISTAKE"; //ʱ����� |
085 |
else if(type == COMM) |
086 |
return "COMM"; //ͨѶ��ʽ��IP-PORT,192.1.1.81-8080 |
087 |
else if(type == AREATERMCODE) |
088 |
return "AREATERMCODE"; //�ն�������,ʮ������� |
089 |
// else if(type == TERMCODE) |
090 |
// return "TERMCODE"; //�ն˵�ַ |
091 |
else if(type == VOLTRANKLIMIT) |
092 |
return "VOLTRANKLIMIT";//��ѹ�ȼ���������,100-7-10 |
093 |
else if(type == APN) |
094 |
return "APN"; //APN,CMNET��CMWAP |
095 |
else if(type == HEARTBEAT) |
096 |
return "HEARTBEAT"; //������ |
097 |
else if(type == TERMTIME) |
098 |
return "TERMTIME"; //�ն�ʱ�� |
099 |
else if(type == FOOTDAY) |
100 |
return "FOOTDAY"; //������ |
101 |
else if(type == POWEROFFCLOCK) |
102 |
return "POWEROFFCLOCK";//�����ʱ�Ӽ��͵�ѹ��� |
103 |
else if(type == SOFTVERSION) |
104 |
return "SOFTVERSION"; //�ն�����汾 |
105 |
|
106 |
return QString(); |
107 |
} |
108 |
|
109 |
void CXProjectWriter::writeProjectName(QString name) |
110 |
{ |
111 |
m_projectName = name; |
112 |
} |
浙公网安备 33010602011771号