rendered paste bodyIndex: ions/ion_envcan.cpp
===================================================================
--- ions/ion_envcan.cpp (revision 679051)
+++ ions/ion_envcan.cpp (working copy)
@@ -39,7 +39,6 @@
void EnvCanadaIon::fetch() {
// Go read the city's XML file
qDebug() << "EnvCanadaIon::fetch() called";
- m_xml.clear();
getXMLData();
}
@@ -70,6 +69,7 @@
qDebug() << "URL Location: " << url.url();
m_job = KIO::get (url.url(), true, false);
+ m_jobXml.insert(m_job, new QXmlStreamReader);
m_jobList.insert(m_job, key);
//KIO::TransferJob *XMLjob = KIO::get (url.url(), true, false);
@@ -97,18 +97,21 @@
Q_UNUSED(job)
qDebug("EnvCanadaIon::slotDataArrived(): Called");
- if (data.isEmpty())
+ if (data.isEmpty() || !m_jobXml.contains(job))
return;
// Send to xml.
- m_xml.addData(data.data());
+ m_jobXml[job]->addData(data.data());
}
void EnvCanadaIon::slotJobFinished (KJob *job) {
Q_UNUSED(job)
// Dual use method, if we're fetching location data to parse we need to do this first
qDebug ("EnvCanadaIon::slotJobFinished() Called");
- readXMLData(m_jobList[job]);
+ readXMLData(m_jobList[job], *m_jobXml[job]);
+ m_jobList.remove(job);
+ delete m_jobXml[job];
+ m_jobXml.remove(job);
emit newData();
}
@@ -166,47 +169,47 @@
return !m_xmlSetup.error();
}
-bool EnvCanadaIon::readXMLData(QString key) {
+bool EnvCanadaIon::readXMLData(QString key, QXmlStreamReader& xml) {
qDebug() << "EnvCanadaIon::readXMLData() called";
- while (!m_xml.atEnd()) {
- m_xml.readNext();
+ while (!xml.atEnd()) {
+ xml.readNext();
- if (m_xml.isStartElement()) {
+ if (xml.isStartElement()) {
- m_currentTag = m_xml.name().toString();
+ m_currentTag = xml.name().toString();
// siteData
- if (m_xml.name() == "siteData")
+ if (xml.name() == "siteData")
qDebug() << "begin siteData TAG";
- if (m_xml.name() == "station") {
+ if (xml.name() == "station") {
qDebug() << "*********************** KEY " << key;
- m_stations.insert(key, m_xml.attributes().value("code").toString());
+ m_stations.insert(key, xml.attributes().value("code").toString());
}
//qDebug() << "Current Tag: " << m_currentTag;
}
- else if (m_xml.isEndElement()) {
- if (m_xml.name() == "siteData")
+ else if (xml.isEndElement()) {
+ if (xml.name() == "siteData")
qDebug() << "end siteData TAG";
}
}
- return !m_xml.error();
+ return !xml.error();
}
-void EnvCanadaIon::parseUnknownElement() {
+void EnvCanadaIon::parseUnknownElement(QXmlStreamReader& xml) {
- while (!m_xml.atEnd()) {
- m_xml.readNext();
+ while (!xml.atEnd()) {
+ xml.readNext();
- if (m_xml.isEndElement())
+ if (xml.isEndElement())
break;
- if (m_xml.isStartElement())
- parseUnknownElement();
+ if (xml.isStartElement())
+ parseUnknownElement(xml);
}
}
@@ -218,8 +221,8 @@
QString EnvCanadaIon::country(QString key) { return m_stations[key]; }
QString EnvCanadaIon::territory(QString key) { return m_territories[key]; }
QString EnvCanadaIon::city(QString key) { return m_cities[key]; }
-QString EnvCanadaIon::temperature(QString key) { return QString(); }
-QString EnvCanadaIon::pressure(QString key) { return QString(); }
-QString EnvCanadaIon::humidity(QString key) { return QString(); }
+QString EnvCanadaIon::temperature(QString key) { Q_UNUSED(key) return QString(); }
+QString EnvCanadaIon::pressure(QString key) { Q_UNUSED(key) return QString(); }
+QString EnvCanadaIon::humidity(QString key) { Q_UNUSED(key) return QString(); }
#include "ion_envcan.moc"
Index: ions/ion_envcan.h
===================================================================
--- ions/ion_envcan.h (revision 679051)
+++ ions/ion_envcan.h (working copy)
@@ -71,6 +71,7 @@
QMap<QString, QString> m_stations;
+ QMap<KJob *, QXmlStreamReader*> m_jobXml;
QMap<KJob *, QString> m_jobList;
// XML key codes
QString m_code;
@@ -80,13 +81,12 @@
void getXMLData();
void getXMLSetup();
- bool readXMLData(QString key);
+ bool readXMLData(QString key, QXmlStreamReader& xml);
bool readXMLSetup();
- void parseUnknownElement();
+ void parseUnknownElement(QXmlStreamReader& xml);
// Member variables
- QXmlStreamReader m_xml;
QXmlStreamReader m_xmlSetup;
KUrl *m_url;
KIO::TransferJob *m_job;