4 * @author Toni Jussila <toni.jussila@fudeco.com>
5 * @author Tiina Kivilinna-Korhola <tiina.kivilinna-korhola@fudeco.com>
6 * @copyright (c) 2010 Speed Freak team
7 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
12 #include "xmlreader.h"
15 *Constructor of this class.
17 XmlReader::XmlReader()
19 myCategoryList = new CategoryList();
23 *Destructor of this class. Should be used to release all allocated resources.
25 XmlReader::~XmlReader()
32 delete myCategoryList;
36 *This function is used to parse top 10 results of a certain category.
38 void XmlReader::xmlReadTop10Results(QNetworkReply *device)
40 qDebug() << "_xmlReadTop10Results";
46 QByteArray array = device->readAll();
47 qDebug() << "array: " << array;
48 xmlreader.addData(array);
49 //xmlreader.addData(device->readAll());
51 if(!(myCategoryList->top10List.isEmpty())) {
52 myCategoryList->top10List.clear();
55 //Go trough the xml document
56 while(!xmlreader.atEnd())
60 //Check if this element is starting element
61 if(xmlreader.isStartElement())
63 if(xmlreader.name() == "results")
65 //qDebug() << xmlreader.name();
67 if(xmlreader.name() == "result")
69 //qDebug() << xmlreader.name();
70 attr = xmlreader.attributes();
72 user = attr.value("username").toString();
73 position = attr.value("position").toString();
74 date = attr.value("date").toString();
75 //unit = attr.value("unit").toString();
77 value = attr.value("value").toString();
79 myCategoryList->top10List.append(position + "\t" +
85 //qDebug() << position << user << value << unit << date;
91 //Only change labelTopList if a new top10List has been received
94 qDebug() << "receivedTop10List() emitted";
95 emit receivedTop10List();
99 void XmlReader::xmlReadCategories(QNetworkReply *device)
100 //void XmlReader::xmlReadCategories(QIODevice *device)
102 qDebug() << "_xmlReadCategories";
105 int receivedFlag = 0;
108 QByteArray array = device->readAll();
109 qDebug() << "array: " << array;
110 xmlreader.addData(array);
111 //xmlreader.addData(device->readAll());
113 myCategoryList->clearCats();
115 //Go trough the xml document
116 while(!xmlreader.atEnd())
119 xmlreader.readNext();
121 //Check if this element is starting element
122 if(xmlreader.isStartElement())
124 if(xmlreader.name() == "categories")
126 //qDebug() << xmlreader.name();
128 if(xmlreader.name() == "category")
130 //qDebug() << xmlreader.name();
131 attr = xmlreader.attributes();
132 description = attr.value("description").toString();
133 unit = attr.value("unit").toString();
134 category = xmlreader.readElementText();
135 myCategoryList->appendCats(i, description, unit, category);
136 //qDebug() << "description: " << description << "unit: " << unit << "category: " << category;
142 //Only change comboBoxTopCategory if a new list has been received
145 qDebug() << "receivedCategoryList() emitted";
146 myCategoryList->realSizeOfCats = i;
147 emit receivedCategoryList();
152 *This function is used to read example xml file (results.xml).
153 *@todo Read real xml.
155 void XmlReader::xmlShow()
157 //QString filename = "results.xml";
158 QString filename = "xmlcategoryfile.xml";
159 QFile file(filename);
161 if (!file.open(QFile::ReadOnly))
163 qDebug() << "_xmlShow fail";
167 //xmlReadTop10Results(&file);
168 //xmlReadCategories(&file);