8#include <QtPositioning/QGeoShape>
9#include <QtCore/QCoreApplication>
11Q_DECLARE_METATYPE(QList<QGeoLocation>)
20QGeoCodeReplyNokia::QGeoCodeReplyNokia(QNetworkReply *reply,
int limit,
int offset,
21 const QGeoShape &viewport,
bool manualBoundsRequired,
23: QGeoCodeReply(parent), m_parsing(
false), m_manualBoundsRequired(manualBoundsRequired)
26 setError(UnknownError, QStringLiteral(
"Null reply"));
29 qRegisterMetaType<QList<QGeoLocation> >();
31 connect(reply, &QNetworkReply::finished,
32 this, &QGeoCodeReplyNokia::networkFinished);
33 connect(reply, &QNetworkReply::errorOccurred,
34 this, &QGeoCodeReplyNokia::networkError);
35 connect(
this, &QGeoCodeReply::aborted, reply, &QNetworkReply::abort);
36 connect(
this, &QGeoCodeReply::aborted, [
this](){ m_parsing =
false; });
37 connect(
this, &QObject::destroyed, reply, &QObject::deleteLater);
42 setViewport(viewport);
45QGeoCodeReplyNokia::~QGeoCodeReplyNokia()
49void QGeoCodeReplyNokia::networkFinished()
51 QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender());
54 if (reply->error() != QNetworkReply::NoError)
57 QGeoCodeJsonParser *parser =
new QGeoCodeJsonParser;
58 if (m_manualBoundsRequired)
59 parser->setBounds(viewport());
60 connect(parser, &QGeoCodeJsonParser::results,
this, &QGeoCodeReplyNokia::appendResults);
61 connect(parser, &QGeoCodeJsonParser::errorOccurred,
this, &QGeoCodeReplyNokia::parseError);
64 parser->parse(reply->readAll());
67void QGeoCodeReplyNokia::networkError(QNetworkReply::NetworkError error)
71 QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender());
73 setError(QGeoCodeReply::CommunicationError, reply->errorString());
76void QGeoCodeReplyNokia::appendResults(
const QList<QGeoLocation> &locations)
82 setLocations(locations);
86void QGeoCodeReplyNokia::parseError(
const QString &errorString)
88 Q_UNUSED(errorString);
90 setError(QGeoCodeReply::ParseError,
91 QCoreApplication::translate(NOKIA_PLUGIN_CONTEXT_NAME, RESPONSE_NOT_RECOGNIZABLE));