All pastes #584675 Raw Edit

Untitled

public text v1 · immutable
·published 2007-06-22 21:37 UTC
rendered paste body
Index: 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;