diff options
Diffstat (limited to 'src/plugins/geoservices/nokia/placesv2/qplacesearchreplyhere.cpp')
-rw-r--r-- | src/plugins/geoservices/nokia/placesv2/qplacesearchreplyhere.cpp | 62 |
1 files changed, 30 insertions, 32 deletions
diff --git a/src/plugins/geoservices/nokia/placesv2/qplacesearchreplyhere.cpp b/src/plugins/geoservices/nokia/placesv2/qplacesearchreplyhere.cpp index 3a56c927..9808b539 100644 --- a/src/plugins/geoservices/nokia/placesv2/qplacesearchreplyhere.cpp +++ b/src/plugins/geoservices/nokia/placesv2/qplacesearchreplyhere.cpp @@ -54,29 +54,25 @@ QT_BEGIN_NAMESPACE QPlaceSearchReplyHere::QPlaceSearchReplyHere(const QPlaceSearchRequest &request, QNetworkReply *reply, QPlaceManagerEngineNokiaV2 *parent) - : QPlaceSearchReply(parent), m_reply(reply), m_engine(parent) + : QPlaceSearchReply(parent), m_engine(parent) { - Q_ASSERT(parent); - - setRequest(request); - - if (!m_reply) + if (!reply) { + setError(UnknownError, QStringLiteral("Null reply")); return; + } + setRequest(request); - m_reply->setParent(this); - connect(m_reply, SIGNAL(finished()), this, SLOT(replyFinished())); + connect(reply, SIGNAL(finished()), this, SLOT(replyFinished())); + connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), + this, SLOT(replyError(QNetworkReply::NetworkError))); + connect(this, &QPlaceReply::aborted, reply, &QNetworkReply::abort); + connect(this, &QObject::destroyed, reply, &QObject::deleteLater); } QPlaceSearchReplyHere::~QPlaceSearchReplyHere() { } -void QPlaceSearchReplyHere::abort() -{ - if (m_reply) - m_reply->abort(); -} - void QPlaceSearchReplyHere::setError(QPlaceReply::Error error_, const QString &errorString) { QPlaceReply::setError(error_, errorString); @@ -87,23 +83,13 @@ void QPlaceSearchReplyHere::setError(QPlaceReply::Error error_, const QString &e void QPlaceSearchReplyHere::replyFinished() { - if (m_reply->error() != QNetworkReply::NoError) { - switch (m_reply->error()) { - case QNetworkReply::OperationCanceledError: - setError(CancelError, QCoreApplication::translate(NOKIA_PLUGIN_CONTEXT_NAME, CANCEL_ERROR)); - break; - case QNetworkReply::ContentNotFoundError: - setError(PlaceDoesNotExistError, - QString::fromLatin1("The id, %1, does not reference an existing place") - .arg(request().recommendationId())); - break; - default: - setError(CommunicationError, QCoreApplication::translate(NOKIA_PLUGIN_CONTEXT_NAME, NETWORK_ERROR)); - } + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); + + if (reply->error() != QNetworkReply::NoError) return; - } - QJsonDocument document = QJsonDocument::fromJson(m_reply->readAll()); + QJsonDocument document = QJsonDocument::fromJson(reply->readAll()); if (!document.isObject()) { setError(ParseError, QCoreApplication::translate(NOKIA_PLUGIN_CONTEXT_NAME, PARSE_ERROR)); return; @@ -141,9 +127,6 @@ void QPlaceSearchReplyHere::replyFinished() setResults(results); - m_reply->deleteLater(); - m_reply = 0; - setFinished(true); emit finished(); } @@ -227,4 +210,19 @@ QPlaceProposedSearchResult QPlaceSearchReplyHere::parseSearchResult(const QJsonO return result; } +void QPlaceSearchReplyHere::replyError(QNetworkReply::NetworkError error) +{ + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); + if (error == QNetworkReply::OperationCanceledError) { + setError(QPlaceReply::CancelError, QCoreApplication::translate(NOKIA_PLUGIN_CONTEXT_NAME, CANCEL_ERROR)); + } else if (error == QNetworkReply::ContentNotFoundError) { + setError(QPlaceReply::PlaceDoesNotExistError, + QString::fromLatin1("The id, %1, does not reference an existing place") + .arg(request().recommendationId())); + } else { + setError(QPlaceReply::CommunicationError, QCoreApplication::translate(NOKIA_PLUGIN_CONTEXT_NAME, NETWORK_ERROR)); + } +} + QT_END_NAMESPACE |