4#include <QtCore/qjsonarray.h>
5#include <QtCore/qjsondocument.h>
6#include <QtCore/qjsonobject.h>
7#include <QtCore/qmetaobject.h>
8#include <qplacesearchsuggestionreplyohosmapkit.h>
16 QStringList suggestions;
18 const QJsonObject responseBodyJsonObj = responseBodyJsonDoc.object();
19 if (responseBodyJsonObj.contains(QStringLiteral(
"sites"))) {
20 const auto sites = responseBodyJsonObj.value(QStringLiteral(
"sites")).toArray();
21 for (
const auto &value : sites) {
22 if (value.isObject()) {
23 auto siteObj = value.toObject();
24 auto siteName = siteObj.value(QStringLiteral(
"name")).toString();
25 auto formatAddress = siteObj.value(QStringLiteral(
"formatAddress")).toString();
26 suggestions.append(QString(
"%1, %2").arg(siteName, formatAddress));
40 void onReplyFinished();
41 void onNetworkError(QNetworkReply::NetworkError error);
45 QNetworkReply *reply, QPlaceManagerEngine *parent)
50 setError(QPlaceReply::UnknownError, QStringLiteral(
"Null reply"));
55 connect(reply, &QNetworkReply::errorOccurred,
this, &QPlaceSearchSuggestionReplyOhosMapKit::onNetworkError);
57 connect(
this, &QPlaceReply::aborted, reply, &QNetworkReply::abort);
58 connect(
this, &QObject::destroyed, reply, &QObject::deleteLater);
63 auto *reply =
static_cast<QNetworkReply *>(sender());
66 auto setErrorEmitAndFinish = [&](QPlaceReply::Error errorCode,
const QString &errorString) {
67 setError(errorCode, errorString);
68 Q_EMIT errorOccurred(errorCode, errorString);
74 if (reply->error() != QNetworkReply::NoError) {
75 setErrorEmitAndFinish(
76 QPlaceReply::CommunicationError,
77 tr(
"Network reply error: %1")
78 .arg(QMetaEnum::fromType<QNetworkReply::NetworkError>().valueToKey(reply->error())));
82 const auto responseBodyJsonDoc = QJsonDocument::fromJson(reply->readAll());
83 if (!responseBodyJsonDoc.isObject()) {
84 setErrorEmitAndFinish(QPlaceReply::ParseError, tr(
"Response parse error"));
88 setSuggestions(parsePlaceSearchSuggestionReply(responseBodyJsonDoc));
97 auto *reply =
static_cast<QNetworkReply *>(sender());
99 setError(QPlaceReply::CommunicationError, reply->errorString());
105 QNetworkReply *reply, QPlaceManagerEngine *parent)
QPlaceSearchSuggestionReplyOhosMapKit(QNetworkReply *reply, QPlaceManagerEngine *parent)
Combined button and popup list for selecting options.
QStringList parsePlaceSearchSuggestionReply(const QJsonDocument &responseBodyJsonDoc)
QPlaceSearchSuggestionReply * makeQPlaceSearchSuggestionReplyOhosMapKit(QNetworkReply *reply, QPlaceManagerEngine *parent)