Browse Source

Handle network availability transitions.

QGC4.4
Gus Grubba 8 years ago
parent
commit
0ffd864832
  1. 1
      src/QtLocationPlugin/QGCTileCacheWorker.cpp
  2. 33
      src/QtLocationPlugin/QGeoMapReplyQGC.cpp
  3. 1
      src/QtLocationPlugin/QGeoMapReplyQGC.h
  4. 4
      src/QtLocationPlugin/QGeoTileFetcherQGC.cpp

1
src/QtLocationPlugin/QGCTileCacheWorker.cpp

@ -1039,6 +1039,7 @@ QGCCacheWorker::_testInternet() @@ -1039,6 +1039,7 @@ QGCCacheWorker::_testInternet()
QTcpSocket socket;
socket.connectToHost("8.8.8.8", 53);
if (socket.waitForConnected(2500)) {
qCDebug(QGCTileCacheLog) << "Yes Internet Access";
emit internetStatus(true);
return;
}

33
src/QtLocationPlugin/QGeoMapReplyQGC.cpp

@ -62,7 +62,15 @@ QGeoTiledMapReplyQGC::QGeoTiledMapReplyQGC(QNetworkAccessManager *networkManager @@ -62,7 +62,15 @@ QGeoTiledMapReplyQGC::QGeoTiledMapReplyQGC(QNetworkAccessManager *networkManager
, _networkManager(networkManager)
{
if(_request.url().isEmpty()) {
_returnBadTile();
if(!_badMapBox.size()) {
QFile b(":/res/notile.png");
if(b.open(QFile::ReadOnly))
_badMapBox = b.readAll();
}
setMapImageData(_badMapBox);
setMapImageFormat("png");
setFinished(true);
setCached(false);
} else {
QGCFetchTileTask* task = getQGCMapEngine()->createFetchTileTask((UrlFactory::MapType)spec.mapId(), spec.x(), spec.y(), spec.zoom());
connect(task, &QGCFetchTileTask::tileFetched, this, &QGeoTiledMapReplyQGC::cacheReply);
@ -91,21 +99,6 @@ QGeoTiledMapReplyQGC::_clearReply() @@ -91,21 +99,6 @@ QGeoTiledMapReplyQGC::_clearReply()
//-----------------------------------------------------------------------------
void
QGeoTiledMapReplyQGC::_returnBadTile()
{
if(!_badMapBox.size()) {
QFile b(":/res/notile.png");
if(b.open(QFile::ReadOnly))
_badMapBox = b.readAll();
}
setMapImageData(_badMapBox);
setMapImageFormat("png");
setFinished(true);
setCached(false);
}
//-----------------------------------------------------------------------------
void
QGeoTiledMapReplyQGC::abort()
{
_timer.stop();
@ -145,8 +138,9 @@ QGeoTiledMapReplyQGC::networkReplyError(QNetworkReply::NetworkError error) @@ -145,8 +138,9 @@ QGeoTiledMapReplyQGC::networkReplyError(QNetworkReply::NetworkError error)
}
if (error != QNetworkReply::OperationCanceledError) {
qWarning() << "Fetch tile error:" << _reply->errorString();
setError(QGeoTiledMapReply::CommunicationError, _reply->errorString());
}
_returnBadTile();
setFinished(true);
_clearReply();
}
@ -154,8 +148,9 @@ QGeoTiledMapReplyQGC::networkReplyError(QNetworkReply::NetworkError error) @@ -154,8 +148,9 @@ QGeoTiledMapReplyQGC::networkReplyError(QNetworkReply::NetworkError error)
void
QGeoTiledMapReplyQGC::cacheError(QGCMapTask::TaskType type, QString /*errorString*/)
{
if(_networkManager->networkAccessible() < QNetworkAccessManager::Accessible || !getQGCMapEngine()->isInternetActive()) {
_returnBadTile();
if(!getQGCMapEngine()->isInternetActive()) {
setError(QGeoTiledMapReply::CommunicationError, "Network not available");
setFinished(true);
} else {
if(type != QGCMapTask::taskFetchTile) {
qWarning() << "QGeoTiledMapReplyQGC::cacheError() for wrong task";

1
src/QtLocationPlugin/QGeoMapReplyQGC.h

@ -70,7 +70,6 @@ private slots: @@ -70,7 +70,6 @@ private slots:
private:
void _clearReply ();
void _returnBadTile ();
private:
QNetworkReply* _reply;

4
src/QtLocationPlugin/QGeoTileFetcherQGC.cpp

@ -82,7 +82,5 @@ QGeoTileFetcherQGC::getTileImage(const QGeoTileSpec &spec) @@ -82,7 +82,5 @@ QGeoTileFetcherQGC::getTileImage(const QGeoTileSpec &spec)
void
QGeoTileFetcherQGC::timeout()
{
if(!getQGCMapEngine()->isInternetActive()) {
getQGCMapEngine()->testInternet();
}
getQGCMapEngine()->testInternet();
}

Loading…
Cancel
Save