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
qplacesearchsuggestionreplyohosmapkit.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
/
qjsonarray
.
h
>
5
#
include
<
QtCore
/
qjsondocument
.
h
>
6
#
include
<
QtCore
/
qjsonobject
.
h
>
7
#
include
<
QtCore
/
qmetaobject
.
h
>
8
#
include
<
qplacesearchsuggestionreplyohosmapkit
.
h
>
9
#
include
<
qohosmapkitcommon
.
h
>
10
11
QT_BEGIN_NAMESPACE
12
13
namespace
{
14
15
QStringList
parsePlaceSearchSuggestionReply
(
const
QJsonDocument &responseBodyJsonDoc)
16
{
17
QStringList suggestions;
18
19
const
QJsonObject responseBodyJsonObj = responseBodyJsonDoc.object();
20
if
(responseBodyJsonObj.contains(QStringLiteral(
"sites"
))) {
21
const
auto
sites = responseBodyJsonObj.value(QStringLiteral(
"sites"
)).toArray();
22
for
(
const
auto
&value : sites) {
23
if
(value.isObject()) {
24
auto
siteObj = value.toObject();
25
auto
siteName = siteObj.value(QStringLiteral(
"name"
)).toString();
26
auto
formatAddress = siteObj.value(QStringLiteral(
"formatAddress"
)).toString();
27
suggestions.append(QString(
"%1, %2"
).arg(siteName, formatAddress));
28
}
29
}
30
}
31
32
return
suggestions;
33
}
34
35
class
QPlaceSearchSuggestionReplyOhosMapKit
:
public
QPlaceSearchSuggestionReply
36
{
37
public
:
38
QPlaceSearchSuggestionReplyOhosMapKit
(QNetworkReply *reply, QPlaceManagerEngine *parent);
39
40
private
:
41
void
onReplyFinished();
42
void
onNetworkError(QNetworkReply::NetworkError error);
43
};
44
45
QPlaceSearchSuggestionReplyOhosMapKit
::
QPlaceSearchSuggestionReplyOhosMapKit
(
46
QNetworkReply *reply, QPlaceManagerEngine *parent)
47
:
QPlaceSearchSuggestionReply
(
parent
)
48
{
49
Q_ASSERT(parent);
50
if
(!reply) {
51
setError(QPlaceReply::UnknownError, QStringLiteral(
"Null reply"
));
52
return
;
53
}
54
55
connect(reply, &QNetworkReply::finished,
this
, &
QPlaceSearchSuggestionReplyOhosMapKit
::onReplyFinished);
56
connect(reply, &QNetworkReply::errorOccurred,
this
, &QPlaceSearchSuggestionReplyOhosMapKit::onNetworkError);
57
58
connect(
this
, &QPlaceReply::aborted, reply, &QNetworkReply::abort);
59
connect(
this
, &QObject::destroyed, reply, &QObject::deleteLater);
60
}
61
62
void
QPlaceSearchSuggestionReplyOhosMapKit
::onReplyFinished()
63
{
64
auto
*reply =
static_cast
<QNetworkReply *>(sender());
65
reply->deleteLater();
66
67
auto
setErrorEmitAndFinish = [&](QPlaceReply::Error errorCode,
const
QString &errorString) {
68
setError(errorCode, errorString);
69
Q_EMIT errorOccurred(errorCode, errorString);
70
71
setFinished(
true
);
72
Q_EMIT finished();
73
};
74
75
if
(reply->error() != QNetworkReply::NoError) {
76
setErrorEmitAndFinish(
77
QPlaceReply::CommunicationError,
78
OhosMapKit::msgReplyError(reply->errorString()));
79
return
;
80
}
81
82
const
auto
responseBodyJsonDoc = QJsonDocument::fromJson(reply->readAll());
83
if
(!responseBodyJsonDoc.isObject()) {
84
setErrorEmitAndFinish(QPlaceReply::ParseError, tr(
"Response parse error"
));
85
return
;
86
}
87
88
setSuggestions(parsePlaceSearchSuggestionReply(responseBodyJsonDoc));
89
90
setFinished(
true
);
91
Q_EMIT finished();
92
}
93
94
void
QPlaceSearchSuggestionReplyOhosMapKit
::onNetworkError(QNetworkReply::NetworkError error)
95
{
96
Q_UNUSED(error)
97
auto
*reply =
static_cast
<QNetworkReply *>(sender());
98
reply->deleteLater();
99
setError(QPlaceReply::CommunicationError, reply->errorString());
100
}
101
102
}
103
104
QPlaceSearchSuggestionReply
*
makeQPlaceSearchSuggestionReplyOhosMapKit
(
105
QNetworkReply *reply, QPlaceManagerEngine *parent)
106
{
107
return
new
QPlaceSearchSuggestionReplyOhosMapKit
(reply, parent);
108
}
109
110
QT_END_NAMESPACE
QT_BEGIN_NAMESPACE::QPlaceSearchSuggestionReplyOhosMapKit
Definition
qplacesearchsuggestionreplyohosmapkit.cpp:36
QT_BEGIN_NAMESPACE::QPlaceSearchSuggestionReplyOhosMapKit::QPlaceSearchSuggestionReplyOhosMapKit
QPlaceSearchSuggestionReplyOhosMapKit(QNetworkReply *reply, QPlaceManagerEngine *parent)
Definition
qplacesearchsuggestionreplyohosmapkit.cpp:45
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
QT_BEGIN_NAMESPACE::parsePlaceSearchSuggestionReply
QStringList parsePlaceSearchSuggestionReply(const QJsonDocument &responseBodyJsonDoc)
Definition
qplacesearchsuggestionreplyohosmapkit.cpp:15
makeQPlaceSearchSuggestionReplyOhosMapKit
QPlaceSearchSuggestionReply * makeQPlaceSearchSuggestionReplyOhosMapKit(QNetworkReply *reply, QPlaceManagerEngine *parent)
Definition
qplacesearchsuggestionreplyohosmapkit.cpp:104
qtlocation
src
plugins
geoservices
ohosmapkit
qplacesearchsuggestionreplyohosmapkit.cpp
Generated on
for Qt by
1.18.0