42 QML_NAMED_ELEMENT(RouteModel)
43 QML_ADDED_IN_VERSION(5, 0)
45 Q_PROPERTY(QDeclarativeGeoServiceProvider *plugin READ plugin WRITE setPlugin NOTIFY pluginChanged)
46 Q_PROPERTY(QDeclarativeGeoRouteQuery *query READ query WRITE setQuery NOTIFY queryChanged)
47 Q_PROPERTY(
int count READ count NOTIFY countChanged)
48 Q_PROPERTY(
bool autoUpdate READ autoUpdate WRITE setAutoUpdate NOTIFY autoUpdateChanged)
49 Q_PROPERTY(Status status READ status NOTIFY statusChanged)
50 Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged)
51 Q_PROPERTY(RouteError error READ error NOTIFY errorChanged)
52 Q_PROPERTY(QLocale::MeasurementSystem measurementSystem READ measurementSystem WRITE setMeasurementSystem NOTIFY measurementSystemChanged)
54 Q_INTERFACES(QQmlParserStatus)
58 RouteRole = Qt::UserRole + 500
70 NoError = QGeoRouteReply::NoError,
71 EngineNotSetError = QGeoRouteReply::EngineNotSetError,
72 CommunicationError = QGeoRouteReply::CommunicationError,
73 ParseError = QGeoRouteReply::ParseError,
74 UnsupportedOptionError = QGeoRouteReply::UnsupportedOptionError,
75 UnknownError = QGeoRouteReply::UnknownError,
79 UnknownParameterError = 100,
80 MissingRequiredParameterError
84 explicit QDeclarativeGeoRouteModel(QObject *parent =
nullptr);
87 void classBegin() override {}
88 void componentComplete() override;
91 int rowCount(
const QModelIndex &parent)
const override;
92 QVariant data(
const QModelIndex &index,
int role)
const override;
93 QHash<
int,QByteArray> roleNames()
const override;
95 void setPlugin(QDeclarativeGeoServiceProvider *plugin);
96 QDeclarativeGeoServiceProvider *plugin()
const;
98 void setQuery(QDeclarativeGeoRouteQuery *query);
99 QDeclarativeGeoRouteQuery *query()
const;
101 void setAutoUpdate(
bool autoUpdate);
102 bool autoUpdate()
const;
104 void setMeasurementSystem(QLocale::MeasurementSystem ms);
105 QLocale::MeasurementSystem measurementSystem()
const;
107 Status status()
const;
108 QString errorString()
const;
109 RouteError error()
const;
112 Q_INVOKABLE QGeoRoute get(
int index);
113 Q_INVOKABLE
void reset();
114 Q_INVOKABLE
void cancel();
118 void pluginChanged();
120 void autoUpdateChanged();
121 void statusChanged();
123 void routesChanged();
124 void measurementSystemChanged();
125 void abortRequested();
131 void routingFinished(QGeoRouteReply *reply);
132 void routingError(QGeoRouteReply *reply,
133 QGeoRouteReply::Error error,
134 const QString &errorString);
135 void queryDetailsChanged();
139 void setStatus(Status status);
140 void setError(RouteError error,
const QString &errorString);
142 bool complete_ =
false;
144 QDeclarativeGeoServiceProvider *plugin_ =
nullptr;
145 QDeclarativeGeoRouteQuery *routeQuery_ =
nullptr;
147 QList<QGeoRoute> routes_;
148 bool autoUpdate_ =
false;
149 Status status_ = QDeclarativeGeoRouteModel::Null;
150 QString errorString_;
151 RouteError error_ = QDeclarativeGeoRouteModel::NoError;
157 QML_NAMED_ELEMENT(RouteQuery)
158 QML_ADDED_IN_VERSION(5, 0)
160 Q_PROPERTY(
int numberAlternativeRoutes READ numberAlternativeRoutes WRITE setNumberAlternativeRoutes NOTIFY numberAlternativeRoutesChanged)
161 Q_PROPERTY(TravelModes travelModes READ travelModes WRITE setTravelModes NOTIFY travelModesChanged)
162 Q_PROPERTY(RouteOptimizations routeOptimizations READ routeOptimizations WRITE setRouteOptimizations NOTIFY routeOptimizationsChanged)
163 Q_PROPERTY(SegmentDetail segmentDetail READ segmentDetail WRITE setSegmentDetail NOTIFY segmentDetailChanged)
164 Q_PROPERTY(ManeuverDetail maneuverDetail READ maneuverDetail WRITE setManeuverDetail NOTIFY maneuverDetailChanged)
165 Q_PROPERTY(QList<QGeoCoordinate> waypoints READ waypoints WRITE setWaypoints NOTIFY waypointsChanged)
166 Q_PROPERTY(QList<QGeoRectangle> excludedAreas READ excludedAreas WRITE setExcludedAreas NOTIFY excludedAreasChanged)
167 Q_PROPERTY(QList<
int> featureTypes READ featureTypes NOTIFY featureTypesChanged)
168 Q_PROPERTY(QDateTime departureTime READ departureTime WRITE setDepartureTime NOTIFY departureTimeChanged REVISION(5, 13))
169 Q_INTERFACES(QQmlParserStatus)
173 explicit QDeclarativeGeoRouteQuery(QObject *parent =
nullptr);
174 QDeclarativeGeoRouteQuery(
const QGeoRouteRequest &request, QObject *parent =
nullptr);
175 ~QDeclarativeGeoRouteQuery();
178 void classBegin() override {}
179 void componentComplete() override;
181 QGeoRouteRequest routeRequest()
const;
184 CarTravel = QGeoRouteRequest::CarTravel,
185 PedestrianTravel = QGeoRouteRequest::PedestrianTravel,
186 BicycleTravel = QGeoRouteRequest::BicycleTravel,
187 PublicTransitTravel = QGeoRouteRequest::PublicTransitTravel,
188 TruckTravel = QGeoRouteRequest::TruckTravel
191 Q_DECLARE_FLAGS(TravelModes, TravelMode)
195 NoFeature = QGeoRouteRequest::NoFeature,
196 TollFeature = QGeoRouteRequest::TollFeature,
197 HighwayFeature = QGeoRouteRequest::HighwayFeature,
198 PublicTransitFeature = QGeoRouteRequest::PublicTransitFeature,
199 FerryFeature = QGeoRouteRequest::FerryFeature,
200 TunnelFeature = QGeoRouteRequest::TunnelFeature,
201 DirtRoadFeature = QGeoRouteRequest::DirtRoadFeature,
202 ParksFeature = QGeoRouteRequest::ParksFeature,
203 MotorPoolLaneFeature = QGeoRouteRequest::MotorPoolLaneFeature,
204 TrafficFeature = QGeoRouteRequest::TrafficFeature
206 Q_DECLARE_FLAGS(FeatureTypes, FeatureType)
207 Q_FLAG(FeatureTypes);
210 NeutralFeatureWeight = QGeoRouteRequest::NeutralFeatureWeight,
211 PreferFeatureWeight = QGeoRouteRequest::PreferFeatureWeight,
212 RequireFeatureWeight = QGeoRouteRequest::RequireFeatureWeight,
213 AvoidFeatureWeight = QGeoRouteRequest::AvoidFeatureWeight,
214 DisallowFeatureWeight = QGeoRouteRequest::DisallowFeatureWeight
216 Q_DECLARE_FLAGS(FeatureWeights, FeatureWeight)
217 Q_FLAG(FeatureWeight)
219 enum RouteOptimization {
220 ShortestRoute = QGeoRouteRequest::ShortestRoute,
221 FastestRoute = QGeoRouteRequest::FastestRoute,
222 MostEconomicRoute = QGeoRouteRequest::MostEconomicRoute,
223 MostScenicRoute = QGeoRouteRequest::MostScenicRoute
225 Q_ENUM(RouteOptimization)
226 Q_DECLARE_FLAGS(RouteOptimizations, RouteOptimization)
227 Q_FLAG(RouteOptimizations)
230 NoSegmentData = 0x0000,
231 BasicSegmentData = 0x0001
233 Q_ENUM(SegmentDetail)
234 Q_DECLARE_FLAGS(SegmentDetails, SegmentDetail)
235 Q_FLAG(SegmentDetails)
237 enum ManeuverDetail {
238 NoManeuvers = 0x0000,
239 BasicManeuvers = 0x0001
241 Q_ENUM(ManeuverDetail)
242 Q_DECLARE_FLAGS(ManeuverDetails, ManeuverDetail)
243 Q_FLAG(ManeuverDetails)
245 void setNumberAlternativeRoutes(
int numberAlternativeRoutes);
246 int numberAlternativeRoutes()
const;
249 QList<
int> featureTypes()
const;
252 QList<QGeoCoordinate> waypoints()
const;
253 void setWaypoints(
const QList<QGeoCoordinate> &value);
255 QList<QGeoRectangle> excludedAreas()
const;
256 void setExcludedAreas(
const QList<QGeoRectangle> &value);
258 Q_INVOKABLE
void addWaypoint(
const QGeoCoordinate &w);
259 Q_INVOKABLE
void removeWaypoint(
const QGeoCoordinate &waypoint);
260 Q_INVOKABLE
void clearWaypoints();
262 Q_INVOKABLE
void addExcludedArea(
const QGeoRectangle &area);
263 Q_INVOKABLE
void removeExcludedArea(
const QGeoRectangle &area);
264 Q_INVOKABLE
void clearExcludedAreas();
266 Q_INVOKABLE
void setFeatureWeight(FeatureType featureType, FeatureWeight featureWeight);
267 Q_INVOKABLE
int featureWeight(FeatureType featureType);
268 Q_INVOKABLE
void resetFeatureWeights();
271
272
274 void setTravelModes(TravelModes travelModes);
275 TravelModes travelModes()
const;
277 void setSegmentDetail(SegmentDetail segmentDetail);
278 SegmentDetail segmentDetail()
const;
280 void setManeuverDetail(ManeuverDetail maneuverDetail);
281 ManeuverDetail maneuverDetail()
const;
283 void setRouteOptimizations(RouteOptimizations optimization);
284 RouteOptimizations routeOptimizations()
const;
286 void setDepartureTime(
const QDateTime &departureTime);
287 QDateTime departureTime()
const;
290 void numberAlternativeRoutesChanged();
291 void travelModesChanged();
292 void routeOptimizationsChanged();
294 void waypointsChanged();
295 void excludedAreasChanged();
297 void featureTypesChanged();
298 void maneuverDetailChanged();
299 void segmentDetailChanged();
301 void queryDetailsChanged();
302 void departureTimeChanged();
305 void excludedAreaCoordinateChanged();
306 void waypointChanged();
309 Q_INVOKABLE
void doCoordinateChanged();
311 mutable QGeoRouteRequest request_;
312 bool complete_ =
false;
313 bool m_excludedAreaCoordinateChanged =
false;
314 mutable bool m_waypointsChanged =
false;
315 QList<QGeoCoordinate> m_waypoints;