summaryrefslogtreecommitdiff
path: root/src/plugins/geoservices/osm/qplacemanagerengineosm.h
diff options
context:
space:
mode:
authorAaron McCarthy <mccarthy.aaron@gmail.com>2015-01-23 15:37:19 +1000
committerAlex Blasche <alexander.blasche@theqtcompany.com>2015-02-02 07:33:42 +0000
commitdbfa9eeaae4b0508a0d4de41d0578003e98d357b (patch)
treeda81c7ec0773dd8e9021227ad47d1aa7fbb7be5c /src/plugins/geoservices/osm/qplacemanagerengineosm.h
parentd2ff57fec56b575059737e91cf6dbdcd3d610e6f (diff)
downloadqtlocation-dbfa9eeaae4b0508a0d4de41d0578003e98d357b.tar.gz
Add support for places to Open Street Map plugin.
Implement basic places support based on the Open Street Map Nominatim service. Support for read only categories and place searching is supported. The plugin does not support getting place details, getting place content, search suggestions, saving/removing places or saving/removing categories. Change-Id: I5a185cdf25b50d5b377be4d2c3c53c8f1e807288 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Diffstat (limited to 'src/plugins/geoservices/osm/qplacemanagerengineosm.h')
-rw-r--r--src/plugins/geoservices/osm/qplacemanagerengineosm.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/src/plugins/geoservices/osm/qplacemanagerengineosm.h b/src/plugins/geoservices/osm/qplacemanagerengineosm.h
new file mode 100644
index 00000000..305d3abe
--- /dev/null
+++ b/src/plugins/geoservices/osm/qplacemanagerengineosm.h
@@ -0,0 +1,90 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 Aaron McCarthy <mccarthy.aaron@gmail.com>
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtFoo module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL21$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QPLACEMANAGERENGINEOSM_H
+#define QPLACEMANAGERENGINEOSM_H
+
+#include <QtLocation/QPlaceManagerEngine>
+#include <QtLocation/QGeoServiceProvider>
+
+QT_BEGIN_NAMESPACE
+
+class QNetworkAccessManager;
+class QNetworkReply;
+class QPlaceCategoriesReplyImpl;
+
+class QPlaceManagerEngineOsm : public QPlaceManagerEngine
+{
+ Q_OBJECT
+
+public:
+ QPlaceManagerEngineOsm(const QVariantMap &parameters, QGeoServiceProvider::Error *error,
+ QString *errorString);
+ ~QPlaceManagerEngineOsm();
+
+ QPlaceSearchReply *search(const QPlaceSearchRequest &request) Q_DECL_OVERRIDE;
+
+ QPlaceReply *initializeCategories() Q_DECL_OVERRIDE;
+ QString parentCategoryId(const QString &categoryId) const Q_DECL_OVERRIDE;
+ QStringList childCategoryIds(const QString &categoryId) const Q_DECL_OVERRIDE;
+ QPlaceCategory category(const QString &categoryId) const Q_DECL_OVERRIDE;
+
+ QList<QPlaceCategory> childCategories(const QString &parentId) const Q_DECL_OVERRIDE;
+
+ QList<QLocale> locales() const Q_DECL_OVERRIDE;
+ void setLocales(const QList<QLocale> &locales) Q_DECL_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;
+ QList<QLocale> m_locales;
+
+ QNetworkReply *m_categoriesReply;
+ QList<QPlaceCategoriesReplyImpl *> m_pendingCategoriesReply;
+ QHash<QString, QPlaceCategory> m_categories;
+ QHash<QString, QStringList> m_subcategories;
+
+ QList<QLocale> m_categoryLocales;
+};
+
+QT_END_NAMESPACE
+
+#endif // QPLACEMANAGERENGINEOSM_H