Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qgeomapreplyosm.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 Aaron McCarthy <mccarthy.aaron@gmail.com>
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
5
6#include <QtLocation/private/qgeotilespec_p.h>
7
8QGeoMapReplyOsm::QGeoMapReplyOsm(QNetworkReply *reply,
9 const QGeoTileSpec &spec,
10 const QString &imageFormat,
11 QObject *parent)
12: QGeoTiledMapReply(spec, parent)
13{
14 if (!reply) {
15 setError(UnknownError, QStringLiteral("Null reply"));
16 return;
17 }
18 connect(reply, &QNetworkReply::finished,
19 this, &QGeoMapReplyOsm::networkReplyFinished);
20 connect(reply, &QNetworkReply::errorOccurred,
21 this, &QGeoMapReplyOsm::networkReplyError);
22 connect(this, &QGeoTiledMapReply::aborted, reply, &QNetworkReply::abort);
23 connect(this, &QObject::destroyed, reply, &QObject::deleteLater);
24 setMapImageFormat(imageFormat);
25}
26
27QGeoMapReplyOsm::~QGeoMapReplyOsm()
28{
29}
30
31void QGeoMapReplyOsm::networkReplyFinished()
32{
33 QNetworkReply *reply = static_cast<QNetworkReply *>(sender());
34 reply->deleteLater();
35
36 if (reply->error() != QNetworkReply::NoError) // Already handled in networkReplyError
37 return;
38
39 QByteArray a = reply->readAll();
40
41 setMapImageData(a);
42 setFinished(true);
43}
44
45void QGeoMapReplyOsm::networkReplyError(QNetworkReply::NetworkError error)
46{
47 QNetworkReply *reply = static_cast<QNetworkReply *>(sender());
48 reply->deleteLater();
49 if (error == QNetworkReply::OperationCanceledError)
50 setFinished(true);
51 else
52 setError(QGeoTiledMapReply::CommunicationError, reply->errorString());
53
54}