26eed66bb7c756a8e400e943c14588ab5809306d
[speedfreak] / Client / xmlwriter.cpp
1 /*
2  * Xml writer
3  *
4  * @author     Tiina Kivilinna-Korhola
5  * @copyright  (c) 2010 Speed Freak team
6  * license     http://opensource.org/licenses/gpl-license.php GNU Public License
7  */
8
9 #include "xmlwriter.h"
10
11
12
13 /**
14   *@brief Constructor, connects object to GUI
15   *@param Pointer to carmainwindow, which is temporarily used during development
16   */
17 XmlWriter::XmlWriter()
18 {
19     tmpvalue = 110;
20 }
21
22 /**
23   *@brief Destructor
24   */
25 XmlWriter::~XmlWriter()
26 {
27
28 }
29
30 /**
31   *@brief Writes registration items into tags.
32   *@param netbuf a buffer where xmlstreamwriter writes to.
33   *@param usr for user name.
34   *@param psswd for password.
35   *@param email.
36   */
37 void XmlWriter::writeRegistering(QBuffer *netbuf, QString usr, QString psswd, QString email)
38 {
39     qDebug() << "_writeRegistering";
40
41     xmlwriter.setDevice(netbuf);
42
43     xmlwriter.writeStartDocument();
44     xmlwriter.writeStartElement("user");
45
46     xmlwriter.writeStartElement("login");
47     xmlwriter.writeCharacters(usr);
48     xmlwriter.writeEndElement();
49
50     xmlwriter.writeStartElement("password");
51     xmlwriter.writeCharacters(psswd);
52     xmlwriter.writeEndElement();
53
54     xmlwriter.writeStartElement("email");
55     xmlwriter.writeCharacters(email);
56     xmlwriter.writeEndElement();
57
58     xmlwriter.writeEndElement();
59     xmlwriter.writeEndDocument();
60 }
61
62
63 /**
64   *@brief Writes Speed Freek results items as tags and contents into a buffer.
65   *@todo Consider looping when writing many values.
66   *@todo Replace test value to finally used variables.
67   */
68 void XmlWriter::writeResult(QBuffer *netbuf)
69 {
70     qDebug() << "_writeResult";
71
72     xmlwriter.setDevice(netbuf);
73
74     xmlwriter.writeStartDocument();
75     xmlwriter.writeStartElement("result");
76     tmpvalue++;
77     qDebug() << tmpvalue;
78     xmlwriter.writeAttribute("value", QString::number(tmpvalue));
79     xmlwriter.writeEndElement();
80     xmlwriter.writeEndDocument();
81 }
82
83
84 /**
85   *@brief Write track to server.
86   *@param ptrTable points to GPSData::gpsDataArray[100][4].
87   *@param counter is GPSData::roundCounter.
88   *@todo Decide suitable attributes.
89   */
90 void XmlWriter::writeGpsTrack(QBuffer *netbuf, double *ptrTable, int counter)
91 {
92     qDebug() << "_writeGpsTrack";
93
94     double *ptrValue;
95     ptrValue = ptrTable;
96     double tmp = 0;
97
98     xmlwriter.setDevice(netbuf);
99
100     xmlwriter.writeStartDocument();
101
102     xmlwriter.writeStartElement("gpx");
103     xmlwriter.writeAttribute("someattribute", "abc");
104     xmlwriter.writeAttribute("otherattribute", "cde");
105
106     xmlwriter.writeStartElement("metadata");
107     xmlwriter.writeStartElement("link");
108     xmlwriter.writeAttribute("href", "http://api.speedfreak-app.com/api/track");
109     xmlwriter.writeCharacters("Speed Freak");
110     xmlwriter.writeEndElement();
111     xmlwriter.writeStartElement("time");
112     xmlwriter.writeCharacters(QDateTime::currentDateTime().toString());
113     xmlwriter.writeEndElement();
114     xmlwriter.writeEndElement();    //metadata
115
116     xmlwriter.writeStartElement("trk");
117     xmlwriter.writeStartElement("name");
118     xmlwriter.writeCharacters("Example Track");
119     xmlwriter.writeEndElement();
120     xmlwriter.writeStartElement("trkseg");
121     for(int i = 0; i < counter; i++)
122     {
123         xmlwriter.writeStartElement("trkpt");
124         tmp = *ptrValue;
125         ptrValue++;
126         xmlwriter.writeAttribute("lat", QString::number(tmp));    //gpspoints[i][0]
127         tmp = *ptrValue;
128         ptrValue++;
129         xmlwriter.writeAttribute("lon", QString::number(tmp));    //gpspoints[i][1]
130         xmlwriter.writeStartElement("ele");
131         tmp = *ptrValue;
132         ptrValue++;
133         xmlwriter.writeCharacters(QString::number(tmp));          //gpspoints[i][2]
134         xmlwriter.writeEndElement();
135         xmlwriter.writeStartElement("speed");
136         tmp = *ptrValue;
137         ptrValue++;
138         xmlwriter.writeCharacters(QString::number(tmp));          //gpspoints[i][3]
139         xmlwriter.writeEndElement();
140         xmlwriter.writeEndElement();    //trkpt
141     }
142     xmlwriter.writeEndElement();        //trkseg
143     xmlwriter.writeEndElement();        //trk
144     xmlwriter.writeEndElement();        //gpx
145     xmlwriter.writeEndDocument();
146 }
147
148
149 /**
150   *@brief Opens and closes a file, when xml information is written into a file,
151   *and passes file to writeXmlFile()
152   *@param usr for user name.
153   *@param psswd for password.
154   *@param email.
155   *@todo Replace hardcoced filename to finally GUI entry widget.
156   */
157 //void XmlWriter::writeXml(QString usr, QString psswd, QString email)
158 void XmlWriter::writeXml()
159 {
160     QString filename = "xmlcategoryfile.xml";
161     QFile file(filename);
162     if (!file.open(QFile::WriteOnly | QFile::Text)) {
163         qDebug() << "_xmlWrite fail";
164         return;
165     }
166
167     writeXmlFile(&file);
168     //writeRegistering(&file, usr, psswd, email);
169     //writeResult(&file);
170     file.close();
171 }
172
173 /**
174   *@brief Writes general xml information.
175   *Calls other functions to insert login and result information.
176   *@param device: target of writing, here filename.
177   *@param usr for user name.
178   *@param psswd for password.
179   *@param email.
180   */
181 bool XmlWriter::writeXmlFile(QIODevice *device)
182 {
183     xmlwriter.setDevice(device);
184     xmlwriter.writeStartDocument();
185     //writeItems();
186     serverWritesXml();
187     xmlwriter.writeEndDocument();
188
189     return true;
190 }
191
192
193 /**
194   *@brief Writes Speed Freek results items as tags and contents to earlier defined target.
195   *@todo Consider looping when writing many values.
196   *@todo Replace testing values to finally used variabls.
197   */
198 void XmlWriter::writeItems()
199 {
200     xmlwriter.writeStartElement("result");
201     xmlwriter.writeAttribute("value", QString::number(14)); //tmp testing value
202     xmlwriter.writeAttribute("unit", "seconds");
203     xmlwriter.writeAttribute("date", QDateTime::currentDateTime().toString());
204     xmlwriter.writeEndElement();
205 }
206
207
208 /**
209   *@brief A temp function during development, used to create a "serverfile".
210   */
211 void XmlWriter::serverWritesXml()
212 {
213     //Write categories
214     xmlwriter.writeStartElement("categories");
215
216     xmlwriter.writeStartElement("category");
217     xmlwriter.writeCharacters("acceleration-0-10");
218     xmlwriter.writeEndElement();
219
220     xmlwriter.writeStartElement("category");
221     xmlwriter.writeCharacters("acceleration-0-40");
222     xmlwriter.writeEndElement();
223
224     xmlwriter.writeStartElement("category");
225     xmlwriter.writeCharacters("acceleration-0-100");
226     xmlwriter.writeEndElement();
227
228     xmlwriter.writeEndElement();
229 }