Merge branch 'feature/UIcommwithAccele' into feature/UIcommwithAccele2
[speedfreak] / Client / xmlwriter.cpp
1 #include <QtGui>
2 #include <QNetworkRequest>
3 //#include <QNetworkReply>
4 #include <QIODevice>
5 #include <QFile>
6 #include <QMessageBox>
7 #include <QDebug>
8 #include <QDateTime>
9 #include <QDate>
10 #include <QTime>
11 #include <QApplication>
12 #include "xmlwriter.h"
13
14
15 /*! @brief Constructor, connects object to GUI
16  */
17 XmlWriter::XmlWriter(Ui_MainWindow* myMainWindow)
18 {
19     ui = myMainWindow;
20 }
21
22
23 /*! @brief Destructor
24   */
25 XmlWriter::~XmlWriter()
26 {
27
28 }
29
30 /*! @brief Opens and closes a file, when xml information is written into a file,
31   * and passes file to writeXmlFile()
32   * @note Partly harcoded and commented for git.
33   * @todo Replace hardcoced filename and GUI elements to finally used widgets.
34   */
35 void XmlWriter::xmlWrite()
36 {
37     //QString filename = ui->lineEditFile->text();
38     QString filename = "xmlfile.xml";
39     QFile file(filename);
40     if (!file.open(QFile::WriteOnly | QFile::Text)) {
41         /*QMessageBox::warning(this->ui->centralWidget, tr("QXmlStream Bookmarks"),
42                              tr("Cannot write file %1:\n%2.")
43                              .arg(filename)
44                              .arg(file.errorString()));
45                              */
46         qDebug() << "_xmlWrite fail";
47         return;
48     }
49
50     writeXmlFile(&file);
51     file.close();
52 }
53
54 /*! @brief Writes general xml information.
55   * @todo Check API connection to QBuffer, when Speed Freek network client has been written.
56   */
57 bool XmlWriter::writeXmlFile(QIODevice *device)
58 //bool XmlWriter::writeXmlFile(QBuffer *device)
59 {
60     xmlwriter.setDevice(device);
61     xmlwriter.writeStartDocument();
62     xmlwriter.writeDTD("<!DOCTYPE xml>");
63     xmlwriter.writeStartElement("xml");
64     xmlwriter.writeAttribute("version", "1.0");
65     writeItems();
66     xmlwriter.writeEndDocument();
67
68     return true;
69 }
70
71 /*! @brief Writes Speed Freek application specific items as tags and contents.
72   * @brief Results of speed/ direction/ acceleration into QMap are calculated elsewhere
73   * @todo Consider looping of writing QMap values.
74   * @todo Replace hardcoced names to finally used GUI elements.
75   */
76 void XmlWriter::writeItems()
77 {
78     //xmlwriter.writeCharacters(ui->lineEditPlace->text());
79     //Temporarily:
80     xmlwriter.writeStartElement("place");
81     xmlwriter.writeCharacters("rallirata");
82     xmlwriter.writeEndElement();
83
84     xmlwriter.writeStartElement("date");
85     xmlwriter.writeCharacters(QDate::currentDate().toString());
86     xmlwriter.writeEndElement();
87
88     xmlwriter.writeStartElement("time");
89     xmlwriter.writeCharacters(QTime::currentTime().toString());
90     xmlwriter.writeEndElement();
91
92     /* Or combined:
93     xmlwriter.writeStartElement("datetime");
94     xmlwriter.writeCharacters(QDateTime::currentDateTime().toString());
95     xmlwriter.writeEndElement(); */
96
97     xmlwriter.writeStartElement("result");
98     xmlwriter.writeStartElement("speed");
99     xmlwriter.writeAttribute("value", QString::number(resultmap.value("speed")));
100     xmlwriter.writeAttribute("unit", "m/s");
101     xmlwriter.writeEndElement();
102     xmlwriter.writeStartElement("distance");
103     xmlwriter.writeAttribute("value", QString::number(resultmap.value("distance")));
104     xmlwriter.writeAttribute("unit", "m");
105     xmlwriter.writeEndElement();
106     xmlwriter.writeStartElement("acceleration");
107     xmlwriter.writeAttribute("value", QString::number(resultmap.value("acceleration")));
108     xmlwriter.writeAttribute("unit", "m/s2");
109     xmlwriter.writeEndElement();
110     xmlwriter.writeEndElement();    //result
111     //or:
112     //xmlwriter.writeTextElement("speed", QString::number(resultmap.value("speed")) + " m/s");
113     //xmlwriter.writeTextElement("distance", QString::number(resultmap.value("distance")) + " m");
114     //xmlwriter.writeTextElement("acceleration", QString::number(resultmap.value("acceleration")) + " m/s2");
115 }
116
117 /*! @brief Initializes QMap by zeroing values for a new measurement.
118   */
119 void XmlWriter::initResultmap()
120 {
121     resultmap["acceleration"] = 0;
122     resultmap["speed"] = 0;
123     resultmap["distance"] = 0;
124 }
125
126 /*! @brief A temp function during development, used until real QMap available.
127   */
128 void XmlWriter::fillResultmap()
129 {
130     resultmap["acceleration"] = 9;
131     resultmap["speed"] = 48;
132     resultmap["distance"] = 600;
133 }