Route and Results buttons updated.
[speedfreak] / Client / xmlreader.cpp
index 1ac3918..b6c1653 100644 (file)
@@ -16,7 +16,8 @@
   */
 XmlReader::XmlReader()
 {
-    xmlShow();
+    qDebug() << "__XmlReader";
+    myCategoryList = new CategoryList();
 }
 
 /**
@@ -24,22 +25,36 @@ XmlReader::XmlReader()
   */
 XmlReader::~XmlReader()
 {
+    qDebug() << "__~XmlReader";
     category = "";
     unit = "";
-    description = "";
     position = "";
     user = "";
     value = "";
+
+    if(myCategoryList)
+        delete myCategoryList;
 }
 
 /**
-  *This function is used to parsing xml file.
+  *This function is used to parse top 10 results of a certain category.
   */
-void XmlReader::xmlRead(QNetworkReply *device)
+void XmlReader::xmlReadTop10Results(QNetworkReply *device)
 {
-    qDebug() << "_xmlRead";
+    qDebug() << "_xmlReadTop10Results";
+
+    int i = 0;
+    int receivedFlag = 0;
 
-    xmlreader.addData(device->readAll());
+    xmlreader.clear();
+    QByteArray array = device->readAll();
+    //qDebug() << "array: " << array;
+    xmlreader.addData(array);
+    //xmlreader.addData(device->readAll());
+
+    if(!(myCategoryList->top10List.isEmpty())) {
+        myCategoryList->top10List.clear();
+    }
 
     //Go trough the xml document
     while(!xmlreader.atEnd())
@@ -51,56 +66,90 @@ void XmlReader::xmlRead(QNetworkReply *device)
         {
             if(xmlreader.name() == "results")
             {
-                qDebug() << xmlreader.name();
-                attr = xmlreader.attributes();
-
-                category = attr.value("category").toString();
-                unit = attr.value("unit").toString();
-                description = attr.value("description").toString();
-
-                top10List << category;
-                qDebug() << top10List << unit << description;
+                //qDebug() << xmlreader.name();
             }
-
             if(xmlreader.name() == "result")
             {
-                qDebug() << "result";
+                //qDebug() << xmlreader.name();
                 attr = xmlreader.attributes();
 
+                user = attr.value("username").toString();
                 position = attr.value("position").toString();
-                user = attr.value("user").toString();
+                date = attr.value("date").toString();
+                //unit = attr.value("unit").toString();
+                unit = "s";
                 value = attr.value("value").toString();
 
-                if (category == "acceleration-0-100")
-                {
-                    top10AccelerationList.append(position + "\t" +
+                myCategoryList->top10List.append(position + "\t" +
                                                 user + "\t" +
-                                                value +
+                                                value + " " +
                                                 unit + "\t" +
-                                                description + "\n");
-                }
-
-                if(category == "top10speed")
-                {
-                    top10SpeedList.append(position + "\t" +
-                                          user + "\t" +
-                                          value +
-                                          unit + "\t" +
-                                          description + "\n");
-                }
-
-                if(category == "top10gforce")
-                {
-                    top10GforceList.append(position + "\t" +
-                                           user + "\t" +
-                                           value +
-                                           unit + "\t" +
-                                           description + "\n");
-                }
-                qDebug() << position << user << value << unit;
+                                                date + "\n");
+
+                //qDebug() << position << user << value << unit << date;
+                i++;
+                receivedFlag = 1;
+            }
+        }
+    }
+    //Only change labelTopList if a new top10List has been received
+    if(receivedFlag)
+    {
+        qDebug() << "receivedTop10List() emitted";
+        emit receivedTop10List();
+    }
+}
+
+void XmlReader::xmlReadCategories(QNetworkReply *device)
+//void XmlReader::xmlReadCategories(QIODevice *device)
+{
+    qDebug() << "_xmlReadCategories";
+
+    int i = 0;
+    int receivedFlag = 0;
+
+    xmlreader.clear();
+    QByteArray array = device->readAll();
+    //qDebug() << "array: " << array;
+    xmlreader.addData(array);
+    //xmlreader.addData(device->readAll());
+
+    myCategoryList->clearCats();
+
+    //Go trough the xml document
+    while(!xmlreader.atEnd())
+    {
+        //Read next node
+        xmlreader.readNext();
+
+        //Check if this element is starting element
+        if(xmlreader.isStartElement())
+        {
+            if(xmlreader.name() == "categories")
+            {
+                //qDebug() << xmlreader.name();
+            }
+            if(xmlreader.name() == "category")
+            {
+                //qDebug() << xmlreader.name();
+                attr = xmlreader.attributes();
+                description = attr.value("description").toString();
+                unit = attr.value("unit").toString();
+                category = xmlreader.readElementText();
+                myCategoryList->appendCats(i, description, unit, category);
+                //qDebug() << "description: " << description << "unit: " << unit << "category: " << category;
+                i++;
+                receivedFlag = 1;
             }
         }
     }
+    //Only change comboBoxTopCategory if a new list has been received
+    if(receivedFlag)
+    {
+        qDebug() << "receivedCategoryList() emitted";
+        myCategoryList->realSizeOfCats = i;
+        emit receivedCategoryList();
+    }
 }
 
 /**
@@ -109,7 +158,8 @@ void XmlReader::xmlRead(QNetworkReply *device)
   */
 void XmlReader::xmlShow()
 {
-    QString filename = "results.xml";
+    //QString filename = "results.xml";
+    QString filename = "xmlcategoryfile.xml";
     QFile file(filename);
 
     if (!file.open(QFile::ReadOnly))
@@ -118,43 +168,7 @@ void XmlReader::xmlShow()
         return;
     }
 
-    //xmlRead(&file);
+    //xmlReadTop10Results(&file);
+    //xmlReadCategories(&file);
     file.close();
 }
-
-/**
-  *This is return function.
-  *@todo Read real top 10 category list
-  *@return QStringList top10List
-  */
-QStringList XmlReader::getTop10List()
-{
-    return top10List;
-}
-
-/**
-  *This is return function.
-  *@return QString top10AccelerationList
-  */
-QString XmlReader::getTop10AccelerationList()
-{
-    return top10AccelerationList;
-}
-
-/**
-  *This is return function.
-  *@return QString top10SpeedList
-  */
-QString XmlReader::getTop10SpeedList()
-{
-    return top10SpeedList;
-}
-
-/**
-  *This is return function.
-  *@return QString top10GforceList
-  */
-QString XmlReader::getTop10GforceList()
-{
-    return top10GforceList;
-}