Added button for sending route to server.
[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 = 3010;
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 netbuf where to write.
87   *@param counter is GPSData::roundCounter.
88   *@todo Decide suitable attributes.
89   */
90 void XmlWriter::writeGpsTrack(QBuffer *netbuf, int counter, int start, int stop, int lat, int lon, int alt, int speed, int time)
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("Route");
103     xmlwriter.writeAttribute("starttime", QDateTime::currentDateTime().toString());
104     xmlwriter.writeAttribute("endtime", QDateTime::currentDateTime().toString());
105     xmlwriter.writeAttribute("points", QDateTime::currentDateTime().toString());
106     for(int i = 0; i < counter; i++)
107     {
108         xmlwriter.writeStartElement("point");
109         xmlwriter.writeAttribute("lat", QString::number(lat));
110         xmlwriter.writeAttribute("lon", QString::number(lon));
111         xmlwriter.writeAttribute("alt", QString::number(alt));
112         xmlwriter.writeAttribute("speed", QString::number(speed));
113         xmlwriter.writeAttribute("time", QString::number(time));
114         xmlwriter.writeEndElement();
115     }
116     xmlwriter.writeEndElement();
117     xmlwriter.writeEndDocument();
118 }
119
120
121 /**
122   *@brief Opens and closes a file, when xml information is written into a file,
123   *and passes file to writeXmlFile()
124   *@param usr for user name.
125   *@param psswd for password.
126   *@param email.
127   *@todo Replace hardcoced filename to finally GUI entry widget.
128   */
129 //void XmlWriter::writeXml(QString usr, QString psswd, QString email)
130 void XmlWriter::writeXml()
131 {
132     QString filename = "xmlcategoryfile.xml";
133     QFile file(filename);
134     if (!file.open(QFile::WriteOnly | QFile::Text)) {
135         qDebug() << "_xmlWrite fail";
136         return;
137     }
138
139     writeXmlFile(&file);
140     //writeRegistering(&file, usr, psswd, email);
141     //writeResult(&file);
142     file.close();
143 }
144
145 /**
146   *@brief Writes general xml information.
147   *Calls other functions to insert login and result information.
148   *@param device: target of writing, here filename.
149   *@param usr for user name.
150   *@param psswd for password.
151   *@param email.
152   */
153 bool XmlWriter::writeXmlFile(QIODevice *device)
154 {
155     xmlwriter.setDevice(device);
156     xmlwriter.writeStartDocument();
157     writeItems();
158     xmlwriter.writeEndDocument();
159
160     return true;
161 }
162
163
164 /**
165   *@brief Writes Speed Freek results items as tags and contents to earlier defined target.
166   *@todo Consider looping when writing many values.
167   *@todo Replace testing values to finally used variabls.
168   */
169 void XmlWriter::writeItems()
170 {
171     xmlwriter.writeStartElement("result");
172     xmlwriter.writeAttribute("value", QString::number(14)); //tmp testing value
173     xmlwriter.writeAttribute("unit", "seconds");
174     xmlwriter.writeAttribute("date", QDateTime::currentDateTime().toString());
175     xmlwriter.writeEndElement();
176 }
177