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>
17 QStringList suggestions;
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));
41 void onReplyFinished();
42 void onNetworkError(QNetworkReply::NetworkError error);
46 QNetworkReply *reply, QPlaceManagerEngine *parent)
51 setError(QPlaceReply::UnknownError, QStringLiteral(
"Null reply"));
56 connect(reply, &QNetworkReply::errorOccurred,
this, &QPlaceSearchSuggestionReplyOhosMapKit::onNetworkError);
58 connect(
this, &QPlaceReply::aborted, reply, &QNetworkReply::abort);
59 connect(
this, &QObject::destroyed, reply, &QObject::deleteLater);
64 auto *reply =
static_cast<QNetworkReply *>(sender());
67 auto setErrorEmitAndFinish = [&](QPlaceReply::Error errorCode,
const QString &errorString) {
68 setError(errorCode, errorString);
69 Q_EMIT errorOccurred(errorCode, errorString);
75 if (reply->error() != QNetworkReply::NoError) {
76 setErrorEmitAndFinish(
77 QPlaceReply::CommunicationError,
78 OhosMapKit::msgReplyError(reply->errorString()));
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)