Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qgeoroutereply_nokia.cpp
Go to the documentation of this file.
1
// Copyright (C) 2015 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4
#
include
"qgeoroutereply_nokia.h"
5
#
include
"qgeoroutexmlparser.h"
6
#
include
"qgeoerror_messages.h"
7
8
#
include
<
qgeorouterequest
.
h
>
9
10
#
include
<
QtCore
/
QCoreApplication
>
11
12
Q_DECLARE_METATYPE(QList<QGeoRoute>)
13
14
QT_BEGIN_NAMESPACE
15
16
QGeoRouteReplyNokia::QGeoRouteReplyNokia(
const
QGeoRouteRequest &request,
17
const
QList<QNetworkReply *> &replies,
18
QObject *parent)
19
: QGeoRouteReply(request, parent), m_parsers(0)
20
{
21
qRegisterMetaType<QList<QGeoRoute> >();
22
23
bool
failure =
false
;
24
for
(QNetworkReply *reply : replies) {
25
if
(!reply) {
26
failure =
true
;
27
continue
;
28
}
29
connect(reply, &QNetworkReply::finished,
30
this
, &QGeoRouteReplyNokia::networkFinished);
31
connect(reply, &QNetworkReply::errorOccurred,
32
this
, &QGeoRouteReplyNokia::networkError);
33
connect(
this
, &QGeoRouteReply::aborted, reply, &QNetworkReply::abort);
34
connect(
this
, &QObject::destroyed, reply, &QObject::deleteLater);
35
}
36
if
(failure)
37
setError(UnknownError, QStringLiteral(
"Null reply"
));
38
else
39
connect(
this
, &QGeoRouteReply::aborted, [
this
](){ m_parsers = 0; });
40
}
41
42
QGeoRouteReplyNokia
::~
QGeoRouteReplyNokia
()
43
{
44
}
45
46
void
QGeoRouteReplyNokia
::networkFinished()
47
{
48
QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender());
49
reply->deleteLater();
50
51
if
(reply->error() != QNetworkReply::NoError
52
&& reply->error() != QNetworkReply::UnknownContentError) {
53
return
;
54
}
55
56
QGeoRouteXmlParser
*parser =
new
QGeoRouteXmlParser
(request());
57
connect(parser, &QGeoRouteXmlParser::results,
58
this
, &QGeoRouteReplyNokia::appendResults);
59
connect(parser, &QGeoRouteXmlParser::errorOccurred,
60
this
, &QGeoRouteReplyNokia::parserError);
61
62
++m_parsers;
63
parser->parse(reply->readAll());
64
}
65
66
void
QGeoRouteReplyNokia
::networkError(QNetworkReply::NetworkError error)
67
{
68
if
(error == QNetworkReply::UnknownContentError)
69
return
;
70
QNetworkReply *reply =
static_cast
<QNetworkReply *>(sender());
71
reply->deleteLater();
72
setError(QGeoRouteReply::CommunicationError, reply->errorString());
73
if
(error != QNetworkReply::OperationCanceledError)
// Any error not caused by abort()
74
emit aborted();
// aborts all unfinished replies and sets m_parsers to 0
75
}
76
77
void
QGeoRouteReplyNokia
::appendResults(
const
QList<QGeoRoute> &routes)
78
{
79
if
(!m_parsers)
80
return
;
81
82
--m_parsers;
83
addRoutes(routes);
84
85
if
(!m_parsers)
86
setFinished(
true
);
87
}
88
89
void
QGeoRouteReplyNokia
::parserError(
const
QString &errorString)
90
{
91
Q_UNUSED(errorString);
92
emit aborted();
93
setError(QGeoRouteReply::ParseError,
94
QCoreApplication::translate(NOKIA_PLUGIN_CONTEXT_NAME, RESPONSE_NOT_RECOGNIZABLE));
95
}
96
97
QT_END_NAMESPACE
QGeoRouteReplyNokia
Definition
qgeoroutereply_nokia.h:15
QGeoRouteReplyNokia::~QGeoRouteReplyNokia
~QGeoRouteReplyNokia()
Definition
qgeoroutereply_nokia.cpp:42
QGeoRouteXmlParser
Definition
qgeoroutexmlparser.h:63
qtlocation
src
plugins
geoservices
nokia
qgeoroutereply_nokia.cpp
Generated on
for Qt by
1.18.0