X-Git-Url: http://git.maemo.org/git/?p=speedfreak;a=blobdiff_plain;f=Client%2Fxmlreader.cpp;h=9c7766b03640d29e7f2cced3fdd6ad87a3b6e27a;hp=393cd417fc2dd1240dc9cf1e86192a344ec1dd8c;hb=04e7348e047307f792f88b7a3e198a008eef0e8b;hpb=8d318c3fa452a8f0186425dcd85e217a4a1f3e07 diff --git a/Client/xmlreader.cpp b/Client/xmlreader.cpp index 393cd41..9c7766b 100644 --- a/Client/xmlreader.cpp +++ b/Client/xmlreader.cpp @@ -10,13 +10,15 @@ #include #include #include "xmlreader.h" +#include "profiledialog.h" /** *Constructor of this class. */ XmlReader::XmlReader() { - xmlShow(); + qDebug() << "__XmlReader"; + myCategoryList = new CategoryList(); } /** @@ -24,22 +26,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, QString userName) { - qDebug() << "_xmlRead"; + qDebug() << "_xmlReadTop10Results"; + + int i = 0; + int receivedFlag = 0; + + xmlreader.clear(); + QByteArray array = device->readAll(); + qDebug() << "array: " << array; + xmlreader.addData(array); + //xmlreader.addData(device->readAll()); - xmlreader.addData(device->readAll()); + if(!(myCategoryList->top10List.isEmpty())) { + myCategoryList->top10List.clear(); + } //Go trough the xml document while(!xmlreader.atEnd()) @@ -52,55 +68,111 @@ 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; } 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") + if (userName.toUpper() == user.toUpper())//If user name match highlight result { - top10AccelerationList.append(position + "\t" + - user + "\t" + - value + - unit + "\t" + - description + "\n"); + myCategoryList->top10List.append("" + position + "" + + user + "" + + value + " " + + unit + "" + + date + ""); } - - if(category == "top10speed") + else//If user name not match { - top10SpeedList.append(position + "\t" + - user + "\t" + - value + - unit + "\t" + - description + "\n"); + myCategoryList->top10List.append("" + position + "" + + user + "" + + value + " " + + unit + "" + + date + ""); } + /* Old way, no highlight + myCategoryList->top10List.append(position + "\t" + + user + "\t" + + value + " " + + unit + "\t" + + date + "\n");*/ - if(category == "top10gforce") - { - top10GforceList.append(position + "\t" + - user + "\t" + - value + - unit + "\t" + - description + "\n"); - } - qDebug() << position << user << value << unit; + 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 +181,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,7 +191,75 @@ void XmlReader::xmlShow() return; } - //xmlRead(&file); + //xmlReadTop10Results(&file); + //xmlReadCategories(&file); + //xmlReadProfile(&file); file.close(); } +/** + * This function is used to read profile xml. + * @param QIODevice device: target of reading, here filename. + * @param ProfileDialog *profileDialog + */ +void XmlReader::xmlReadProfile(QIODevice *device, ProfileDialog *profileDialog) +{ + qDebug() << "_xmlReadProfile"; + + profile = profileDialog; + + xmlreader.clear(); + QByteArray array = device->readAll(); + + xmlreader.addData(array); + + QString login; + QString picture; + + // 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() == "profile") + { + qDebug() << xmlreader.name(); + attr = xmlreader.attributes(); + login = attr.value("login").toString(); + picture = attr.value("picture").toString(); + } + if(xmlreader.name() == "manufacturer") + { + qDebug() << xmlreader.name(); + profile->setManufacturer(xmlreader.readElementText()); + } + if(xmlreader.name() == "type") + { + qDebug() << xmlreader.name(); + profile->setType(xmlreader.readElementText()); + + } + if(xmlreader.name() == "model") + { + qDebug() << xmlreader.name(); + profile->setModel(xmlreader.readElementText()); + + } + if(xmlreader.name() == "description") + { + qDebug() << xmlreader.name(); + profile->setDescription(xmlreader.readElementText()); + } + if(xmlreader.name() == "picture" && picture == "yes") + { + qDebug() << xmlreader.name(); + profile->setPicture(xmlreader.readElementText()); + } + } + } + profile = NULL; +}