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 qDebug() << "__XmlReader";
20 myCategoryList = new CategoryList();
24 *Destructor of this class. Should be used to release all allocated resources.
26 XmlReader::~XmlReader()
28 qDebug() << "__~XmlReader";
36 delete myCategoryList;
40 *This function is used to parse top 10 results of a certain category.
42 void XmlReader::xmlReadTop10Results(QNetworkReply *device)
44 qDebug() << "_xmlReadTop10Results";
50 QByteArray array = device->readAll();
51 //qDebug() << "array: " << array;
52 xmlreader.addData(array);
53 //xmlreader.addData(device->readAll());
55 if(!(myCategoryList->top10List.isEmpty())) {
56 myCategoryList->top10List.clear();
59 //Go trough the xml document
60 while(!xmlreader.atEnd())
64 //Check if this element is starting element
65 if(xmlreader.isStartElement())
67 if(xmlreader.name() == "results")
69 //qDebug() << xmlreader.name();
71 if(xmlreader.name() == "result")
73 //qDebug() << xmlreader.name();
74 attr = xmlreader.attributes();
76 user = attr.value("username").toString();
77 position = attr.value("position").toString();
78 date = attr.value("date").toString();
79 //unit = attr.value("unit").toString();
81 value = attr.value("value").toString();
83 myCategoryList->top10List.append(position + "\t" +
89 //qDebug() << position << user << value << unit << date;
95 //Only change labelTopList if a new top10List has been received
98 qDebug() << "receivedTop10List() emitted";
99 emit receivedTop10List();
103 void XmlReader::xmlReadCategories(QNetworkReply *device)
104 //void XmlReader::xmlReadCategories(QIODevice *device)
106 qDebug() << "_xmlReadCategories";
109 int receivedFlag = 0;
112 QByteArray array = device->readAll();
113 //qDebug() << "array: " << array;
114 xmlreader.addData(array);
115 //xmlreader.addData(device->readAll());
117 myCategoryList->clearCats();
119 //Go trough the xml document
120 while(!xmlreader.atEnd())
123 xmlreader.readNext();
125 //Check if this element is starting element
126 if(xmlreader.isStartElement())
128 if(xmlreader.name() == "categories")
130 //qDebug() << xmlreader.name();
132 if(xmlreader.name() == "category")
134 //qDebug() << xmlreader.name();
135 attr = xmlreader.attributes();
136 description = attr.value("description").toString();
137 unit = attr.value("unit").toString();
138 category = xmlreader.readElementText();
139 myCategoryList->appendCats(i, description, unit, category);
140 //qDebug() << "description: " << description << "unit: " << unit << "category: " << category;
146 //Only change comboBoxTopCategory if a new list has been received
149 qDebug() << "receivedCategoryList() emitted";
150 myCategoryList->realSizeOfCats = i;
151 emit receivedCategoryList();
156 *This function is used to read example xml file (results.xml).
157 *@todo Read real xml.
159 void XmlReader::xmlShow()
161 //QString filename = "results.xml";
162 QString filename = "xmlcategoryfile.xml";
163 QFile file(filename);
165 if (!file.open(QFile::ReadOnly))
167 qDebug() << "_xmlShow fail";
171 //xmlReadTop10Results(&file);
172 //xmlReadCategories(&file);