diff --git a/lib/include/QGeoView/QGVLayerTilesOnline.h b/lib/include/QGeoView/QGVLayerTilesOnline.h index e2a3badc..76ed0d8f 100644 --- a/lib/include/QGeoView/QGVLayerTilesOnline.h +++ b/lib/include/QGeoView/QGVLayerTilesOnline.h @@ -32,6 +32,11 @@ class QGV_LIB_DECL QGVLayerTilesOnline : public QGVLayerTiles protected: virtual QString tilePosToUrl(const QGV::GeoTilePos& tilePos) const = 0; +Q_SIGNALS: + void tileReplySuccess(bool fromCache); + void tileReplyCanceled(); + void tileReplyError(QNetworkReply::NetworkError error); + private: void request(const QGV::GeoTilePos& tilePos) override; void cancel(const QGV::GeoTilePos& tilePos) override; diff --git a/lib/src/QGVLayerTilesOnline.cpp b/lib/src/QGVLayerTilesOnline.cpp index ab821d8c..048721fd 100644 --- a/lib/src/QGVLayerTilesOnline.cpp +++ b/lib/src/QGVLayerTilesOnline.cpp @@ -57,8 +57,13 @@ void QGVLayerTilesOnline::cancel(const QGV::GeoTilePos& tilePos) void QGVLayerTilesOnline::onReplyFinished(QNetworkReply* reply, const QGV::GeoTilePos& tilePos) { - if (reply->error() != QNetworkReply::NoError) { - if (reply->error() != QNetworkReply::OperationCanceledError) { + if (reply->error() == QNetworkReply::NoError) { + Q_EMIT tileReplySuccess(reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool()); + } else { + if (reply->error() == QNetworkReply::OperationCanceledError) { + Q_EMIT tileReplyCanceled(); + } else { + Q_EMIT tileReplyError(reply->error()); qgvCritical() << "ERROR" << reply->errorString(); } removeReply(tilePos);