Added registration dialog
[speedfreak] / Client / xmlreader.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 "xmlreader.h"
13
14
15 /*! @brief Constructor, connects object to GUI
16  */
17 XmlReader::XmlReader(Ui_MainWindow* myMainWindow)
18 {
19     ui = myMainWindow;
20 }
21
22 /*! @brief Destructor
23   */
24 XmlReader::~XmlReader()
25 {
26
27 }
28
29 QString XmlReader::errorString() const
30 {
31     return QObject::tr("%1\nLine %2, column %3")
32             .arg(xmlreader.errorString())
33             .arg(xmlreader.lineNumber())
34             .arg(xmlreader.columnNumber());
35 }
36
37
38 /*! @brief parsing xml file that is sent by server over network.
39   * Shows received information on screen and parsed information on command line.
40   * @note Partly commented for git.
41   * @todo (Development: Seems to omit element tags and some values when reading from QFile. Why? This used
42   * earlier with QNetworkReply printed all xml contents.)
43   * @todo Remove command line output and use final GUI widget names.
44   * @todo Replace using of QFile to QNetworkReply.
45   */
46 void XmlReader::xmlRead(QIODevice *device)
47 //void XmlReader::xmlRead(QNetworkReply *device)
48 {
49     qDebug() << "_xmlRead";
50
51     xmlreader.addData(device->readAll());
52     //Or: View webpage contents on textEdit by adding all data to xml stream reader,
53     //since readAll() empties the buffer
54     /*QByteArray readAllArr = device->readAll();
55     ui->textEditXml->append(readAllArr);
56     xmlreader.addData(readAllArr);*/
57
58     //Go trough the xml document
59     while(!xmlreader.atEnd())
60     {
61         //Read next node
62         xmlreader.readNext();
63         //Check if this element is starting element
64         if(xmlreader.isStartElement())
65         {
66             if(xmlreader.name() == "place")
67             {
68                 qDebug() << xmlreader.name();
69             }
70             if(xmlreader.name() == "date")
71             {
72                  qDebug() << xmlreader.name();
73             }
74             if(xmlreader.name() == "time")
75             {
76                  qDebug() << xmlreader.name();
77             }
78             if(xmlreader.name() == "result")
79             {
80                 //Two consequent start elements
81                 if(xmlreader.readNextStartElement())
82                 {
83                     if(xmlreader.name() == "speed")
84                     {
85                     QString speed;
86                     QXmlStreamAttributes attr = xmlreader.attributes();
87                     speed = (attr.value("value").toString() + " " + attr.value("unit").toString());
88                     //ui->lineEditSpeed->setText(speed);
89                     qDebug() << xmlreader.name() << speed;
90                     }
91                 }
92             }
93             if(xmlreader.name() == "distance")
94             {
95                 QString distance;
96                 QXmlStreamAttributes attr = xmlreader.attributes();
97                 distance = (attr.value("value").toString() + " " + attr.value("unit").toString());
98                 //ui->lineEditDist->setText(distance);
99                 qDebug() << xmlreader.name() << distance;
100             }
101             if(xmlreader.name() == "acceleration")
102             {
103                 QString acceleration;
104                 QXmlStreamAttributes attr = xmlreader.attributes();
105                 acceleration = (attr.value("value").toString()+ " " + attr.value("unit").toString());
106                 //ui->lineEditAccel->setText(acceleration);
107                 qDebug() << xmlreader.name() << acceleration;
108             }
109         }
110     }
111 }
112
113 /*! @brief A function used tmp in development.
114   * @note Partly harcoded and commented for git.
115   */
116 void XmlReader::xmlShow()
117 {
118     //QString filename = ui->lineEditFile->text();
119     QString filename = "xmlfile.xml";
120     QFile file(filename);
121
122     if (!file.open(QFile::ReadOnly))
123     {
124         /*QMessageBox::warning(this->ui->centralWidget,
125                                 tr("QXmlStream Bookmarks"),
126                                 tr("Cannot write file %1:\n%2.")
127                                 .arg(file.fileName())
128                                 .arg(file.errorString()));*/
129         qDebug() << "_xmlShow fail";
130         return;
131     }
132
133     xmlRead(&file);
134
135     file.close();
136 }
137