Route and Results buttons updated.
[speedfreak] / Client / xmlwriter.cpp
index f7b02cd..3abe02a 100644 (file)
-#include <QtGui>
-#include <QNetworkRequest>
-//#include <QNetworkReply>
-#include <QIODevice>
-#include <QFile>
-#include <QMessageBox>
-#include <QDebug>
-#include <QDateTime>
-#include <QDate>
-#include <QTime>
-#include <QApplication>
+/*
+ * Xml writer
+ *
+ * @author     Tiina Kivilinna-Korhola
+ * @author     Toni Jussila <toni.jussila@fudeco.com>
+ * @copyright  (c) 2010 Speed Freak team
+ * license     http://opensource.org/licenses/gpl-license.php GNU Public License
+ */
+
 #include "xmlwriter.h"
 
+/**
+  *@brief Constructor, connects object to GUI
+  *@param Pointer to carmainwindow, which is temporarily used during development
+  */
+XmlWriter::XmlWriter()
+{
+
+}
 
-/*! @brief Constructor, connects object to GUI
- */
-XmlWriter::XmlWriter(Ui_MainWindow* myMainWindow)
+/**
+  *@brief Destructor
+  */
+XmlWriter::~XmlWriter()
 {
-    ui = myMainWindow;
+
 }
 
