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 QGEOSERVICEPROVIDER_H 38 #define QGEOSERVICEPROVIDER_H 39 40 #include <QtCore/QVariant> 41 #include <QtCore/QString> 42 #include <QtCore/QObject> 43 #include <QtLocation/qlocationglobal.h> 44 45 QT_BEGIN_NAMESPACE 46 47 class QLocale; 48 class QStringList; 49 class QGeoCodingManager; 50 class QGeoMappingManager; 51 class QGeoRoutingManager; 52 class QPlaceManager; 53 class QNavigationManager; 54 class QGeoCodingManagerEngine; 55 class QGeoMappingManagerEngine; 56 class QGeoRoutingManagerEngine; 57 class QPlaceManagerEngine; 58 class QNavigationManagerEngine; 59 class QGeoServiceProviderPrivate; 60 class QQmlEngine; 61 62 class Q_LOCATION_EXPORT QGeoServiceProvider : public QObject 63 { 64 Q_OBJECT 65 Q_ENUMS(Error) 66 public: 67 enum Error { 68 NoError, 69 NotSupportedError, 70 UnknownParameterError, 71 MissingRequiredParameterError, 72 ConnectionError, 73 LoaderError 74 }; 75 76 enum RoutingFeature { 77 NoRoutingFeatures = 0, 78 OnlineRoutingFeature = (1<<0), 79 OfflineRoutingFeature = (1<<1), 80 LocalizedRoutingFeature = (1<<2), 81 RouteUpdatesFeature = (1<<3), 82 AlternativeRoutesFeature = (1<<4), 83 ExcludeAreasRoutingFeature = (1<<5), 84 AnyRoutingFeatures = ~(0) 85 }; 86 87 enum GeocodingFeature { 88 NoGeocodingFeatures = 0, 89 OnlineGeocodingFeature = (1<<0), 90 OfflineGeocodingFeature = (1<<1), 91 ReverseGeocodingFeature = (1<<2), 92 LocalizedGeocodingFeature = (1<<3), 93 AnyGeocodingFeatures = ~(0) 94 }; 95 96 enum MappingFeature { 97 NoMappingFeatures = 0, 98 OnlineMappingFeature = (1<<0), 99 OfflineMappingFeature = (1<<1), 100 LocalizedMappingFeature = (1<<2), 101 AnyMappingFeatures = ~(0) 102 }; 103 104 enum PlacesFeature { 105 NoPlacesFeatures = 0, 106 OnlinePlacesFeature = (1<<0), 107 OfflinePlacesFeature = (1<<1), 108 SavePlaceFeature = (1<<2), 109 RemovePlaceFeature = (1<<3), 110 SaveCategoryFeature = (1<<4), 111 RemoveCategoryFeature = (1<<5), 112 PlaceRecommendationsFeature = (1<<6), 113 SearchSuggestionsFeature = (1<<7), 114 LocalizedPlacesFeature = (1<<8), 115 NotificationsFeature = (1<<9), 116 PlaceMatchingFeature = (1<<10), 117 AnyPlacesFeatures = ~(0) 118 }; 119 120 enum NavigationFeature { 121 NoNavigationFeatures = 0, 122 OnlineNavigationFeature = (1<<0), 123 OfflineNavigationFeature = (1<<1), 124 AnyNavigationFeatures = ~(0) 125 }; 126 127 Q_DECLARE_FLAGS(RoutingFeatures, RoutingFeature) 128 Q_FLAGS(RoutingFeatures) 129 130 Q_DECLARE_FLAGS(GeocodingFeatures, GeocodingFeature) 131 Q_FLAGS(GeocodingFeatures) 132 133 Q_DECLARE_FLAGS(MappingFeatures, MappingFeature) 134 Q_FLAGS(MappingFeatures) 135 136 Q_DECLARE_FLAGS(PlacesFeatures, PlacesFeature) 137 Q_FLAGS(PlacesFeatures) 138 139 Q_DECLARE_FLAGS(NavigationFeatures, NavigationFeature) 140 Q_FLAGS(NavigationFeatures) 141 142 static QStringList availableServiceProviders(); 143 QGeoServiceProvider(const QString &providerName, 144 const QVariantMap ¶meters = QVariantMap(), 145 bool allowExperimental = false); 146 147 ~QGeoServiceProvider(); 148 149 RoutingFeatures routingFeatures() const; 150 GeocodingFeatures geocodingFeatures() const; 151 MappingFeatures mappingFeatures() const; 152 PlacesFeatures placesFeatures() const; 153 NavigationFeatures navigationFeatures() const; 154 155 QGeoCodingManager *geocodingManager() const; 156 QGeoMappingManager *mappingManager() const; 157 QGeoRoutingManager *routingManager() const; 158 QPlaceManager *placeManager() const; 159 QNavigationManager *navigationManager() const; 160 161 Error error() const; 162 QString errorString() const; 163 164 Error mappingError() const; 165 QString mappingErrorString() const; 166 Error geocodingError() const; 167 QString geocodingErrorString() const; 168 Error routingError() const; 169 QString routingErrorString() const; 170 Error placesError() const; 171 QString placesErrorString() const; 172 Error navigationError() const; 173 QString navigationErrorString() const; 174 175 void setParameters(const QVariantMap ¶meters); 176 void setLocale(const QLocale &locale); 177 void setAllowExperimental(bool allow); 178 void setQmlEngine(QQmlEngine *engine); 179 180 private: 181 QGeoServiceProviderPrivate *d_ptr; 182 }; 183 184 Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoServiceProvider::RoutingFeatures) 185 Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoServiceProvider::GeocodingFeatures) 186 Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoServiceProvider::MappingFeatures) 187 Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoServiceProvider::PlacesFeatures) 188 Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoServiceProvider::NavigationFeatures) 189 190 QT_END_NAMESPACE 191 192 #endif 193