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