Route recoding. Save latitude,longitude,altitude and speed.
[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 = 10;
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.writeAttribute("unit", "seconds");
80     xmlwriter.writeAttribute("date", QDateTime::currentDateTime().toString());
81     xmlwriter.writeEndElement();
82     xmlwriter.writeEndDocument();
83 }
84
85
86 /**
87   *@brief Opens and closes a file, when xml information is written into a file,
88   *and passes file to writeXmlFile()
89   *@param usr for user name.
90   *@param psswd for password.
91   *@param email.
92   *@todo Replace hardcoced filename to finally GUI entry widget.
93   */
94 //void XmlWriter::writeXml(QString usr, QString psswd, QString email)
95 void XmlWriter::writeXml()
96 {
97     QString filename = "xmlcategoryfile.xml";
98     QFile file(filename);
99     if (!file.open(QFile::WriteOnly | QFile::Text)) {
100         qDebug() << "_xmlWrite fail";
101         return;
102     }
103
104     writeXmlFile(&file);
105     //writeRegistering(&file, usr, psswd, email);
106     //writeResult(&file);
107     file.close();
108 }
109
110 /**
111   *@brief Writes general xml information.
112   *Calls other functions to insert login and result information.
113   *@param device: target of writing, here filename.
114   *@param usr for user name.
115   *@param psswd for password.
116   *@param email.
117   */
118 bool XmlWriter::writeXmlFile(QIODevice *device)
119 {
120     xmlwriter.setDevice(device);
121     xmlwriter.writeStartDocument();
122     writeItems();
123     //serverWritesXml();
124     xmlwriter.writeEndDocument();
125
126     return true;
127 }
128
129
130 /**
131   *@brief Writes Speed Freek results items as tags and contents to earlier defined target.
132   *@todo Consider looping when writing many values.
133   *@todo Replace testing values to finally used variabls.
134   */
135 void XmlWriter::writeItems()
136 {
137     xmlwriter.writeStartElement("result");
138     xmlwriter.writeAttribute("value", QString::number(14)); //tmp testing value
139     xmlwriter.writeAttribute("unit", "seconds");
140     xmlwriter.writeAttribute("date", QDateTime::currentDateTime().toString());
141     xmlwriter.writeEndElement();
142 }
143
144
145 /**
146   *@brief A temp function during development, used to create a "serverfile".
147   */
148 void XmlWriter::serverWritesXml()
149 {
150     /* Server sends to client */
151     /*
152     int i = 0;
153     int n = 5;
154
155     //Write top 10 Results
156     xmlwriter.writeStartElement("results");
157     xmlwriter.writeAttribute("category", "acceleration-0-40");
158     xmlwriter.writeAttribute("unit", "seconds");
159     xmlwriter.writeAttribute("description", "Acceleration from 0 to 100 km/h");
160
161     for (i = 0; i < n; i++) {
162         xmlwriter.writeStartElement("result");
163         xmlwriter.writeAttribute("position", QString::number(i));
164         xmlwriter.writeAttribute("user", "test123");
165         xmlwriter.writeAttribute("date", QDateTime::currentDateTime().toString());
166         xmlwriter.writeAttribute("value", QString::number(i+i+1));
167         xmlwriter.writeEndElement();
168     }
169     */
170     //Write categories
171     xmlwriter.writeStartElement("categories");
172
173     xmlwriter.writeStartElement("category");
174     xmlwriter.writeCharacters("acceleration-0-10");
175     xmlwriter.writeEndElement();
176
177     xmlwriter.writeStartElement("category");
178     xmlwriter.writeCharacters("acceleration-0-60");
179     xmlwriter.writeEndElement();
180
181     xmlwriter.writeStartElement("category");
182     xmlwriter.writeCharacters("acceleration-0-100");
183     xmlwriter.writeEndElement();
184
185     xmlwriter.writeEndElement();
186 }