Custom button class added.
[speedfreak] / Client / xmlwriter.cpp
1 /*
2  * Xml writer
3  *
4  * @author     Tiina Kivilinna-Korhola
5  * @author     Toni Jussila <toni.jussila@fudeco.com>
6  * @copyright  (c) 2010 Speed Freak team
7  * license     http://opensource.org/licenses/gpl-license.php GNU Public License
8  */
9
10 #include "xmlwriter.h"
11
12 /**
13   *@brief Constructor, connects object to GUI
14   *@param Pointer to carmainwindow, which is temporarily used during development
15   */
16 XmlWriter::XmlWriter()
17 {
18
19 }
20
21 /**
22   *@brief Destructor
23   */
24 XmlWriter::~XmlWriter()
25 {
26
27 }
28
29 /**
30   *@brief Writes registration items into tags.
31   *@param netbuf a buffer where xmlstreamwriter writes to.
32   *@param usr for user name.
33   *@param psswd for password.
34   *@param email.
35   */
36 void XmlWriter::writeRegistering(QBuffer *netbuf, QString usr, QString psswd, QString email)
37 {
38     qDebug() << "_writeRegistering";
39
40     xmlwriter.setDevice(netbuf);
41
42     xmlwriter.writeStartDocument();
43     xmlwriter.writeStartElement("user");
44
45     xmlwriter.writeStartElement("login");
46     xmlwriter.writeCharacters(usr);
47     xmlwriter.writeEndElement();
48
49     xmlwriter.writeStartElement("password");
50     xmlwriter.writeCharacters(psswd);
51     xmlwriter.writeEndElement();
52
53     xmlwriter.writeStartElement("email");
54     xmlwriter.writeCharacters(email);
55     xmlwriter.writeEndElement();
56
57     xmlwriter.writeEndElement();
58     xmlwriter.writeEndDocument();
59 }
60
61 /**
62   *@brief Writes Speed Freek results items as tags and contents into a buffer.
63   *@todo Consider looping when writing many values.
64   *@todo Replace test value to finally used variables.
65   */
66 void XmlWriter::writeResult(QBuffer *netbuf, double result)
67 {
68     qDebug() << "_writeResult";
69
70     xmlwriter.setDevice(netbuf);
71
72     xmlwriter.writeStartDocument();
73     xmlwriter.writeStartElement("result");
74     xmlwriter.writeAttribute("value", QString::number(result));
75     xmlwriter.writeEndElement();
76     xmlwriter.writeEndDocument();
77 }
78
79 /**
80   *@brief Write track to server.
81   *@param netbuf where to write.
82   *@param counter is GPSData::roundCounter.
83   *@todo Decide suitable attributes.
84   */
85 void XmlWriter::writeGpsTrack(QBuffer *netbuf, int counter, int start, int stop, int lat, int lon, int alt, int speed, int time)
86 {
87     qDebug() << "_writeGpsTrack";
88
89     double *ptrValue;
90     //ptrValue = ptrTable;
91     double tmp = 0;
92
93     xmlwriter.setDevice(netbuf);
94
95     xmlwriter.writeStartDocument();
96
97     xmlwriter.writeStartElement("Route");
98     xmlwriter.writeAttribute("starttime", QDateTime::currentDateTime().toString());
99     xmlwriter.writeAttribute("endtime", QDateTime::currentDateTime().toString());
100     xmlwriter.writeAttribute("points", QDateTime::currentDateTime().toString());
101     for(int i = 0; i < counter; i++)
102     {
103         xmlwriter.writeStartElement("point");
104         xmlwriter.writeAttribute("lat", QString::number(lat));
105         xmlwriter.writeAttribute("lon", QString::number(lon));
106         xmlwriter.writeAttribute("alt", QString::number(alt));
107         xmlwriter.writeAttribute("speed", QString::number(speed));
108         xmlwriter.writeAttribute("time", QString::number(time));
109         xmlwriter.writeEndElement();
110     }
111     xmlwriter.writeEndElement();
112     xmlwriter.writeEndDocument();
113 }
114
115 /**
116   *@brief Opens and closes a file, when xml information is written into a file,
117   *and passes file to writeXmlFile()
118   *@param usr for user name.
119   *@param psswd for password.
120   *@param email.
121   *@todo Replace hardcoced filename to finally GUI entry widget.
122   */
123 //void XmlWriter::writeXml(QString usr, QString psswd, QString email)
124 void XmlWriter::writeXml()
125 {
126     QString filename = "xmlcategoryfile.xml";
127     QFile file(filename);
128     if (!file.open(QFile::WriteOnly | QFile::Text)) {
129         qDebug() << "_xmlWrite fail";
130         return;
131     }
132
133     writeXmlFile(&file);
134     //writeRegistering(&file, usr, psswd, email);
135     //writeResult(&file);
136     file.close();
137 }
138
139 /**
140   *@brief Writes general xml information.
141   *Calls other functions to insert login and result information.
142   *@param device: target of writing, here filename.
143   *@param usr for user name.
144   *@param psswd for password.
145   *@param email.
146   */
147 bool XmlWriter::writeXmlFile(QIODevice *device)
148 {
149     xmlwriter.setDevice(device);
150     xmlwriter.writeStartDocument();
151     writeItems();
152     xmlwriter.writeEndDocument();
153
154     return true;
155 }
156
157 /**
158   *@brief Writes Speed Freek results items as tags and contents to earlier defined target.
159   *@todo Consider looping when writing many values.
160   *@todo Replace testing values to finally used variabls.
161   */
162 void XmlWriter::writeItems()
163 {
164     xmlwriter.writeStartElement("result");
165     xmlwriter.writeAttribute("value", QString::number(14)); //tmp testing value
166     xmlwriter.writeAttribute("unit", "seconds");
167     xmlwriter.writeAttribute("date", QDateTime::currentDateTime().toString());
168     xmlwriter.writeEndElement();
169 }