43 QML_NAMED_ELEMENT(RouteModel)
44 QML_ADDED_IN_VERSION(5, 0)
46 Q_PROPERTY(QDeclarativeGeoServiceProvider *plugin READ plugin WRITE setPlugin NOTIFY pluginChanged)
47 Q_PROPERTY(QDeclarativeGeoRouteQuery *query READ query WRITE setQuery NOTIFY queryChanged)
48 Q_PROPERTY(
int count READ count NOTIFY countChanged)
49 Q_PROPERTY(
bool autoUpdate READ autoUpdate WRITE setAutoUpdate NOTIFY autoUpdateChanged)
50 Q_PROPERTY(Status status READ status NOTIFY statusChanged)
51 Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged)
52 Q_PROPERTY(RouteError error READ error NOTIFY errorChanged)
53 Q_PROPERTY(QLocale::MeasurementSystem measurementSystem READ measurementSystem WRITE setMeasurementSystem NOTIFY measurementSystemChanged)
55 Q_INTERFACES(QQmlParserStatus)
59 RouteRole = Qt::UserRole + 500
71 NoError = QGeoRouteReply::NoError,
72 EngineNotSetError = QGeoRouteReply::EngineNotSetError,
73 CommunicationError = QGeoRouteReply::CommunicationError,
74 ParseError = QGeoRouteReply::ParseError,
75 UnsupportedOptionError = QGeoRouteReply::UnsupportedOptionError,
76 UnknownError = QGeoRouteReply::UnknownError,
80 UnknownParameterError = 100,
81 MissingRequiredParameterError
85 explicit QDeclarativeGeoRouteModel(QObject *parent =
nullptr);
88 void classBegin() override {}
89 void componentComplete() override;
92 int rowCount(
const QModelIndex &parent)
const override;
93 QVariant data(
const QModelIndex &index,
int role)
const override;
94 QHash<
int,QByteArray> roleNames()
const override;
96 void setPlugin(QDeclarativeGeoServiceProvider *plugin);
97 QDeclarativeGeoServiceProvider *plugin()
const;
99 void setQuery(QDeclarativeGeoRouteQuery *query);
100 QDeclarativeGeoRouteQuery *query()
const;
102 void setAutoUpdate(
bool autoUpdate);
103 bool autoUpdate()
const;
105 void setMeasurementSystem(QLocale::MeasurementSystem ms);
106 QLocale::MeasurementSystem measurementSystem()
const;
108 Status status()
const;
109 QString errorString()
const;
110 RouteError error()
const;
113 Q_INVOKABLE QGeoRoute get(
int index);
114 Q_INVOKABLE
void reset();
115 Q_INVOKABLE
void cancel();
119 void pluginChanged();
121 void autoUpdateChanged();
122 void statusChanged();
124 void routesChanged();
125 void measurementSystemChanged();
126 void abortRequested();
132 void routingFinished(QGeoRouteReply *reply);
133 void routingError(QGeoRouteReply *reply,
134 QGeoRouteReply::Error error,
135 const QString &errorString);
136 void queryDetailsChanged();
140 void setStatus(Status status);
141 void setError(RouteError error,
const QString &errorString);
143 bool complete_ =
false;
145 QDeclarativeGeoServiceProvider *plugin_ =
nullptr;
146 QDeclarativeGeoRouteQuery *routeQuery_ =
nullptr;
148 QList<QGeoRoute> routes_;
149 bool autoUpdate_ =
false;
150 Status status_ = QDeclarativeGeoRouteModel::Null;
151 QString errorString_;
152 RouteError error_ = QDeclarativeGeoRouteModel::NoError;
158 QML_NAMED_ELEMENT(RouteQuery)
159 QML_ADDED_IN_VERSION(5, 0)
161 Q_PROPERTY(
int numberAlternativeRoutes READ numberAlternativeRoutes WRITE setNumberAlternativeRoutes NOTIFY numberAlternativeRoutesChanged)
162 Q_PROPERTY(TravelModes travelModes READ travelModes WRITE setTravelModes NOTIFY travelModesChanged)
163 Q_PROPERTY(RouteOptimizations routeOptimizations READ routeOptimizations WRITE setRouteOptimizations NOTIFY routeOptimizationsChanged)
164 Q_PROPERTY(SegmentDetail segmentDetail READ segmentDetail WRITE setSegmentDetail NOTIFY segmentDetailChanged)
165 Q_PROPERTY(ManeuverDetail maneuverDetail READ maneuverDetail WRITE setManeuverDetail NOTIFY maneuverDetailChanged)
166 Q_PROPERTY(QList<QGeoCoordinate> waypoints READ waypoints WRITE setWaypoints NOTIFY waypointsChanged)
167 Q_PROPERTY(QList<QGeoRectangle> excludedAreas READ excludedAreas WRITE setExcludedAreas NOTIFY excludedAreasChanged)
168 Q_PROPERTY(QList<
int> featureTypes READ featureTypes NOTIFY featureTypesChanged)
169 Q_PROPERTY(QDateTime departureTime READ departureTime WRITE setDepartureTime NOTIFY departureTimeChanged REVISION(5, 13))
170 Q_INTERFACES(QQmlParserStatus)
174 explicit QDeclarativeGeoRouteQuery(QObject *parent =
nullptr);
175 QDeclarativeGeoRouteQuery(
const QGeoRouteRequest &request, QObject *parent =
nullptr);
176 ~QDeclarativeGeoRouteQuery();
179 void classBegin() override {}
180 void componentComplete() override;
182 QGeoRouteRequest routeRequest()
const;
185 CarTravel = QGeoRouteRequest::CarTravel,
186 PedestrianTravel = QGeoRouteRequest::PedestrianTravel,
187 BicycleTravel = QGeoRouteRequest::BicycleTravel,
188 PublicTransitTravel = QGeoRouteRequest::PublicTransitTravel,
189 TruckTravel = QGeoRouteRequest::TruckTravel
192 Q_DECLARE_FLAGS(TravelModes, TravelMode)
196 NoFeature = QGeoRouteRequest::NoFeature,
197 TollFeature = QGeoRouteRequest::TollFeature,
198 HighwayFeature = QGeoRouteRequest::HighwayFeature,
199 PublicTransitFeature = QGeoRouteRequest::PublicTransitFeature,
200 FerryFeature = QGeoRouteRequest::FerryFeature,
201 TunnelFeature = QGeoRouteRequest::TunnelFeature,
202 DirtRoadFeature = QGeoRouteRequest::DirtRoadFeature,
203 ParksFeature = QGeoRouteRequest::ParksFeature,
204 MotorPoolLaneFeature = QGeoRouteRequest::MotorPoolLaneFeature,
205 TrafficFeature = QGeoRouteRequest::TrafficFeature
207 Q_DECLARE_FLAGS(FeatureTypes, FeatureType)
208 Q_FLAG(FeatureTypes);
211 NeutralFeatureWeight = QGeoRouteRequest::NeutralFeatureWeight,
212 PreferFeatureWeight = QGeoRouteRequest::PreferFeatureWeight,
213 RequireFeatureWeight = QGeoRouteRequest::RequireFeatureWeight,
214 AvoidFeatureWeight = QGeoRouteRequest::AvoidFeatureWeight,
215 DisallowFeatureWeight = QGeoRouteRequest::DisallowFeatureWeight
217 Q_DECLARE_FLAGS(FeatureWeights, FeatureWeight)
218 Q_FLAG(FeatureWeight)
220 enum RouteOptimization {
221 ShortestRoute = QGeoRouteRequest::ShortestRoute,
222 FastestRoute = QGeoRouteRequest::FastestRoute,
223 MostEconomicRoute = QGeoRouteRequest::MostEconomicRoute,
224 MostScenicRoute = QGeoRouteRequest::MostScenicRoute
226 Q_ENUM(RouteOptimization)
227 Q_DECLARE_FLAGS(RouteOptimizations, RouteOptimization)
228 Q_FLAG(RouteOptimizations)
231 NoSegmentData = 0x0000,
232 BasicSegmentData = 0x0001
234 Q_ENUM(SegmentDetail)
235 Q_DECLARE_FLAGS(SegmentDetails, SegmentDetail)
236 Q_FLAG(SegmentDetails)
238 enum ManeuverDetail {
239 NoManeuvers = 0x0000,
240 BasicManeuvers = 0x0001
242 Q_ENUM(ManeuverDetail)
243 Q_DECLARE_FLAGS(ManeuverDetails, ManeuverDetail)
244 Q_FLAG(ManeuverDetails)
246 void setNumberAlternativeRoutes(
int numberAlternativeRoutes);
247 int numberAlternativeRoutes()
const;
250 QList<
int> featureTypes()
const;
253 QList<QGeoCoordinate> waypoints()
const;
254 void setWaypoints(
const QList<QGeoCoordinate> &value);
256 QList<QGeoRectangle> excludedAreas()
const;
257 void setExcludedAreas(
const QList<QGeoRectangle> &value);
259 Q_INVOKABLE
void addWaypoint(
const QGeoCoordinate &w);
260 Q_INVOKABLE
void removeWaypoint(
const QGeoCoordinate &waypoint);
261 Q_INVOKABLE
void clearWaypoints();
263 Q_INVOKABLE
void addExcludedArea(
const QGeoRectangle &area);
264 Q_INVOKABLE
void removeExcludedArea(
const QGeoRectangle &area);
265 Q_INVOKABLE
void clearExcludedAreas();
267 Q_INVOKABLE
void setFeatureWeight(FeatureType featureType, FeatureWeight featureWeight);
268 Q_INVOKABLE
int featureWeight(FeatureType featureType);
269 Q_INVOKABLE
void resetFeatureWeights();
272
273
275 void setTravelModes(TravelModes travelModes);
276 TravelModes travelModes()
const;
278 void setSegmentDetail(SegmentDetail segmentDetail);
279 SegmentDetail segmentDetail()
const;
281 void setManeuverDetail(ManeuverDetail maneuverDetail);
282 ManeuverDetail maneuverDetail()
const;
284 void setRouteOptimizations(RouteOptimizations optimization);
285 RouteOptimizations routeOptimizations()
const;
287 void setDepartureTime(
const QDateTime &departureTime);
288 QDateTime departureTime()
const;
291 void numberAlternativeRoutesChanged();
292 void travelModesChanged();
293 void routeOptimizationsChanged();
295 void waypointsChanged();
296 void excludedAreasChanged();
298 void featureTypesChanged();
299 void maneuverDetailChanged();
300 void segmentDetailChanged();
302 void queryDetailsChanged();
303 void departureTimeChanged();
306 void excludedAreaCoordinateChanged();
307 void waypointChanged();
310 Q_INVOKABLE
void doCoordinateChanged();
312 mutable QGeoRouteRequest request_;
313 bool complete_ =
false;
314 bool m_excludedAreaCoordinateChanged =
false;
315 mutable bool m_waypointsChanged =
false;
316 QList<QGeoCoordinate> m_waypoints;