Changed URLs. Added open/close to QBuffer buffers.
[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 {
96     QString filename = "xmlfile.xml";
97     QFile file(filename);
98     if (!file.open(QFile::WriteOnly | QFile::Text)) {
99         qDebug() << "_xmlWrite fail";
100         return;
101     }
102
103     writeXmlFile(&file);
104     //writeRegistering(&file, usr, psswd, email);
105     //writeResult(&file);
106     file.close();
107 }
108
109 /**
110   *@brief Writes general xml information.
111   *Calls other functions to insert login and result information.
112   *@param device: target of writing, here filename.
113   *@param usr for user name.
114   *@param psswd for password.
115   *@param email.
116   */
117 bool XmlWriter::writeXmlFile(QIODevice *device)
118 {
119     xmlwriter.setDevice(device);
120     xmlwriter.writeStartDocument();
121     writeItems();
122     xmlwriter.writeEndDocument();
123
124     return true;
125 }
126
127
128 /**
129   *@brief Writes Speed Freek results items as tags and contents to earlier defined target.
130   *@todo Consider looping when writing many values.
131   *@todo Replace testing values to finally used variabls.
132   */
133 void XmlWriter::writeItems()
134 {
135     xmlwriter.writeStartElement("result");
136     xmlwriter.writeAttribute("value", QString::number(14)); //tmp testing value
137     xmlwriter.writeAttribute("unit", "seconds");
138     xmlwriter.writeAttribute("date", QDateTime::currentDateTime().toString());
139     xmlwriter.writeEndElement();
140 }
141
142
143 /**
144   *@brief A temp function during development, used to create a "serverfile".
145   */
146 void XmlWriter::serverWritesTop()
147 {
148     int i = 0;
149     int n = 5;
150
151     /* Server sends to client */
152     xmlwriter.writeStartElement("results");
153     xmlwriter.writeAttribute("category", "acceleration-0-40");
154     xmlwriter.writeAttribute("unit", "seconds");
155     xmlwriter.writeAttribute("description", "Acceleration from 0 to 100 km/h");
156
157     for (i = 0; i < n; i++) {
158         xmlwriter.writeStartElement("result");
159         xmlwriter.writeAttribute("position", QString::number(i));
160         xmlwriter.writeAttribute("user", "test123");
161         xmlwriter.writeAttribute("date", QDateTime::currentDateTime().toString());
162         xmlwriter.writeAttribute("value", QString::number(i+i+1));
163         xmlwriter.writeEndElement();
164     }
165 }