// Copyright (C) 2013-2018 Esri // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef PLACEMANAGERENGINEESRI_H #define PLACEMANAGERENGINEESRI_H #include #include QT_BEGIN_NAMESPACE class PlaceCategoriesReplyEsri; class QNetworkAccessManager; class QNetworkReply; class PlaceManagerEngineEsri : public QPlaceManagerEngine { Q_OBJECT public: PlaceManagerEngineEsri(const QVariantMap ¶meters, QGeoServiceProvider::Error *error, QString *errorString); ~PlaceManagerEngineEsri(); QPlaceSearchReply *search(const QPlaceSearchRequest &request) override; QPlaceReply *initializeCategories() override; QString parentCategoryId(const QString &categoryId) const override; QStringList childCategoryIds(const QString &categoryId) const override; QPlaceCategory category(const QString &categoryId) const override; QList childCategories(const QString &parentId) const override; QList locales() const override; void setLocales(const QList &locales) override; private slots: void geocodeServerReplyFinished(); void geocodeServerReplyError(); void replyFinished(); void replyError(QPlaceReply::Error errorCode, const QString &errorString); private: QNetworkAccessManager *m_networkManager = nullptr; // geocode serveur void initializeGeocodeServer(); QNetworkReply *m_geocodeServerReply = nullptr; // categories void finishCategories(); void errorCaterogies(const QString &error); void parseCategories(const QJsonArray &jsonArray, const QString &parentCategoryId); QList m_pendingCategoriesReply; QHash m_categories; QHash m_subcategories; QHash m_parentCategory; // localized names QString localizedName(const QJsonObject &jsonObject); void parseCandidateFields(const QJsonArray &jsonArray); void parseCountries(const QJsonArray &jsonArray); QList m_locales; QHash m_candidateFieldsLocale; QHash m_countriesLocale; void localizedName(); }; QT_END_NAMESPACE #endif // PLACEMANAGERENGINEESRI_H