// Copyright (C) 2016 Aaron McCarthy // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QPLACEMANAGERENGINEOSM_H #define QPLACEMANAGERENGINEOSM_H #include #include QT_BEGIN_NAMESPACE class QNetworkAccessManager; class QNetworkReply; class QPlaceCategoriesReplyOsm; class QPlaceManagerEngineOsm : public QPlaceManagerEngine { Q_OBJECT public: QPlaceManagerEngineOsm(const QVariantMap ¶meters, QGeoServiceProvider::Error *error, QString *errorString); ~QPlaceManagerEngineOsm(); 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 categoryReplyFinished(); void categoryReplyError(); void replyFinished(); void replyError(QPlaceReply::Error errorCode, const QString &errorString); private: void fetchNextCategoryLocale(); QNetworkAccessManager *m_networkManager; QByteArray m_userAgent; QString m_urlPrefix; QList m_locales; bool m_debugQuery = false; int m_pageSize = 50; // the default page size of the public nominatim server QNetworkReply *m_categoriesReply; QList m_pendingCategoriesReply; QHash m_categories; QHash m_subcategories; QList m_categoryLocales; }; QT_END_NAMESPACE #endif // QPLACEMANAGERENGINEOSM_H