Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qgeorouterequest.h
Go to the documentation of this file.
1// Copyright (C) 2015 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QGEOROUTEREQUEST_H
6#define QGEOROUTEREQUEST_H
7
8#include <QtCore/QList>
9#include <QtCore/QExplicitlySharedDataPointer>
10#include <QtCore/QDateTime>
11
12#include <QtLocation/qlocationglobal.h>
13#include <QtPositioning/QGeoCoordinate>
14
15QT_BEGIN_NAMESPACE
16
17class QGeoRectangle;
18class QGeoRouteRequestPrivate;
19QT_DECLARE_QESDP_SPECIALIZATION_DTOR_WITH_EXPORT(QGeoRouteRequestPrivate, Q_LOCATION_EXPORT)
20
21class Q_LOCATION_EXPORT QGeoRouteRequest
22{
23public:
24 enum TravelMode {
25 CarTravel = 0x0001,
26 PedestrianTravel = 0x0002,
27 BicycleTravel = 0x0004,
28 PublicTransitTravel = 0x0008,
29 TruckTravel = 0x0010
30 };
31 Q_DECLARE_FLAGS(TravelModes, TravelMode)
32
33 enum FeatureType {
34 NoFeature = 0x00000000,
35 TollFeature = 0x00000001,
36 HighwayFeature = 0x00000002,
37 PublicTransitFeature = 0x00000004,
38 FerryFeature = 0x00000008,
39 TunnelFeature = 0x00000010,
40 DirtRoadFeature = 0x00000020,
41 ParksFeature = 0x00000040,
42 MotorPoolLaneFeature = 0x00000080,
43 TrafficFeature = 0x00000100
44 };
45 Q_DECLARE_FLAGS(FeatureTypes, FeatureType)
46
47 enum FeatureWeight {
48 NeutralFeatureWeight = 0x00000000,
49 PreferFeatureWeight = 0x00000001,
50 RequireFeatureWeight = 0x00000002,
51 AvoidFeatureWeight = 0x00000004,
52 DisallowFeatureWeight = 0x00000008
53 };
54 Q_DECLARE_FLAGS(FeatureWeights, FeatureWeight)
55
56 enum RouteOptimization {
57 ShortestRoute = 0x0001,
58 FastestRoute = 0x0002,
59 MostEconomicRoute = 0x0004,
60 MostScenicRoute = 0x0008
61 };
62 Q_DECLARE_FLAGS(RouteOptimizations, RouteOptimization)
63
64 enum SegmentDetail {
65 NoSegmentData = 0x0000,
66 BasicSegmentData = 0x0001
67 };
68 Q_DECLARE_FLAGS(SegmentDetails, SegmentDetail)
69
70 enum ManeuverDetail {
71 NoManeuvers = 0x0000,
72 BasicManeuvers = 0x0001
73 };
74 Q_DECLARE_FLAGS(ManeuverDetails, ManeuverDetail)
75
76 explicit QGeoRouteRequest(const QList<QGeoCoordinate> &waypoints = QList<QGeoCoordinate>());
77 QGeoRouteRequest(const QGeoCoordinate &origin,
78 const QGeoCoordinate &destination);
79 QGeoRouteRequest(const QGeoRouteRequest &other) noexcept;
80 QGeoRouteRequest(QGeoRouteRequest &&other) noexcept = default;
81
82 ~QGeoRouteRequest();
83
84 QGeoRouteRequest &operator= (const QGeoRouteRequest &other) noexcept;
85 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(QGeoRouteRequest)
86
87 void swap(QGeoRouteRequest &other) noexcept { d_ptr.swap(other.d_ptr); }
88
89 friend inline bool operator==(const QGeoRouteRequest &lhs,
90 const QGeoRouteRequest &rhs) noexcept
91 {
92 return lhs.isEqual(rhs);
93 }
94 friend inline bool operator!=(const QGeoRouteRequest &lhs,
95 const QGeoRouteRequest &rhs) noexcept
96 {
97 return !lhs.isEqual(rhs);
98 }
99
100 void setWaypoints(const QList<QGeoCoordinate> &waypoints);
101 QList<QGeoCoordinate> waypoints() const;
102
103 void setExcludeAreas(const QList<QGeoRectangle> &areas);
104 QList<QGeoRectangle> excludeAreas() const;
105
106 // defaults to 0
107 void setNumberAlternativeRoutes(int alternatives);
108 int numberAlternativeRoutes() const;
109
110 // defaults to TravelByCar
111 void setTravelModes(TravelModes travelModes);
112 TravelModes travelModes() const;
113
114 void setFeatureWeight(FeatureType featureType, FeatureWeight featureWeight);
115 FeatureWeight featureWeight(FeatureType featureType) const;
116 QList<FeatureType> featureTypes() const;
117
118 // defaults to OptimizeFastest
119 void setRouteOptimization(RouteOptimizations optimization);
120 RouteOptimizations routeOptimization() const;
121
122 // defaults to BasicSegmentData
123 void setSegmentDetail(SegmentDetail segmentDetail);
124 SegmentDetail segmentDetail() const;
125
126 // defaults to BasicManeuvers
127 void setManeuverDetail(ManeuverDetail maneuverDetail);
128 ManeuverDetail maneuverDetail() const;
129
130 // defaults to invalid datetime
131 void setDepartureTime(const QDateTime &departureTime);
132 QDateTime departureTime() const;
133
134private:
135 QExplicitlySharedDataPointer<QGeoRouteRequestPrivate> d_ptr;
136
137 bool isEqual(const QGeoRouteRequest &other) const noexcept;
138};
139
140Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::TravelModes)
141Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::FeatureTypes)
142Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::FeatureWeights)
143Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::RouteOptimizations)
144Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::SegmentDetails)
145Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::ManeuverDetails)
146
147QT_END_NAMESPACE
148
149#endif
\inmodule QtLocation
Combined button and popup list for selecting options.