void QGeoCodeReplyNokia::networkFinished() { if (!m_reply) return; if (m_reply->error() != QNetworkReply::NoError) { // Removed because this is already done in networkError, which previously caused _two_ errors to be raised for every error. //setError(QGeoCodeReply::CommunicationError, m_reply->errorString()); //m_reply->deleteLater(); //m_reply = 0; return; } QGeoCodeXmlParser parser; if (parser.parse(m_reply)) { QList<QGeoLocation> locations = parser.results(); QGeoShape bounds = viewport(); if (bounds.isValid()) { for (int i = locations.size() - 1; i >= 0; --i) { if (!bounds.contains(locations[i].coordinate())) locations.removeAt(i); } } setLocations(locations); setFinished(true); } else { setError(QGeoCodeReply::ParseError, parser.errorString()); } m_reply->deleteLater(); m_reply = 0; }
void QGeoCodeReplyNokia::networkFinished() { if (!m_reply) return; if (m_reply->error() != QNetworkReply::NoError) return; QGeoCodeXmlParser *parser = new QGeoCodeXmlParser; parser->setBounds(viewport()); connect(parser, SIGNAL(results(QList<QGeoLocation>)), this, SLOT(appendResults(QList<QGeoLocation>))); connect(parser, SIGNAL(error(QString)), this, SLOT(parseError(QString))); m_parsing = true; parser->parse(m_reply->readAll()); m_reply->deleteLater(); m_reply = 0; }