diff options
author | Aaron McCarthy <mccarthy.aaron@gmail.com> | 2015-01-23 15:37:19 +1000 |
---|---|---|
committer | Alex Blasche <alexander.blasche@theqtcompany.com> | 2015-02-02 07:33:42 +0000 |
commit | dbfa9eeaae4b0508a0d4de41d0578003e98d357b (patch) | |
tree | da81c7ec0773dd8e9021227ad47d1aa7fbb7be5c /src/plugins/geoservices/osm/qplacemanagerengineosm.h | |
parent | d2ff57fec56b575059737e91cf6dbdcd3d610e6f (diff) | |
download | qtlocation-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.h | 90 |
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 ¶meters, 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 |