summaryrefslogtreecommitdiffstats
path: root/src/plugins/geoservices/osm/qplacesearchreplyosm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/geoservices/osm/qplacesearchreplyosm.cpp')
-rw-r--r--src/plugins/geoservices/osm/qplacesearchreplyosm.cpp41
1 files changed, 21 insertions, 20 deletions
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;