+/**
+  *@brief Writes registration items into tags.
+  *@param netbuf a buffer where xmlstreamwriter writes to.
+  *@param usr for user name.
+  *@param psswd for password.
+  *@param email.
+  */
+void XmlWriter::writeRegistering(QBuffer *netbuf, QString usr, QString psswd, QString email)
+{
+    qDebug() << "_writeRegistering";
+
+    xmlwriter.setDevice(netbuf);
+
+    xmlwriter.writeStartDocument();
+    xmlwriter.writeStartElement("user");
+
+    xmlwriter.writeStartElement("login");
+    xmlwriter.writeCharacters(usr);
+    xmlwriter.writeEndElement();
+
+    xmlwriter.writeStartElement("password");
+    xmlwriter.writeCharacters(psswd);
+    xmlwriter.writeEndElement();
+
+    xmlwriter.writeStartElement("email");
+    xmlwriter.writeCharacters(email);
+    xmlwriter.writeEndElement();
 
-/*! @brief Destructor
+    xmlwriter.writeEndElement();
+    xmlwriter.writeEndDocument();
+}
+
+/**
+  *@brief Writes Speed Freek results items as tags and contents into a buffer.
+  *@todo Consider looping when writing many values.
+  *@todo Replace test value to finally used variables.
   */
-XmlWriter::~XmlWriter()
+void XmlWriter::writeResult(QBuffer *netbuf, double result)
+{
+    qDebug() << "_writeResult";
+
+    xmlwriter.setDevice(netbuf);
+
+    xmlwriter.writeStartDocument();
+    xmlwriter.writeStartElement("result");
+    xmlwriter.writeAttribute("value", QString::number(result));
+    xmlwriter.writeEndElement();
+    xmlwriter.writeEndDocument();
+}
+
+/**
+  *@brief Write track to server.
+  *@param netbuf where to write.
+  *@param counter is GPSData::roundCounter.
+  *@todo Decide suitable attributes.
+  */
+void XmlWriter::writeGpsTrack(QBuffer *netbuf, int counter, int start, int stop, int lat, int lon, int alt, int speed, int time)
 {
+    qDebug() << "_writeGpsTrack";
+
+    double *ptrValue;
+    //ptrValue = ptrTable;
+    double tmp = 0;
+
+    xmlwriter.setDevice(netbuf);
 
+    xmlwriter.writeStartDocument();
+
+    xmlwriter.writeStartElement("Route");
+    xmlwriter.writeAttribute("starttime", QDateTime::currentDateTime().toString());
+    xmlwriter.writeAttribute("endtime", QDateTime::currentDateTime().toString());
+    xmlwriter.writeAttribute("points", QDateTime::currentDateTime().toString());
+    for(int i = 0; i < counter; i++)
+    {
+        xmlwriter.writeStartElement("point");
+        xmlwriter.writeAttribute("lat", QString::number(lat));
+        xmlwriter.writeAttribute("lon", QString::number(lon));
+        xmlwriter.writeAttribute("alt", QString::number(alt));
+        xmlwriter.writeAttribute("speed", QString::number(speed));
+        xmlwriter.writeAttribute("time", QString::number(time));
+        xmlwriter.writeEndElement();
+    }
+    xmlwriter.writeEndElement();
+    xmlwriter.writeEndDocument();
 }
 
-/*! @brief Opens and closes a file, when xml information is written into a file,
-  * and passes file to writeXmlFile()
-  * @note Partly harcoded and commented for git.
-  * @todo Replace hardcoced filename and GUI elements to finally used widgets.
+/**
+  *@brief Opens and closes a file, when xml information is written into a file,
+  *and passes file to writeXmlFile()
+  *@param usr for user name.
+  *@param psswd for password.
+  *@param email.
+  *@todo Replace hardcoced filename to finally GUI entry widget.
   */
-void XmlWriter::xmlWrite()
+//void XmlWriter::writeXml(QString usr, QString psswd, QString email)
+void XmlWriter::writeXml()
 {
-    //QString filename = ui->lineEditFile->text();
-    QString filename = "xmlfile.xml";
+    QString filename = "xmlcategoryfile.xml";
     QFile file(filename);
     if (!file.open(QFile::WriteOnly | QFile::Text)) {
-        /*QMessageBox::warning(this->ui->centralWidget, tr("QXmlStream Bookmarks"),
-                             tr("Cannot write file %1:\n%2.")
-                             .arg(filename)
-                             .arg(file.errorString()));
-                             */
         qDebug() << "_xmlWrite fail";
         return;
     }
 
     writeXmlFile(&file);
+    //writeRegistering(&file, usr, psswd, email);
+    //writeResult(&file);
     file.close();
 }
 
-/*! @brief Writes general xml information.
-  * @todo Check API connection to QBuffer, when Speed Freek network client has been written.
+/**
+  *@brief Writes general xml information.
+  *Calls other functions to insert login and result information.
+  *@param device: target of writing, here filename.
+  *@param usr for user name.
+  *@param psswd for password.
+  *@param email.
   */
 bool XmlWriter::writeXmlFile(QIODevice *device)
-//bool XmlWriter::writeXmlFile(QBuffer *device)
 {
     xmlwriter.setDevice(device);
     xmlwriter.writeStartDocument();
-    xmlwriter.writeDTD("<!DOCTYPE xml>");
-    xmlwriter.writeStartElement("xml");
-    xmlwriter.writeAttribute("version", "1.0");
     writeItems();
     xmlwriter.writeEndDocument();
 
     return true;
 }
 
-/*! @brief Writes Speed Freek application specific items as tags and contents.
-  * @brief Results of speed/ direction/ acceleration into QMap are calculated elsewhere
-  * @todo Consider looping of writing QMap values.
-  * @todo Replace hardcoced names to finally used GUI elements.
+/**
+  *@brief Writes Speed Freek results items as tags and contents to earlier defined target.
+  *@todo Consider looping when writing many values.
+  *@todo Replace testing values to finally used variabls.
   */
 void XmlWriter::writeItems()
 {
-    //xmlwriter.writeCharacters(ui->lineEditPlace->text());
-    //Temporarily:
-    xmlwriter.writeStartElement("place");
-    xmlwriter.writeCharacters("rallirata");
-    xmlwriter.writeEndElement();
-
-    xmlwriter.writeStartElement("date");
-    xmlwriter.writeCharacters(QDate::currentDate().toString());
-    xmlwriter.writeEndElement();
-
-    xmlwriter.writeStartElement("time");
-    xmlwriter.writeCharacters(QTime::currentTime().toString());
-    xmlwriter.writeEndElement();
-
-    /* Or combined:
-    xmlwriter.writeStartElement("datetime");
-    xmlwriter.writeCharacters(QDateTime::currentDateTime().toString());
-    xmlwriter.writeEndElement(); */
-
     xmlwriter.writeStartElement("result");
-    xmlwriter.writeStartElement("speed");
-    xmlwriter.writeAttribute("value", QString::number(resultmap.value("speed")));
-    xmlwriter.writeAttribute("unit", "m/s");
-    xmlwriter.writeEndElement();
-    xmlwriter.writeStartElement("distance");
-    xmlwriter.writeAttribute("value", QString::number(resultmap.value("distance")));
-    xmlwriter.writeAttribute("unit", "m");
+    xmlwriter.writeAttribute("value", QString::number(14)); //tmp testing value
+    xmlwriter.writeAttribute("unit", "seconds");
+    xmlwriter.writeAttribute("date", QDateTime::currentDateTime().toString());
     xmlwriter.writeEndElement();
-    xmlwriter.writeStartElement("acceleration");
-    xmlwriter.writeAttribute("value", QString::number(resultmap.value("acceleration")));
-    xmlwriter.writeAttribute("unit", "m/s2");
-    xmlwriter.writeEndElement();
-    xmlwriter.writeEndElement();    //result
-    //or:
-    //xmlwriter.writeTextElement("speed", QString::number(resultmap.value("speed")) + " m/s");
-    //xmlwriter.writeTextElement("distance", QString::number(resultmap.value("distance")) + " m");
-    //xmlwriter.writeTextElement("acceleration", QString::number(resultmap.value("acceleration")) + " m/s2");
-}
-
-/*! @brief Initializes QMap by zeroing values for a new measurement.
-  */
-void XmlWriter::initResultmap()
-{
-    resultmap["acceleration"] = 0;
-    resultmap["speed"] = 0;
-    resultmap["distance"] = 0;
-}
-
-/*! @brief A temp function during development, used until real QMap available.
-  */
-void XmlWriter::fillResultmap()
-{
-    resultmap["acceleration"] = 9;
-    resultmap["speed"] = 48;
-    resultmap["distance"] = 600;
 }