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
qgeocodereplyohosmapkit.cpp
Go to the documentation of this file.
1
// Copyright (C) 2025 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
<
QtCore
/
qlist
.
h
>
5
#
include
<
QtCore
/
qjsonarray
.
h
>
6
#
include
<
QtCore
/
qjsondocument
.
h
>
7
#
include
<
QtCore
/
qjsonobject
.
h
>
8
#
include
<
QtPositioning
/
qgeolocation
.
h
>
9
#
include
<
qgeocodereplyohosmapkit
.
h
>
10
#
include
<
qohosmapkitcommon
.
h
>
11
12
QT_BEGIN_NAMESPACE
13
14
namespace
{
15
16
QList
<
QGeoLocation
>
parseGeocodeResponse
(
const
QJsonObject &responseBodyJsonObj)
17
{
18
QList<QGeoLocation> results;
19
20
if
(responseBodyJsonObj.contains(QStringLiteral(
"sites"
))) {
21
const
auto
sites = responseBodyJsonObj.value(QStringLiteral(
"sites"
)).toArray();
22
for
(
const
auto
&siteValue : sites)
23
if
(siteValue.isObject())
24
results.append(OhosMapKit::SiteJson::tryConvertToQGeoLocation(siteValue.toObject()));
25
}
26
27
return
results;
28
}
29
30
class
QGeoCodeReplyOhosMapKit
:
public
QGeoCodeReply
31
{
32
public
:
33
explicit
QGeoCodeReplyOhosMapKit
(QNetworkReply *reply, QObject *parent);
34
35
private
:
36
void
onNetworkReplyFinished();
37
void
onNetworkReplyError(QNetworkReply::NetworkError error);
38
};
39
40
QGeoCodeReplyOhosMapKit
::
QGeoCodeReplyOhosMapKit
(QNetworkReply *reply, QObject *parent)
41
:
QGeoCodeReply
(
parent
)
42
{
43
if
(reply ==
nullptr
) {
44
setError(QGeoCodeReply::UnknownError, OhosMapKit::msgNullReply());
45
return
;
46
}
47
48
connect(reply, &QNetworkReply::finished,
this
, &
QGeoCodeReplyOhosMapKit
::onNetworkReplyFinished);
49
connect(reply, &QNetworkReply::errorOccurred,
this
, &QGeoCodeReplyOhosMapKit::onNetworkReplyError);
50
connect(
this
, &QGeoCodeReply::aborted, reply, &QNetworkReply::abort);
51
connect(
this
, &QObject::destroyed, reply, &QObject::deleteLater);
52
}
53
54
void
QGeoCodeReplyOhosMapKit
::onNetworkReplyFinished()
55
{
56
auto
*reply =
static_cast
<QNetworkReply *>(sender());
57
reply->deleteLater();
58
59
if
(reply->error() != QNetworkReply::NoError) {
60
setError(
61
QGeoCodeReply::CommunicationError,
62
OhosMapKit::msgReplyError(reply->errorString()));
63
return
;
64
}
65
66
auto
responseBodyJsonDoc = QJsonDocument::fromJson(reply->readAll());
67
if
(!responseBodyJsonDoc.isObject()) {
68
setError(QGeoCodeReply::ParseError, tr(
"Response parse error"
));
69
return
;
70
}
71
72
setLocations(parseGeocodeResponse(responseBodyJsonDoc.object()));
73
74
setFinished(
true
);
75
}
76
77
void
QGeoCodeReplyOhosMapKit
::onNetworkReplyError(QNetworkReply::NetworkError error)
78
{
79
Q_UNUSED(error)
80
81
auto
*reply =
static_cast
<QNetworkReply *>(sender());
82
reply->deleteLater();
83
setError(QGeoCodeReply::CommunicationError, reply->errorString());
84
}
85
86
}
87
88
QGeoCodeReply
*
makeQGeoCodeReplyOhosMapKit
(QNetworkReply *reply, QObject *parent)
89
{
90
return
new
QGeoCodeReplyOhosMapKit
(reply, parent);
91
}
92
93
QT_END_NAMESPACE
QT_BEGIN_NAMESPACE::QGeoCodeReplyOhosMapKit
Definition
qgeocodereplyohosmapkit.cpp:31
QT_BEGIN_NAMESPACE::QGeoCodeReplyOhosMapKit::QGeoCodeReplyOhosMapKit
QGeoCodeReplyOhosMapKit(QNetworkReply *reply, QObject *parent)
Definition
qgeocodereplyohosmapkit.cpp:40
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
QT_BEGIN_NAMESPACE::parseGeocodeResponse
QList< QGeoLocation > parseGeocodeResponse(const QJsonObject &responseBodyJsonObj)
Definition
qgeocodereplyohosmapkit.cpp:16
makeQGeoCodeReplyOhosMapKit
QGeoCodeReply * makeQGeoCodeReplyOhosMapKit(QNetworkReply *reply, QObject *parent)
Definition
qgeocodereplyohosmapkit.cpp:88
qtlocation
src
plugins
geoservices
ohosmapkit
qgeocodereplyohosmapkit.cpp
Generated on
for Qt by
1.18.0