diff options
Diffstat (limited to 'src/plugins')
33 files changed, 350 insertions, 640 deletions
diff --git a/src/plugins/geoservices/esri/geocodereply_esri.cpp b/src/plugins/geoservices/esri/geocodereply_esri.cpp index a7ad9368..f1dac184 100644 --- a/src/plugins/geoservices/esri/geocodereply_esri.cpp +++ b/src/plugins/geoservices/esri/geocodereply_esri.cpp @@ -51,11 +51,17 @@ QT_BEGIN_NAMESPACE GeoCodeReplyEsri::GeoCodeReplyEsri(QNetworkReply *reply, OperationType operationType, QObject *parent) : - QGeoCodeReply(parent), m_reply(reply), m_operationType(operationType) + QGeoCodeReply(parent), m_operationType(operationType) { - connect(m_reply, SIGNAL(finished()), this, SLOT(networkReplyFinished())); - connect(m_reply, SIGNAL(error(QNetworkReply::NetworkError)), + if (!reply) { + setError(UnknownError, QStringLiteral("Null reply")); + return; + } + connect(reply, SIGNAL(finished()), this, SLOT(networkReplyFinished())); + connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(networkReplyError(QNetworkReply::NetworkError))); + connect(this, &QGeoCodeReply::aborted, reply, &QNetworkReply::abort); + connect(this, &QObject::destroyed, reply, &QObject::deleteLater); setLimit(1); setOffset(0); @@ -63,49 +69,25 @@ GeoCodeReplyEsri::GeoCodeReplyEsri(QNetworkReply *reply, OperationType operation GeoCodeReplyEsri::~GeoCodeReplyEsri() { - if (m_reply) - m_reply->deleteLater(); -} - -void GeoCodeReplyEsri::abort() -{ - if (!m_reply) - return; - - m_reply->abort(); - QGeoCodeReply::abort(); - - m_reply->deleteLater(); - m_reply = Q_NULLPTR; } void GeoCodeReplyEsri::networkReplyError(QNetworkReply::NetworkError error) { Q_UNUSED(error) - - if (!m_reply) - return; - - setError(QGeoCodeReply::CommunicationError, m_reply->errorString()); - - m_reply->deleteLater(); - m_reply = Q_NULLPTR; + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); + setError(QGeoCodeReply::CommunicationError, reply->errorString()); } void GeoCodeReplyEsri::networkReplyFinished() { - if (!m_reply) - return; + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); - if (m_reply->error() != QNetworkReply::NoError) - { - setError(QGeoCodeReply::CommunicationError, m_reply->errorString()); - m_reply->deleteLater(); - m_reply = Q_NULLPTR; + if (reply->error() != QNetworkReply::NoError) return; - } - QJsonDocument document = QJsonDocument::fromJson(m_reply->readAll()); + QJsonDocument document = QJsonDocument::fromJson(reply->readAll()); if (document.isObject()) { QJsonObject object = document.object(); @@ -148,9 +130,6 @@ void GeoCodeReplyEsri::networkReplyFinished() } else { setError(QGeoCodeReply::CommunicationError, QStringLiteral("Unknown document")); } - - m_reply->deleteLater(); - m_reply = Q_NULLPTR; } QGeoLocation GeoCodeReplyEsri::parseAddress(const QJsonObject& object) diff --git a/src/plugins/geoservices/esri/geocodereply_esri.h b/src/plugins/geoservices/esri/geocodereply_esri.h index 4434b7dc..a857599b 100644 --- a/src/plugins/geoservices/esri/geocodereply_esri.h +++ b/src/plugins/geoservices/esri/geocodereply_esri.h @@ -58,9 +58,7 @@ public: public: GeoCodeReplyEsri(QNetworkReply *reply, OperationType operationType, QObject *parent = Q_NULLPTR); - virtual ~GeoCodeReplyEsri(); - - void abort() Q_DECL_OVERRIDE; + ~GeoCodeReplyEsri(); inline OperationType operationType() const; @@ -72,7 +70,6 @@ private Q_SLOTS: QGeoLocation parseCandidate(const QJsonObject &candidate); private: - QNetworkReply *m_reply; OperationType m_operationType; }; diff --git a/src/plugins/geoservices/esri/georoutereply_esri.cpp b/src/plugins/geoservices/esri/georoutereply_esri.cpp index 4a7d5c67..811ffd0d 100644 --- a/src/plugins/geoservices/esri/georoutereply_esri.cpp +++ b/src/plugins/geoservices/esri/georoutereply_esri.cpp @@ -48,43 +48,32 @@ QT_BEGIN_NAMESPACE GeoRouteReplyEsri::GeoRouteReplyEsri(QNetworkReply *reply, const QGeoRouteRequest &request, QObject *parent) : - QGeoRouteReply(request, parent), m_reply(reply) + QGeoRouteReply(request, parent) { - connect(m_reply, SIGNAL(finished()), this, SLOT(networkReplyFinished())); - connect(m_reply, SIGNAL(error(QNetworkReply::NetworkError)), + if (!reply) { + setError(UnknownError, QStringLiteral("Null reply")); + return; + } + connect(reply, SIGNAL(finished()), this, SLOT(networkReplyFinished())); + connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(networkReplyError(QNetworkReply::NetworkError))); + connect(this, &QGeoRouteReply::aborted, reply, &QNetworkReply::abort); + connect(this, &QObject::destroyed, reply, &QObject::deleteLater); } GeoRouteReplyEsri::~GeoRouteReplyEsri() { - if (m_reply) - m_reply->deleteLater(); -} - -void GeoRouteReplyEsri::abort() -{ - if (!m_reply) - return; - - m_reply->abort(); - m_reply->deleteLater(); - m_reply = Q_NULLPTR; } void GeoRouteReplyEsri::networkReplyFinished() { - if (!m_reply) - return; + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); - if (m_reply->error() != QNetworkReply::NoError) - { - setError(QGeoRouteReply::CommunicationError, m_reply->errorString()); - m_reply->deleteLater(); - m_reply = Q_NULLPTR; + if (reply->error() != QNetworkReply::NoError) return; - } - QJsonDocument document = QJsonDocument::fromJson(m_reply->readAll()); + QJsonDocument document = QJsonDocument::fromJson(reply->readAll()); GeoRouteJsonParserEsri parser(document); if (parser.isValid()) @@ -94,21 +83,14 @@ void GeoRouteReplyEsri::networkReplyFinished() } else { setError(QGeoRouteReply::ParseError, parser.errorString()); } - - m_reply->deleteLater(); - m_reply = Q_NULLPTR; } void GeoRouteReplyEsri::networkReplyError(QNetworkReply::NetworkError error) { Q_UNUSED(error) - - if (!m_reply) - return; - - setError(QGeoRouteReply::CommunicationError, m_reply->errorString()); - m_reply->deleteLater(); - m_reply = Q_NULLPTR; + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); + setError(QGeoRouteReply::CommunicationError, reply->errorString()); } QT_END_NAMESPACE diff --git a/src/plugins/geoservices/esri/georoutereply_esri.h b/src/plugins/geoservices/esri/georoutereply_esri.h index 6e97ee9f..049dc3ba 100644 --- a/src/plugins/geoservices/esri/georoutereply_esri.h +++ b/src/plugins/geoservices/esri/georoutereply_esri.h @@ -51,16 +51,11 @@ class GeoRouteReplyEsri : public QGeoRouteReply public: GeoRouteReplyEsri(QNetworkReply *reply, const QGeoRouteRequest &request, QObject *parent = Q_NULLPTR); - virtual ~GeoRouteReplyEsri(); - - void abort() Q_DECL_OVERRIDE; + ~GeoRouteReplyEsri(); private Q_SLOTS: void networkReplyFinished(); void networkReplyError(QNetworkReply::NetworkError error); - -private: - QNetworkReply *m_reply; }; QT_END_NAMESPACE diff --git a/src/plugins/geoservices/esri/geotiledmapreply_esri.cpp b/src/plugins/geoservices/esri/geotiledmapreply_esri.cpp index e0816c15..f4431bf0 100644 --- a/src/plugins/geoservices/esri/geotiledmapreply_esri.cpp +++ b/src/plugins/geoservices/esri/geotiledmapreply_esri.cpp @@ -49,50 +49,32 @@ static const unsigned char gifSignature[] = {0x47, 0x49, 0x46, 0x38, 0x00}; GeoTiledMapReplyEsri::GeoTiledMapReplyEsri(QNetworkReply *reply, const QGeoTileSpec &spec, QObject *parent) : - QGeoTiledMapReply(spec, parent), m_reply(reply) + QGeoTiledMapReply(spec, parent) { - connect(m_reply, SIGNAL(finished()), this, SLOT(networkReplyFinished())); - connect(m_reply, SIGNAL(error(QNetworkReply::NetworkError)), + if (!reply) { + setError(UnknownError, QStringLiteral("Null reply")); + return; + } + connect(reply, SIGNAL(finished()), this, SLOT(networkReplyFinished())); + connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(networkReplyError(QNetworkReply::NetworkError))); - connect(m_reply, SIGNAL(destroyed()), this, SLOT(replyDestroyed())); + connect(this, &QGeoTiledMapReply::aborted, reply, &QNetworkReply::abort); + connect(this, &QObject::destroyed, reply, &QObject::deleteLater); } GeoTiledMapReplyEsri::~GeoTiledMapReplyEsri() { - if (m_reply) { - m_reply->deleteLater(); - m_reply = Q_NULLPTR; - } -} - -void GeoTiledMapReplyEsri::abort() -{ - if (!m_reply) - return; - - m_reply->abort(); - QGeoTiledMapReply::abort(); -} - -void GeoTiledMapReplyEsri::replyDestroyed() -{ - m_reply = Q_NULLPTR; } void GeoTiledMapReplyEsri::networkReplyFinished() { - if (!m_reply) - return; + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); - if (m_reply->error() != QNetworkReply::NoError) - { - setError(QGeoTiledMapReply::CommunicationError, m_reply->errorString()); - m_reply->deleteLater(); - m_reply = Q_NULLPTR; + if (reply->error() != QNetworkReply::NoError) return; - } - QByteArray const& imageData = m_reply->readAll(); + QByteArray const& imageData = reply->readAll(); bool validFormat = true; if (imageData.startsWith(reinterpret_cast<const char*>(pngSignature))) @@ -108,22 +90,16 @@ void GeoTiledMapReplyEsri::networkReplyFinished() setMapImageData(imageData); setFinished(true); - - m_reply->deleteLater(); - m_reply = Q_NULLPTR; } void GeoTiledMapReplyEsri::networkReplyError(QNetworkReply::NetworkError error) { - if (!m_reply) - return; - - if (error != QNetworkReply::OperationCanceledError) - setError(QGeoTiledMapReply::CommunicationError, m_reply->errorString()); - - setFinished(true); - m_reply->deleteLater(); - m_reply = Q_NULLPTR; + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); + if (error == QNetworkReply::OperationCanceledError) + setFinished(true); + else + setError(QGeoTiledMapReply::CommunicationError, reply->errorString()); } QT_END_NAMESPACE diff --git a/src/plugins/geoservices/esri/geotiledmapreply_esri.h b/src/plugins/geoservices/esri/geotiledmapreply_esri.h index 32a35698..b459e943 100644 --- a/src/plugins/geoservices/esri/geotiledmapreply_esri.h +++ b/src/plugins/geoservices/esri/geotiledmapreply_esri.h @@ -52,17 +52,11 @@ class GeoTiledMapReplyEsri : public QGeoTiledMapReply public: GeoTiledMapReplyEsri(QNetworkReply *reply, const QGeoTileSpec &spec, QObject *parent = Q_NULLPTR); - virtual ~GeoTiledMapReplyEsri(); - - void abort() Q_DECL_OVERRIDE; + ~GeoTiledMapReplyEsri(); private Q_SLOTS: - void replyDestroyed(); void networkReplyFinished(); void networkReplyError(QNetworkReply::NetworkError error); - -private: - QNetworkReply *m_reply; }; QT_END_NAMESPACE diff --git a/src/plugins/geoservices/mapbox/qgeomapreplymapbox.cpp b/src/plugins/geoservices/mapbox/qgeomapreplymapbox.cpp index 5fe9caa8..4b60231d 100644 --- a/src/plugins/geoservices/mapbox/qgeomapreplymapbox.cpp +++ b/src/plugins/geoservices/mapbox/qgeomapreplymapbox.cpp @@ -39,59 +39,42 @@ #include <QtLocation/private/qgeotilespec_p.h> QGeoMapReplyMapbox::QGeoMapReplyMapbox(QNetworkReply *reply, const QGeoTileSpec &spec, const QString &format, QObject *parent) -: QGeoTiledMapReply(spec, parent), m_reply(reply), m_format (format) +: QGeoTiledMapReply(spec, parent), m_format (format) { - connect(m_reply, SIGNAL(finished()), this, SLOT(networkReplyFinished())); - connect(m_reply, SIGNAL(error(QNetworkReply::NetworkError)), + if (!reply) { + setError(UnknownError, QStringLiteral("Null reply")); + return; + } + connect(reply, SIGNAL(finished()), this, SLOT(networkReplyFinished())); + connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(networkReplyError(QNetworkReply::NetworkError))); + connect(this, &QGeoTiledMapReply::aborted, reply, &QNetworkReply::abort); + connect(this, &QObject::destroyed, reply, &QObject::deleteLater); } QGeoMapReplyMapbox::~QGeoMapReplyMapbox() { - if (m_reply) { - m_reply->deleteLater(); - m_reply = 0; - } -} - -void QGeoMapReplyMapbox::abort() -{ - if (!m_reply) - return; - - m_reply->abort(); -} - -QNetworkReply *QGeoMapReplyMapbox::networkReply() const -{ - return m_reply; } void QGeoMapReplyMapbox::networkReplyFinished() { - if (!m_reply) - return; + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); - if (m_reply->error() != QNetworkReply::NoError) + if (reply->error() != QNetworkReply::NoError) return; - setMapImageData(m_reply->readAll()); + setMapImageData(reply->readAll()); setMapImageFormat(m_format); setFinished(true); - - m_reply->deleteLater(); - m_reply = 0; } void QGeoMapReplyMapbox::networkReplyError(QNetworkReply::NetworkError error) { - if (!m_reply) - return; - - if (error != QNetworkReply::OperationCanceledError) - setError(QGeoTiledMapReply::CommunicationError, m_reply->errorString()); - - setFinished(true); - m_reply->deleteLater(); - m_reply = 0; + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); + if (error == QNetworkReply::OperationCanceledError) + setFinished(true); + else + setError(QGeoTiledMapReply::CommunicationError, reply->errorString()); } diff --git a/src/plugins/geoservices/mapbox/qgeomapreplymapbox.h b/src/plugins/geoservices/mapbox/qgeomapreplymapbox.h index 67ad61ad..c4a1dd82 100644 --- a/src/plugins/geoservices/mapbox/qgeomapreplymapbox.h +++ b/src/plugins/geoservices/mapbox/qgeomapreplymapbox.h @@ -51,16 +51,11 @@ public: explicit QGeoMapReplyMapbox(QNetworkReply *reply, const QGeoTileSpec &spec, const QString &format, QObject *parent = 0); ~QGeoMapReplyMapbox(); - void abort(); - - QNetworkReply *networkReply() const; - private Q_SLOTS: void networkReplyFinished(); void networkReplyError(QNetworkReply::NetworkError error); private: - QPointer<QNetworkReply> m_reply; QString m_format; }; diff --git a/src/plugins/geoservices/mapbox/qgeoroutereplymapbox.cpp b/src/plugins/geoservices/mapbox/qgeoroutereplymapbox.cpp index 4c98412b..8fc3386a 100644 --- a/src/plugins/geoservices/mapbox/qgeoroutereplymapbox.cpp +++ b/src/plugins/geoservices/mapbox/qgeoroutereplymapbox.cpp @@ -84,28 +84,21 @@ static QList<QGeoCoordinate> parseGeometry(const QJsonValue &geometry) QGeoRouteReplyMapbox::QGeoRouteReplyMapbox(QNetworkReply *reply, const QGeoRouteRequest &request, QObject *parent) -: QGeoRouteReply(request, parent), m_reply(reply) +: QGeoRouteReply(request, parent) { - connect(m_reply, SIGNAL(finished()), this, SLOT(networkReplyFinished())); - connect(m_reply, SIGNAL(error(QNetworkReply::NetworkError)), + if (!reply) { + setError(UnknownError, QStringLiteral("Null reply")); + return; + } + connect(reply, SIGNAL(finished()), this, SLOT(networkReplyFinished())); + connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(networkReplyError(QNetworkReply::NetworkError))); + connect(this, &QGeoRouteReply::aborted, reply, &QNetworkReply::abort); + connect(this, &QObject::destroyed, reply, &QObject::deleteLater); } QGeoRouteReplyMapbox::~QGeoRouteReplyMapbox() { - if (m_reply) - m_reply->deleteLater(); -} - -void QGeoRouteReplyMapbox::abort() -{ - if (!m_reply) - return; - - m_reply->abort(); - - m_reply->deleteLater(); - m_reply = 0; } static QGeoRoute constructRoute(const QJsonObject &obj) @@ -177,25 +170,19 @@ static QGeoRoute constructRoute(const QJsonObject &obj) void QGeoRouteReplyMapbox::networkReplyFinished() { - if (!m_reply) - return; + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); - if (m_reply->error() != QNetworkReply::NoError) { - setError(QGeoRouteReply::CommunicationError, m_reply->errorString()); - m_reply->deleteLater(); - m_reply = 0; + if (reply->error() != QNetworkReply::NoError) return; - } - QJsonDocument document = QJsonDocument::fromJson(m_reply->readAll()); + QJsonDocument document = QJsonDocument::fromJson(reply->readAll()); if (document.isObject()) { QJsonObject object = document.object(); QString status = object.value(QStringLiteral("code")).toString(); if (status != QStringLiteral("Ok")) { setError(QGeoRouteReply::UnknownError, object.value(QStringLiteral("message")).toString()); - m_reply->deleteLater(); - m_reply = 0; return; } @@ -210,22 +197,14 @@ void QGeoRouteReplyMapbox::networkReplyFinished() } else { setError(QGeoRouteReply::ParseError, QStringLiteral("Couldn't parse json.")); } - - m_reply->deleteLater(); - m_reply = 0; } void QGeoRouteReplyMapbox::networkReplyError(QNetworkReply::NetworkError error) { Q_UNUSED(error) - - if (!m_reply) - return; - - setError(QGeoRouteReply::CommunicationError, m_reply->errorString()); - - m_reply->deleteLater(); - m_reply = 0; + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); + setError(QGeoRouteReply::CommunicationError, reply->errorString()); } QT_END_NAMESPACE diff --git a/src/plugins/geoservices/mapbox/qgeoroutereplymapbox.h b/src/plugins/geoservices/mapbox/qgeoroutereplymapbox.h index 9df45ac4..f19faee7 100644 --- a/src/plugins/geoservices/mapbox/qgeoroutereplymapbox.h +++ b/src/plugins/geoservices/mapbox/qgeoroutereplymapbox.h @@ -55,14 +55,9 @@ public: QGeoRouteReplyMapbox(QNetworkReply *reply, const QGeoRouteRequest &request, QObject *parent = 0); ~QGeoRouteReplyMapbox(); - void abort() Q_DECL_OVERRIDE; - private Q_SLOTS: void networkReplyFinished(); void networkReplyError(QNetworkReply::NetworkError error); - -private: - QNetworkReply *m_reply; }; QT_END_NAMESPACE diff --git a/src/plugins/geoservices/nokia/placesv2/qplacecontentreplyimpl.cpp b/src/plugins/geoservices/nokia/placesv2/qplacecontentreplyimpl.cpp index 9a5cbf48..f67fa5bb 100644 --- a/src/plugins/geoservices/nokia/placesv2/qplacecontentreplyimpl.cpp +++ b/src/plugins/geoservices/nokia/placesv2/qplacecontentreplyimpl.cpp @@ -48,30 +48,26 @@ QT_BEGIN_NAMESPACE QPlaceContentReplyImpl::QPlaceContentReplyImpl(const QPlaceContentRequest &request, QNetworkReply *reply, QPlaceManagerEngineNokiaV2 *engine) - : QPlaceContentReply(engine), m_reply(reply), m_engine(engine) + : QPlaceContentReply(engine), m_engine(engine) { Q_ASSERT(engine); - 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(m_reply, SIGNAL(error(QNetworkReply::NetworkError)), + 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); } QPlaceContentReplyImpl::~QPlaceContentReplyImpl() { } -void QPlaceContentReplyImpl::abort() -{ - if (m_reply) - m_reply->abort(); -} - void QPlaceContentReplyImpl::setError(QPlaceReply::Error error_, const QString &errorString) { QPlaceContentReply::setError(error_, errorString); @@ -82,31 +78,32 @@ void QPlaceContentReplyImpl::setError(QPlaceReply::Error error_, const QString & void QPlaceContentReplyImpl::replyFinished() { - if (m_reply->isOpen()) { - QJsonDocument document = QJsonDocument::fromJson(m_reply->readAll()); - if (!document.isObject()) { - setError(ParseError, QCoreApplication::translate(NOKIA_PLUGIN_CONTEXT_NAME, PARSE_ERROR)); - return; - } - - QJsonObject object = document.object(); - - QPlaceContent::Collection collection; - int totalCount; - QPlaceContentRequest previous; - QPlaceContentRequest next; - - parseCollection(request().contentType(), object, &collection, &totalCount, - &previous, &next, m_engine); - - setTotalCount(totalCount); - setContent(collection); - setPreviousPageRequest(previous); - setNextPageRequest(next); + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); + + if (reply->error() != QNetworkReply::NoError) + return; + + QJsonDocument document = QJsonDocument::fromJson(reply->readAll()); + if (!document.isObject()) { + setError(ParseError, QCoreApplication::translate(NOKIA_PLUGIN_CONTEXT_NAME, PARSE_ERROR)); + return; } - m_reply->deleteLater(); - m_reply = 0; + QJsonObject object = document.object(); + + QPlaceContent::Collection collection; + int totalCount; + QPlaceContentRequest previous; + QPlaceContentRequest next; + + parseCollection(request().contentType(), object, &collection, &totalCount, + &previous, &next, m_engine); + + setTotalCount(totalCount); + setContent(collection); + setPreviousPageRequest(previous); + setNextPageRequest(next); setFinished(true); emit finished(); @@ -114,13 +111,12 @@ void QPlaceContentReplyImpl::replyFinished() void QPlaceContentReplyImpl::replyError(QNetworkReply::NetworkError error) { - switch (error) { - case QNetworkReply::OperationCanceledError: - setError(CancelError, "Request canceled."); - break; - default: - setError(CommunicationError, "Network error."); - } + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); + if (error == QNetworkReply::OperationCanceledError) + setError(QPlaceReply::CancelError, QStringLiteral("Request cancelled")); + else + setError(QPlaceReply::CommunicationError, reply->errorString()); } QT_END_NAMESPACE diff --git a/src/plugins/geoservices/nokia/placesv2/qplacecontentreplyimpl.h b/src/plugins/geoservices/nokia/placesv2/qplacecontentreplyimpl.h index c7ef7ee4..596b9a4c 100644 --- a/src/plugins/geoservices/nokia/placesv2/qplacecontentreplyimpl.h +++ b/src/plugins/geoservices/nokia/placesv2/qplacecontentreplyimpl.h @@ -54,15 +54,12 @@ public: QPlaceManagerEngineNokiaV2 *engine); ~QPlaceContentReplyImpl(); - void abort(); - private slots: void setError(QPlaceReply::Error error_, const QString &errorString); void replyFinished(); void replyError(QNetworkReply::NetworkError error); private: - QNetworkReply *m_reply; QPlaceManagerEngineNokiaV2 *m_engine; }; diff --git a/src/plugins/geoservices/nokia/placesv2/qplacedetailsreplyimpl.cpp b/src/plugins/geoservices/nokia/placesv2/qplacedetailsreplyimpl.cpp index e85b9cc7..1e7f2d2f 100644 --- a/src/plugins/geoservices/nokia/placesv2/qplacedetailsreplyimpl.cpp +++ b/src/plugins/geoservices/nokia/placesv2/qplacedetailsreplyimpl.cpp @@ -88,27 +88,23 @@ static bool countryTableContains(const QString &countryCode) QPlaceDetailsReplyImpl::QPlaceDetailsReplyImpl(QNetworkReply *reply, QPlaceManagerEngineNokiaV2 *parent) - : QPlaceDetailsReply(parent), m_reply(reply), m_engine(parent) +: QPlaceDetailsReply(parent), m_engine(parent) { - Q_ASSERT(parent); - - if (!m_reply) + if (!reply) { + setError(UnknownError, QStringLiteral("Null reply")); return; - - 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); } QPlaceDetailsReplyImpl::~QPlaceDetailsReplyImpl() { } -void QPlaceDetailsReplyImpl::abort() -{ - if (m_reply) - m_reply->abort(); -} - void QPlaceDetailsReplyImpl::setError(QPlaceReply::Error error_, const QString &errorString) { QPlaceReply::setError(error_, errorString); @@ -119,23 +115,13 @@ void QPlaceDetailsReplyImpl::setError(QPlaceReply::Error error_, const QString & void QPlaceDetailsReplyImpl::replyFinished() { - if (m_reply->error() != QNetworkReply::NoError) { - switch (m_reply->error()) { - case QNetworkReply::OperationCanceledError: - setError(CancelError, "Request canceled."); - break; - case QNetworkReply::ContentNotFoundError: - setError(PlaceDoesNotExistError, - QString::fromLatin1("The id, %1, does not reference an existing place") - .arg(m_placeId)); - break; - default: - setError(CommunicationError, "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; @@ -337,11 +323,23 @@ void QPlaceDetailsReplyImpl::replyFinished() place.setDetailsFetched(true); setPlace(place); - m_reply->deleteLater(); - m_reply = 0; - setFinished(true); emit finished(); } +void QPlaceDetailsReplyImpl::replyError(QNetworkReply::NetworkError error) +{ + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); + if (error == QNetworkReply::OperationCanceledError) { + setError(QPlaceReply::CancelError, QStringLiteral("Request cancelled")); + } else if (error == QNetworkReply::ContentNotFoundError) { + setError(QPlaceReply::PlaceDoesNotExistError, + QString::fromLatin1("The id, %1, does not reference an existing place") + .arg(m_placeId)); + } else { + setError(QPlaceReply::CommunicationError, reply->errorString()); + } +} + QT_END_NAMESPACE diff --git a/src/plugins/geoservices/nokia/placesv2/qplacedetailsreplyimpl.h b/src/plugins/geoservices/nokia/placesv2/qplacedetailsreplyimpl.h index 2524d04a..dc537c80 100644 --- a/src/plugins/geoservices/nokia/placesv2/qplacedetailsreplyimpl.h +++ b/src/plugins/geoservices/nokia/placesv2/qplacedetailsreplyimpl.h @@ -53,15 +53,14 @@ public: QPlaceDetailsReplyImpl(QNetworkReply *reply, QPlaceManagerEngineNokiaV2 *parent); ~QPlaceDetailsReplyImpl(); - void abort(); void setPlaceId(const QString &placeId) { m_placeId = placeId; } private slots: void setError(QPlaceReply::Error error_, const QString &errorString); void replyFinished(); + void replyError(QNetworkReply::NetworkError error); private: - QNetworkReply *m_reply; QPlaceManagerEngineNokiaV2 *m_engine; QString m_placeId; }; 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 diff --git a/src/plugins/geoservices/nokia/placesv2/qplacesearchreplyhere.h b/src/plugins/geoservices/nokia/placesv2/qplacesearchreplyhere.h index a712ab84..b3d97a3d 100644 --- a/src/plugins/geoservices/nokia/placesv2/qplacesearchreplyhere.h +++ b/src/plugins/geoservices/nokia/placesv2/qplacesearchreplyhere.h @@ -56,17 +56,15 @@ public: QPlaceManagerEngineNokiaV2 *parent); ~QPlaceSearchReplyHere(); - void abort(); - private slots: void setError(QPlaceReply::Error error_, const QString &errorString); void replyFinished(); + void replyError(QNetworkReply::NetworkError error); private: QPlaceResult parsePlaceResult(const QJsonObject &item) const; QPlaceProposedSearchResult parseSearchResult(const QJsonObject &item) const; - QNetworkReply *m_reply; QPlaceManagerEngineNokiaV2 *m_engine; }; diff --git a/src/plugins/geoservices/nokia/placesv2/qplacesearchsuggestionreplyimpl.cpp b/src/plugins/geoservices/nokia/placesv2/qplacesearchsuggestionreplyimpl.cpp index 6ed8b5a2..9882545d 100644 --- a/src/plugins/geoservices/nokia/placesv2/qplacesearchsuggestionreplyimpl.cpp +++ b/src/plugins/geoservices/nokia/placesv2/qplacesearchsuggestionreplyimpl.cpp @@ -46,25 +46,23 @@ QT_BEGIN_NAMESPACE QPlaceSearchSuggestionReplyImpl::QPlaceSearchSuggestionReplyImpl(QNetworkReply *reply, QObject *parent) -: QPlaceSearchSuggestionReply(parent), m_reply(reply) +: QPlaceSearchSuggestionReply(parent) { - if (!m_reply) + if (!reply) { + setError(UnknownError, QStringLiteral("Null reply")); return; - - 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); } QPlaceSearchSuggestionReplyImpl::~QPlaceSearchSuggestionReplyImpl() { } -void QPlaceSearchSuggestionReplyImpl::abort() -{ - if (m_reply) - m_reply->abort(); -} - void QPlaceSearchSuggestionReplyImpl::setError(QPlaceReply::Error error_, const QString &errorString) { @@ -76,18 +74,13 @@ void QPlaceSearchSuggestionReplyImpl::setError(QPlaceReply::Error error_, void QPlaceSearchSuggestionReplyImpl::replyFinished() { - if (m_reply->error() != QNetworkReply::NoError) { - switch (m_reply->error()) { - case QNetworkReply::OperationCanceledError: - setError(CancelError, "Request canceled."); - break; - default: - setError(CommunicationError, "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)); emit error(error(), errorString()); @@ -107,11 +100,18 @@ void QPlaceSearchSuggestionReplyImpl::replyFinished() setSuggestions(s); - m_reply->deleteLater(); - m_reply = 0; - setFinished(true); emit finished(); } +void QPlaceSearchSuggestionReplyImpl::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 + setError(QPlaceReply::CommunicationError, QCoreApplication::translate(NOKIA_PLUGIN_CONTEXT_NAME, NETWORK_ERROR)); +} + QT_END_NAMESPACE diff --git a/src/plugins/geoservices/nokia/placesv2/qplacesearchsuggestionreplyimpl.h b/src/plugins/geoservices/nokia/placesv2/qplacesearchsuggestionreplyimpl.h index dbcba3ab..97ae3e1e 100644 --- a/src/plugins/geoservices/nokia/placesv2/qplacesearchsuggestionreplyimpl.h +++ b/src/plugins/geoservices/nokia/placesv2/qplacesearchsuggestionreplyimpl.h @@ -50,14 +50,10 @@ public: explicit QPlaceSearchSuggestionReplyImpl(QNetworkReply *reply, QObject *parent = 0); ~QPlaceSearchSuggestionReplyImpl(); - void abort(); - private slots: void setError(QPlaceReply::Error error_, const QString &errorString); void replyFinished(); - -private: - QNetworkReply *m_reply; + void replyError(QNetworkReply::NetworkError error); }; QT_END_NAMESPACE diff --git a/src/plugins/geoservices/nokia/qgeocodereply_nokia.cpp b/src/plugins/geoservices/nokia/qgeocodereply_nokia.cpp index 73d2d4c3..53a28652 100644 --- a/src/plugins/geoservices/nokia/qgeocodereply_nokia.cpp +++ b/src/plugins/geoservices/nokia/qgeocodereply_nokia.cpp @@ -47,13 +47,21 @@ QT_BEGIN_NAMESPACE QGeoCodeReplyNokia::QGeoCodeReplyNokia(QNetworkReply *reply, int limit, int offset, const QGeoShape &viewport, QObject *parent) -: QGeoCodeReply(parent), m_reply(reply), m_parsing(false) +: QGeoCodeReply(parent), m_parsing(false) { + if (!reply) { + setError(UnknownError, QStringLiteral("Null reply")); + return; + } qRegisterMetaType<QList<QGeoLocation> >(); - connect(m_reply, SIGNAL(finished()), this, SLOT(networkFinished())); - connect(m_reply, SIGNAL(error(QNetworkReply::NetworkError)), + connect(reply, SIGNAL(finished()), this, SLOT(networkFinished())); + connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(networkError(QNetworkReply::NetworkError))); + connect(this, &QGeoCodeReply::aborted, reply, &QNetworkReply::abort); + connect(this, &QGeoCodeReply::aborted, [this](){ m_parsing = false; }); + connect(this, &QObject::destroyed, reply, &QObject::deleteLater); + setLimit(limit); setOffset(offset); @@ -62,29 +70,14 @@ QGeoCodeReplyNokia::QGeoCodeReplyNokia(QNetworkReply *reply, int limit, int offs QGeoCodeReplyNokia::~QGeoCodeReplyNokia() { - abort(); -} - -void QGeoCodeReplyNokia::abort() -{ - if (!m_reply) { - m_parsing = false; - return; - } - - m_reply->abort(); - - m_reply->deleteLater(); - m_reply = 0; - m_parsing = false; } void QGeoCodeReplyNokia::networkFinished() { - if (!m_reply) - return; + QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender()); + reply->deleteLater(); - if (m_reply->error() != QNetworkReply::NoError) + if (reply->error() != QNetworkReply::NoError) return; QGeoCodeXmlParser *parser = new QGeoCodeXmlParser; @@ -94,23 +87,16 @@ void QGeoCodeReplyNokia::networkFinished() connect(parser, SIGNAL(error(QString)), this, SLOT(parseError(QString))); m_parsing = true; - parser->parse(m_reply->readAll()); - - m_reply->deleteLater(); - m_reply = 0; + parser->parse(reply->readAll()); } void QGeoCodeReplyNokia::networkError(QNetworkReply::NetworkError error) { Q_UNUSED(error) - if (!m_reply) - return; - - setError(QGeoCodeReply::CommunicationError, m_reply->errorString()); - - m_reply->deleteLater(); - m_reply = 0; + QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender()); + reply->deleteLater(); + setError(QGeoCodeReply::CommunicationError, reply->errorString()); } void QGeoCodeReplyNokia::appendResults(const QList<QGeoLocation> &locations) @@ -129,7 +115,6 @@ void QGeoCodeReplyNokia::parseError(const QString &errorString) setError(QGeoCodeReply::ParseError, QCoreApplication::translate(NOKIA_PLUGIN_CONTEXT_NAME, RESPONSE_NOT_RECOGNIZABLE)); - abort(); } QT_END_NAMESPACE diff --git a/src/plugins/geoservices/nokia/qgeocodereply_nokia.h b/src/plugins/geoservices/nokia/qgeocodereply_nokia.h index 85726fca..43730403 100644 --- a/src/plugins/geoservices/nokia/qgeocodereply_nokia.h +++ b/src/plugins/geoservices/nokia/qgeocodereply_nokia.h @@ -49,8 +49,6 @@ public: QGeoCodeReplyNokia(QNetworkReply *reply, int limit, int offset, const QGeoShape &viewport, QObject *parent = 0); ~QGeoCodeReplyNokia(); - void abort(); - private Q_SLOTS: void networkFinished(); void networkError(QNetworkReply::NetworkError error); @@ -58,7 +56,6 @@ private Q_SLOTS: void parseError(const QString &errorString); private: - QNetworkReply *m_reply; bool m_parsing; }; diff --git a/src/plugins/geoservices/nokia/qgeomapreply_nokia.cpp b/src/plugins/geoservices/nokia/qgeomapreply_nokia.cpp index c95f8de3..6e1a1e85 100644 --- a/src/plugins/geoservices/nokia/qgeomapreply_nokia.cpp +++ b/src/plugins/geoservices/nokia/qgeomapreply_nokia.cpp @@ -42,63 +42,50 @@ QT_BEGIN_NAMESPACE QGeoMapReplyNokia::QGeoMapReplyNokia(QNetworkReply *reply, const QGeoTileSpec &spec, QObject *parent) - : QGeoTiledMapReply(spec, parent), - m_reply(reply) + : QGeoTiledMapReply(spec, parent) { - connect(m_reply, + if (!reply) { + setError(UnknownError, QStringLiteral("Null reply")); + return; + } + connect(reply, SIGNAL(finished()), this, SLOT(networkFinished())); - connect(m_reply, + connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(networkError(QNetworkReply::NetworkError))); + connect(this, &QGeoTiledMapReply::aborted, reply, &QNetworkReply::abort); + connect(this, &QObject::destroyed, reply, &QObject::deleteLater); } QGeoMapReplyNokia::~QGeoMapReplyNokia() { } -QNetworkReply *QGeoMapReplyNokia::networkReply() const -{ - return m_reply; -} - -void QGeoMapReplyNokia::abort() -{ - if (!m_reply) - return; - - m_reply->abort(); -} - void QGeoMapReplyNokia::networkFinished() { - if (!m_reply) - return; + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); - if (m_reply->error() != QNetworkReply::NoError) + if (reply->error() != QNetworkReply::NoError) return; - setMapImageData(m_reply->readAll()); + setMapImageData(reply->readAll()); setMapImageFormat("png"); setFinished(true); - - m_reply->deleteLater(); - m_reply = 0; } void QGeoMapReplyNokia::networkError(QNetworkReply::NetworkError error) { - if (!m_reply) - return; - - if (error != QNetworkReply::OperationCanceledError) - setError(QGeoTiledMapReply::CommunicationError, m_reply->errorString()); - setFinished(true); - m_reply->deleteLater(); - m_reply = 0; + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); + if (error == QNetworkReply::OperationCanceledError) + setFinished(true); + else + setError(QGeoTiledMapReply::CommunicationError, reply->errorString()); } QT_END_NAMESPACE diff --git a/src/plugins/geoservices/nokia/qgeomapreply_nokia.h b/src/plugins/geoservices/nokia/qgeomapreply_nokia.h index 55759914..d835757c 100644 --- a/src/plugins/geoservices/nokia/qgeomapreply_nokia.h +++ b/src/plugins/geoservices/nokia/qgeomapreply_nokia.h @@ -52,16 +52,9 @@ public: QGeoMapReplyNokia(QNetworkReply *reply, const QGeoTileSpec &spec, QObject *parent = 0); ~QGeoMapReplyNokia(); - void abort(); - - QNetworkReply *networkReply() const; - private Q_SLOTS: void networkFinished(); void networkError(QNetworkReply::NetworkError error); - -private: - QPointer<QNetworkReply> m_reply; }; QT_END_NAMESPACE diff --git a/src/plugins/geoservices/nokia/qgeoroutereply_nokia.cpp b/src/plugins/geoservices/nokia/qgeoroutereply_nokia.cpp index 45ea071f..b5fdfee1 100644 --- a/src/plugins/geoservices/nokia/qgeoroutereply_nokia.cpp +++ b/src/plugins/geoservices/nokia/qgeoroutereply_nokia.cpp @@ -49,43 +49,41 @@ QT_BEGIN_NAMESPACE QGeoRouteReplyNokia::QGeoRouteReplyNokia(const QGeoRouteRequest &request, const QList<QNetworkReply *> &replies, QObject *parent) -: QGeoRouteReply(request, parent), m_replies(replies), m_parsers(0) +: QGeoRouteReply(request, parent), m_parsers(0) { qRegisterMetaType<QList<QGeoRoute> >(); - foreach (QNetworkReply *reply, m_replies) { + bool failure = false; + foreach (QNetworkReply *reply, replies) { + if (!reply) { + failure = true; + continue; + } connect(reply, SIGNAL(finished()), this, SLOT(networkFinished())); connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(networkError(QNetworkReply::NetworkError))); + connect(this, &QGeoRouteReply::aborted, reply, &QNetworkReply::abort); + connect(this, &QObject::destroyed, reply, &QObject::deleteLater); } + if (failure) + setError(UnknownError, QStringLiteral("Null reply")); + else + connect(this, &QGeoRouteReply::aborted, [this](){ m_parsers = 0; }); } QGeoRouteReplyNokia::~QGeoRouteReplyNokia() { - abort(); -} - -void QGeoRouteReplyNokia::abort() -{ - if (m_replies.isEmpty() && !m_parsers) - return; - - foreach (QNetworkReply *reply, m_replies) { - reply->abort(); - reply->deleteLater(); - } - m_replies.clear(); - m_parsers = 0; } void QGeoRouteReplyNokia::networkFinished() { QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender()); - if (!reply) - return; + reply->deleteLater(); - if (reply->error() != QNetworkReply::NoError) + if (reply->error() != QNetworkReply::NoError + && reply->error() != QNetworkReply::UnknownContentError) { return; + } QGeoRouteXmlParser *parser = new QGeoRouteXmlParser(request()); connect(parser, SIGNAL(results(QList<QGeoRoute>)), @@ -94,32 +92,17 @@ void QGeoRouteReplyNokia::networkFinished() ++m_parsers; parser->parse(reply->readAll()); - - m_replies.removeOne(reply); - reply->deleteLater(); } void QGeoRouteReplyNokia::networkError(QNetworkReply::NetworkError error) { - QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender()); - if (!reply) + if (error == QNetworkReply::UnknownContentError) return; - - if (error == QNetworkReply::UnknownContentError) { - QGeoRouteXmlParser *parser = new QGeoRouteXmlParser(request()); - connect(parser, SIGNAL(results(QList<QGeoRoute>)), - this, SLOT(appendResults(QList<QGeoRoute>))); - connect(parser, SIGNAL(error(QString)), this, SLOT(parserError(QString))); - - ++m_parsers; - parser->parse(reply->readAll()); - - m_replies.removeOne(reply); - reply->deleteLater(); - } else { - setError(QGeoRouteReply::CommunicationError, reply->errorString()); - abort(); - } + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); + setError(QGeoRouteReply::CommunicationError, reply->errorString()); + if (error != QNetworkReply::OperationCanceledError) // Any error not caused by abort() + emit aborted(); // aborts all unfinished replies and sets m_parsers to 0 } void QGeoRouteReplyNokia::appendResults(const QList<QGeoRoute> &routes) @@ -130,19 +113,16 @@ void QGeoRouteReplyNokia::appendResults(const QList<QGeoRoute> &routes) --m_parsers; addRoutes(routes); - if (!m_parsers && m_replies.isEmpty()) + if (!m_parsers) setFinished(true); } void QGeoRouteReplyNokia::parserError(const QString &errorString) { Q_UNUSED(errorString) - - --m_parsers; - + emit aborted(); setError(QGeoRouteReply::ParseError, QCoreApplication::translate(NOKIA_PLUGIN_CONTEXT_NAME, RESPONSE_NOT_RECOGNIZABLE)); - abort(); } QT_END_NAMESPACE diff --git a/src/plugins/geoservices/nokia/qgeoroutereply_nokia.h b/src/plugins/geoservices/nokia/qgeoroutereply_nokia.h index 9d32bdb3..d38262a5 100644 --- a/src/plugins/geoservices/nokia/qgeoroutereply_nokia.h +++ b/src/plugins/geoservices/nokia/qgeoroutereply_nokia.h @@ -51,8 +51,6 @@ public: QGeoRouteReplyNokia(const QGeoRouteRequest &request, const QList<QNetworkReply*> &replies, QObject *parent = 0); ~QGeoRouteReplyNokia(); - void abort(); - private Q_SLOTS: void networkFinished(); void networkError(QNetworkReply::NetworkError error); @@ -60,7 +58,6 @@ private Q_SLOTS: void parserError(const QString &errorString); private: - QList<QNetworkReply *> m_replies; int m_parsers; }; diff --git a/src/plugins/geoservices/osm/qgeocodereplyosm.cpp b/src/plugins/geoservices/osm/qgeocodereplyosm.cpp index 15b1724e..a30601d0 100644 --- a/src/plugins/geoservices/osm/qgeocodereplyosm.cpp +++ b/src/plugins/geoservices/osm/qgeocodereplyosm.cpp @@ -50,31 +50,23 @@ QT_BEGIN_NAMESPACE QGeoCodeReplyOsm::QGeoCodeReplyOsm(QNetworkReply *reply, QObject *parent) -: QGeoCodeReply(parent), m_reply(reply) +: QGeoCodeReply(parent) { - connect(m_reply, SIGNAL(finished()), this, SLOT(networkReplyFinished())); - connect(m_reply, SIGNAL(error(QNetworkReply::NetworkError)), + if (!reply) { + setError(UnknownError, QStringLiteral("Null reply")); + return; + } + connect(reply, SIGNAL(finished()), this, SLOT(networkReplyFinished())); + connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(networkReplyError(QNetworkReply::NetworkError))); - + connect(this, &QGeoCodeReply::aborted, reply, &QNetworkReply::abort); + connect(this, &QObject::destroyed, reply, &QObject::deleteLater); setLimit(1); setOffset(0); } QGeoCodeReplyOsm::~QGeoCodeReplyOsm() { - if (m_reply) - m_reply->deleteLater(); -} - -void QGeoCodeReplyOsm::abort() -{ - if (!m_reply) - return; - - m_reply->abort(); - - m_reply->deleteLater(); - m_reply = 0; } static QGeoAddress parseAddressObject(const QJsonObject &object) @@ -108,14 +100,14 @@ static QGeoAddress parseAddressObject(const QJsonObject &object) void QGeoCodeReplyOsm::networkReplyFinished() { - if (!m_reply) - return; + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); - if (m_reply->error() != QNetworkReply::NoError) + if (reply->error() != QNetworkReply::NoError) return; QList<QGeoLocation> locations; - QJsonDocument document = QJsonDocument::fromJson(m_reply->readAll()); + QJsonDocument document = QJsonDocument::fromJson(reply->readAll()); if (document.isObject()) { QJsonObject object = document.object(); @@ -169,22 +161,14 @@ void QGeoCodeReplyOsm::networkReplyFinished() setLocations(locations); setFinished(true); - - m_reply->deleteLater(); - m_reply = 0; } void QGeoCodeReplyOsm::networkReplyError(QNetworkReply::NetworkError error) { Q_UNUSED(error) - - if (!m_reply) - return; - - setError(QGeoCodeReply::CommunicationError, m_reply->errorString()); - - m_reply->deleteLater(); - m_reply = 0; + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); + setError(QGeoCodeReply::CommunicationError, reply->errorString()); } QT_END_NAMESPACE diff --git a/src/plugins/geoservices/osm/qgeocodereplyosm.h b/src/plugins/geoservices/osm/qgeocodereplyosm.h index 2772910e..0847f58c 100644 --- a/src/plugins/geoservices/osm/qgeocodereplyosm.h +++ b/src/plugins/geoservices/osm/qgeocodereplyosm.h @@ -53,14 +53,9 @@ public: explicit QGeoCodeReplyOsm(QNetworkReply *reply, QObject *parent = 0); ~QGeoCodeReplyOsm(); - void abort(); - private Q_SLOTS: void networkReplyFinished(); void networkReplyError(QNetworkReply::NetworkError error); - -private: - QNetworkReply *m_reply; }; QT_END_NAMESPACE diff --git a/src/plugins/geoservices/osm/qgeomapreplyosm.cpp b/src/plugins/geoservices/osm/qgeomapreplyosm.cpp index 052ed351..a06f91f3 100644 --- a/src/plugins/geoservices/osm/qgeomapreplyosm.cpp +++ b/src/plugins/geoservices/osm/qgeomapreplyosm.cpp @@ -45,64 +45,45 @@ QGeoMapReplyOsm::QGeoMapReplyOsm(QNetworkReply *reply, const QGeoTileSpec &spec, const QString &imageFormat, QObject *parent) -: QGeoTiledMapReply(spec, parent), m_reply(reply) +: QGeoTiledMapReply(spec, parent) { - connect(m_reply, SIGNAL(finished()), this, SLOT(networkReplyFinished())); - connect(m_reply, SIGNAL(error(QNetworkReply::NetworkError)), + if (!reply) { + setError(UnknownError, QStringLiteral("Null reply")); + return; + } + connect(reply, SIGNAL(finished()), this, SLOT(networkReplyFinished())); + connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(networkReplyError(QNetworkReply::NetworkError))); + connect(this, &QGeoTiledMapReply::aborted, reply, &QNetworkReply::abort); + connect(this, &QObject::destroyed, reply, &QObject::deleteLater); setMapImageFormat(imageFormat); } QGeoMapReplyOsm::~QGeoMapReplyOsm() { - if (m_reply) { - m_reply->deleteLater(); - m_reply = 0; - } -} - -void QGeoMapReplyOsm::abort() -{ - if (!m_reply) - return; - - m_reply->abort(); -} - -QNetworkReply *QGeoMapReplyOsm::networkReply() const -{ - return m_reply; } void QGeoMapReplyOsm::networkReplyFinished() { - if (!m_reply) - return; + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); - if (m_reply->error() != QNetworkReply::NoError) { - m_reply->deleteLater(); - m_reply = 0; + if (reply->error() != QNetworkReply::NoError) // Already handled in networkReplyError return; - } - QByteArray a = m_reply->readAll(); + QByteArray a = reply->readAll(); setMapImageData(a); setFinished(true); - - m_reply->deleteLater(); - m_reply = 0; } void QGeoMapReplyOsm::networkReplyError(QNetworkReply::NetworkError error) { - if (!m_reply) - return; + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); + if (error == QNetworkReply::OperationCanceledError) + setFinished(true); + else + setError(QGeoTiledMapReply::CommunicationError, reply->errorString()); - if (error != QNetworkReply::OperationCanceledError) - setError(QGeoTiledMapReply::CommunicationError, m_reply->errorString()); - - setFinished(true); - m_reply->deleteLater(); - m_reply = 0; } diff --git a/src/plugins/geoservices/osm/qgeomapreplyosm.h b/src/plugins/geoservices/osm/qgeomapreplyosm.h index 804a0a24..ef0cbb15 100644 --- a/src/plugins/geoservices/osm/qgeomapreplyosm.h +++ b/src/plugins/geoservices/osm/qgeomapreplyosm.h @@ -40,12 +40,8 @@ #ifndef QGEOMAPREPLYOSM_H #define QGEOMAPREPLYOSM_H -#include "qgeotilefetcherosm.h" -#include "qgeotileproviderosm.h" - #include <QtNetwork/QNetworkReply> #include <QtLocation/private/qgeotiledmapreply_p.h> -#include <QtCore/qpointer.h> QT_BEGIN_NAMESPACE @@ -57,16 +53,9 @@ public: QGeoMapReplyOsm(QNetworkReply *reply, const QGeoTileSpec &spec, const QString &imageFormat, QObject *parent = 0); ~QGeoMapReplyOsm(); - void abort(); - - QNetworkReply *networkReply() const; - private Q_SLOTS: void networkReplyFinished(); void networkReplyError(QNetworkReply::NetworkError error); - -private: - QPointer<QNetworkReply> m_reply; }; QT_END_NAMESPACE diff --git a/src/plugins/geoservices/osm/qgeoroutereplyosm.cpp b/src/plugins/geoservices/osm/qgeoroutereplyosm.cpp index da28317f..6924fda7 100644 --- a/src/plugins/geoservices/osm/qgeoroutereplyosm.cpp +++ b/src/plugins/geoservices/osm/qgeoroutereplyosm.cpp @@ -44,55 +44,37 @@ QT_BEGIN_NAMESPACE QGeoRouteReplyOsm::QGeoRouteReplyOsm(QNetworkReply *reply, const QGeoRouteRequest &request, QObject *parent) -: QGeoRouteReply(request, parent), m_reply(reply) +: QGeoRouteReply(request, parent) { - connect(m_reply, SIGNAL(finished()), this, SLOT(networkReplyFinished())); - connect(m_reply, SIGNAL(error(QNetworkReply::NetworkError)), + if (!reply) { + setError(UnknownError, QStringLiteral("Null reply")); + return; + } + connect(reply, SIGNAL(finished()), this, SLOT(networkReplyFinished())); + connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(networkReplyError(QNetworkReply::NetworkError))); + connect(this, &QGeoRouteReply::aborted, reply, &QNetworkReply::abort); + connect(this, &QObject::destroyed, reply, &QObject::deleteLater); } QGeoRouteReplyOsm::~QGeoRouteReplyOsm() { - if (m_reply) - m_reply->deleteLater(); -} - -void QGeoRouteReplyOsm::abort() -{ - if (!m_reply) - return; - - m_reply->abort(); - - m_reply->deleteLater(); - m_reply = 0; } void QGeoRouteReplyOsm::networkReplyFinished() { - if (!m_reply) - return; + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); - if (m_reply->error() != QNetworkReply::NoError) { - setError(QGeoRouteReply::CommunicationError, m_reply->errorString()); - m_reply->deleteLater(); - m_reply = 0; + if (reply->error() != QNetworkReply::NoError) return; - } - - if (m_reply->error() != QNetworkReply::NoError) { - setError(QGeoRouteReply::CommunicationError, m_reply->errorString()); - m_reply->deleteLater(); - m_reply = 0; - return; - } QGeoRoutingManagerEngineOsm *engine = qobject_cast<QGeoRoutingManagerEngineOsm *>(parent()); const QGeoRouteParser *parser = engine->routeParser(); QList<QGeoRoute> routes; QString errorString; - QGeoRouteReply::Error error = parser->parseReply(routes, errorString, m_reply->readAll()); + QGeoRouteReply::Error error = parser->parseReply(routes, errorString, reply->readAll()); if (error == QGeoRouteReply::NoError) { setRoutes(routes.mid(0,1)); // TODO QTBUG-56426 @@ -101,22 +83,14 @@ void QGeoRouteReplyOsm::networkReplyFinished() } else { setError(error, errorString); } - - m_reply->deleteLater(); - m_reply = 0; } void QGeoRouteReplyOsm::networkReplyError(QNetworkReply::NetworkError error) { Q_UNUSED(error) - - if (!m_reply) - return; - - setError(QGeoRouteReply::CommunicationError, m_reply->errorString()); - - m_reply->deleteLater(); - m_reply = 0; + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); + setError(QGeoRouteReply::CommunicationError, reply->errorString()); } QT_END_NAMESPACE diff --git a/src/plugins/geoservices/osm/qgeoroutereplyosm.h b/src/plugins/geoservices/osm/qgeoroutereplyosm.h index 8733c154..feaae59c 100644 --- a/src/plugins/geoservices/osm/qgeoroutereplyosm.h +++ b/src/plugins/geoservices/osm/qgeoroutereplyosm.h @@ -54,14 +54,9 @@ public: QGeoRouteReplyOsm(QNetworkReply *reply, const QGeoRouteRequest &request, QObject *parent = 0); ~QGeoRouteReplyOsm(); - void abort() Q_DECL_OVERRIDE; - private Q_SLOTS: void networkReplyFinished(); void networkReplyError(QNetworkReply::NetworkError error); - -private: - QNetworkReply *m_reply; }; QT_END_NAMESPACE diff --git a/src/plugins/geoservices/osm/qplacemanagerengineosm.cpp b/src/plugins/geoservices/osm/qplacemanagerengineosm.cpp index 719769f0..dcf02b13 100644 --- a/src/plugins/geoservices/osm/qplacemanagerengineosm.cpp +++ b/src/plugins/geoservices/osm/qplacemanagerengineosm.cpp @@ -260,9 +260,6 @@ void QPlaceManagerEngineOsm::setLocales(const QList<QLocale> &locales) void QPlaceManagerEngineOsm::categoryReplyFinished() { QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender()); - if (!reply) - return; - reply->deleteLater(); QXmlStreamReader parser(reply); diff --git a/src/plugins/geoservices/osm/qplacesearchreplyosm.cpp b/src/plugins/geoservices/osm/qplacesearchreplyosm.cpp index 3cb0ab60..35b05d4d 100644 --- a/src/plugins/geoservices/osm/qplacesearchreplyosm.cpp +++ b/src/plugins/geoservices/osm/qplacesearchreplyosm.cpp @@ -53,32 +53,28 @@ QT_BEGIN_NAMESPACE QPlaceSearchReplyOsm::QPlaceSearchReplyOsm(const QPlaceSearchRequest &request, QNetworkReply *reply, QPlaceManagerEngineOsm *parent) -: QPlaceSearchReply(parent), m_reply(reply) +: QPlaceSearchReply(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(networkError(QNetworkReply::NetworkError))); + connect(this, &QPlaceReply::aborted, reply, &QNetworkReply::abort); + connect(this, &QObject::destroyed, reply, &QObject::deleteLater); } QPlaceSearchReplyOsm::~QPlaceSearchReplyOsm() { } -void QPlaceSearchReplyOsm::abort() -{ - if (m_reply) - m_reply->abort(); -} - void QPlaceSearchReplyOsm::setError(QPlaceReply::Error errorCode, const QString &errorString) { - QPlaceReply::setError(errorCode, errorString); + setError(errorCode, errorString); emit error(errorCode, errorString); setFinished(true); emit finished(); @@ -99,14 +95,11 @@ static QGeoRectangle parseBoundingBox(const QJsonArray &coordinates) void QPlaceSearchReplyOsm::replyFinished() { - QNetworkReply *reply = m_reply; - m_reply->deleteLater(); - m_reply = 0; + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); - if (reply->error() != QNetworkReply::NoError) { - setError(CommunicationError, tr("Communication error")); + if (reply->error() != QNetworkReply::NoError) return; - } QJsonDocument document = QJsonDocument::fromJson(reply->readAll()); if (!document.isArray()) { @@ -163,6 +156,14 @@ void QPlaceSearchReplyOsm::replyFinished() emit finished(); } +void QPlaceSearchReplyOsm::networkError(QNetworkReply::NetworkError error) +{ + Q_UNUSED(error) + QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); + reply->deleteLater(); + setError(QPlaceReply::CommunicationError, reply->errorString()); +} + QPlaceResult QPlaceSearchReplyOsm::parsePlaceResult(const QJsonObject &item) const { QPlace place; diff --git a/src/plugins/geoservices/osm/qplacesearchreplyosm.h b/src/plugins/geoservices/osm/qplacesearchreplyosm.h index e495d4fa..223e5f0c 100644 --- a/src/plugins/geoservices/osm/qplacesearchreplyosm.h +++ b/src/plugins/geoservices/osm/qplacesearchreplyosm.h @@ -41,6 +41,7 @@ #define QPLACESEARCHREPLYOSM_H #include <QtLocation/QPlaceSearchReply> +#include <QNetworkReply> QT_BEGIN_NAMESPACE @@ -57,16 +58,13 @@ public: QPlaceManagerEngineOsm *parent); ~QPlaceSearchReplyOsm(); - void abort(); - private slots: void setError(QPlaceReply::Error errorCode, const QString &errorString); void replyFinished(); + void networkError(QNetworkReply::NetworkError error); private: QPlaceResult parsePlaceResult(const QJsonObject &item) const; - - QNetworkReply *m_reply; }; QT_END_NAMESPACE |