转自 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 |
} |