1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2015 The Qt Company Ltd. 4 ** Contact: http://www.qt.io/licensing/ 5 ** 6 ** This file is part of the QtLocation module of the Qt Toolkit. 7 ** 8 ** $QT_BEGIN_LICENSE:LGPL3$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see http://www.qt.io/terms-conditions. For further 15 ** information use the contact form at http://www.qt.io/contact-us. 16 ** 17 ** GNU Lesser General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU Lesser 19 ** General Public License version 3 as published by the Free Software 20 ** Foundation and appearing in the file LICENSE.LGPLv3 included in the 21 ** packaging of this file. Please review the following information to 22 ** ensure the GNU Lesser General Public License version 3 requirements 23 ** will be met: https://www.gnu.org/licenses/lgpl.html. 24 ** 25 ** GNU General Public License Usage 26 ** Alternatively, this file may be used under the terms of the GNU 27 ** General Public License version 2.0 or later as published by the Free 28 ** Software Foundation and appearing in the file LICENSE.GPL included in 29 ** the packaging of this file. Please review the following information to 30 ** ensure the GNU General Public License version 2.0 requirements will be 31 ** met: http://www.gnu.org/licenses/gpl-2.0.html. 32 ** 33 ** $QT_END_LICENSE$ 34 ** 35 ****************************************************************************/ 36 37 #ifndef QPLACEMANAGERENGINE_NOKIAV2_H 38 #define QPLACEMANAGERENGINE_NOKIAV2_H 39 40 #include <QtCore/QPointer> 41 #include <QtNetwork/QNetworkReply> 42 #include <QtLocation/QPlaceManagerEngine> 43 #include <QtLocation/QGeoServiceProvider> 44 45 QT_BEGIN_NAMESPACE 46 47 class QPlaceContentReply; 48 class QNetworkReply; 49 class QNetworkAccessManager; 50 class QPlaceCategoriesReplyHere; 51 class QGeoNetworkAccessManager; 52 class QGeoUriProvider; 53 54 struct PlaceCategoryNode 55 { 56 QString parentId; 57 QStringList childIds; 58 QPlaceCategory category; 59 }; 60 61 typedef QMap<QString, PlaceCategoryNode> QPlaceCategoryTree; 62 63 class QPlaceManagerEngineNokiaV2 : public QPlaceManagerEngine 64 { 65 Q_OBJECT 66 67 public: 68 QPlaceManagerEngineNokiaV2(QGeoNetworkAccessManager *networkManager, 69 const QVariantMap ¶meters, 70 QGeoServiceProvider::Error *error, 71 QString *errorString); 72 ~QPlaceManagerEngineNokiaV2(); 73 74 QPlaceDetailsReply *getPlaceDetails(const QString &placeId) override; 75 76 QPlaceContentReply *getPlaceContent(const QPlaceContentRequest &request) override; 77 78 QPlaceSearchReply *search(const QPlaceSearchRequest &query) override; 79 80 QPlaceSearchSuggestionReply *searchSuggestions(const QPlaceSearchRequest &query) override; 81 82 QPlaceIdReply *savePlace(const QPlace &place) override; 83 QPlaceIdReply *removePlace(const QString &placeId) override; 84 85 QPlaceIdReply *saveCategory(const QPlaceCategory &category, const QString &parentId) override; 86 QPlaceIdReply *removeCategory(const QString &categoryId) override; 87 88 QPlaceReply *initializeCategories() override; 89 QString parentCategoryId(const QString &categoryId) const override; 90 QStringList childCategoryIds(const QString &categoryId) const override; 91 QPlaceCategory category(const QString &categoryId) const override; 92 QList<QPlaceCategory> childCategories(const QString &parentId) const override; 93 94 QList<QLocale> locales() const override; 95 void setLocales(const QList<QLocale> &locales) override; 96 97 QPlaceIcon icon(const QString &remotePath, 98 const QList<QPlaceCategory> &categories = QList<QPlaceCategory>()) const; 99 100 QUrl constructIconUrl(const QPlaceIcon &icon, const QSize &size) const override; 101 102 private: 103 QNetworkReply *sendRequest(const QUrl &url); 104 QByteArray createLanguageString() const; 105 106 private Q_SLOTS: 107 void replyFinished(); 108 void replyError(QPlaceReply::Error error_, const QString &errorString); 109 void categoryReplyFinished(); 110 void categoryReplyError(); 111 112 private: 113 QGeoNetworkAccessManager *m_manager; 114 QGeoUriProvider *m_uriProvider; 115 116 QList<QLocale> m_locales; 117 118 QPlaceCategoryTree m_categoryTree; 119 QPlaceCategoryTree m_tempTree; 120 QHash<QString, QString> m_restIdToIconHash; 121 122 QPointer<QPlaceCategoriesReplyHere> m_categoryReply; 123 QHash<QString, QNetworkReply *> m_categoryRequests; 124 125 QString m_appId; 126 QString m_appCode; 127 128 QString m_localDataPath; 129 QString m_theme; 130 }; 131 132 QT_END_NAMESPACE 133 134 #endif // QPLACEMANAGERENGINE_NOKIAV2_H 135