summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLauri Laanmets <lauri.laanmets@eesti.ee>2021-10-07 13:46:02 +0300
committerIvan Solovev <ivan.solovev@qt.io>2021-11-09 10:28:32 +0100
commite7af7ba73dfce236ff2627aacd6d261b25b125f4 (patch)
treebaf72823a3085d66e6429c9d9c2f2dea05060819
parent95c9e14357857797c4f4997d40c9df7965e9af5d (diff)
downloadqtlocation-e7af7ba73dfce236ff2627aacd6d261b25b125f4.tar.gz
QGeoRoutingManager doc example into snippet file
QGeoRoutingManager documentation has and example code with full C++ class. This also contains Q_OBJECT macro. But this macro is checked by AutoMoc (doesn't care if it's in a comment) and gives build error that moc_ file is not included. So, moving this example code into snippet file to get over that. This is part of a bigger work to port QtLocation maps to Qt6. Task-number: QTBUG-96795 Change-Id: I581ed5df55a49ce761423eba3353b683f2e2409b Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
-rw-r--r--src/location/doc/snippets/maps/routehandler.h121
-rw-r--r--src/location/maps/qgeoroutingmanager.cpp73
2 files changed, 122 insertions, 72 deletions
diff --git a/src/location/doc/snippets/maps/routehandler.h b/src/location/doc/snippets/maps/routehandler.h
new file mode 100644
index 00000000..01b1b7df
--- /dev/null
+++ b/src/location/doc/snippets/maps/routehandler.h
@@ -0,0 +1,121 @@
+/****************************************************************************
+**
+** Copyright (C) 2021 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtLocation module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** 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 The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//! [RouteHandler]
+class RouteHandler : public QObject
+{
+ Q_OBJECT
+public:
+ RouteHandler(QGeoRoutingManager *routingManager,
+ const QGeoCoordinate &origin,
+ const QGeoCoordinate &destination) {
+
+ QGeoRouteRequest request(origin, destination);
+
+ // The request defaults to the fastest route by car, which is
+ // equivalent to:
+ // request.setTravelMode(QGeoRouteRequest::CarTravel);
+ // request.setRouteOptimization(QGeoRouteRequest::FastestRoute);
+
+ request.setAvoidFeatureTypes(QGeoRouteRequest::AvoidTolls);
+ request.setAvoidFeatureTypes(QGeoRouteRequest::AvoidMotorPoolLanes);
+
+ QGeoRouteRequest::AvoidFeaturesTypes avoidableFeatures = routingManager->supportedAvoidFeatureTypes();
+
+ if (!(avoidableFeatures & request.avoidFeatureTypes())) {
+ // ... inform the user that the routing manager does not
+ // provide support for avoiding tolls and/or motor pool lanes ...
+ return;
+ }
+
+ QGeoRouteReply *reply = routingManager->calculateRoute(request);
+
+ if (reply->isFinished()) {
+ if (reply->error() == QGeoRouteReply::NoError) {
+ routeCalculated(reply);
+ } else {
+ routeError(reply, reply->error(), reply->errorString());
+ }
+ return;
+ }
+
+ connect(routingManager,
+ SIGNAL(finished(QGeoRouteReply*)),
+ this,
+ SLOT(routeCalculated(QGeoRouteReply*)));
+
+ connect(routingManager,
+ SIGNAL(error(QGeoRouteReply*,QGeoRouteReply::Error,QString)),
+ this,
+ SLOT(routeError(QGeoRouteReply*,QGeoRouteReply::Error,QString)));
+ }
+
+private slots:
+ void routeCalculated(QGeoRouteReply *reply)
+ {
+ // A route request can ask for several alternative routes ...
+ if (reply->routes().size() != 0) {
+
+ // ... but by default it will only get a single route
+ QGeoRoute route = reply->routes().at(0);
+
+ //... now we have to make use of the route ...
+ }
+
+ reply->deleteLater();
+ }
+
+ void routeError(QGeoRouteReply *reply, QGeoRouteReply:Error error, const QString &errorString)
+ {
+ // ... inform the user that an error has occurred ...
+ reply->deleteLater();
+ }
+};
+//! [RouteHandler]
diff --git a/src/location/maps/qgeoroutingmanager.cpp b/src/location/maps/qgeoroutingmanager.cpp
index 195c285a..1b88dd1c 100644
--- a/src/location/maps/qgeoroutingmanager.cpp
+++ b/src/location/maps/qgeoroutingmanager.cpp
@@ -73,78 +73,7 @@ QT_BEGIN_NAMESPACE
A small example of the usage of QGeoRoutingManager and QGeoRouteRequests
follows:
-
- \code
-class MyRouteHandler : public QObject
-{
- Q_OBJECT
-public:
- MyRouteHandler(QGeoRoutingManager *routingManager,
- const QGeoCoordinate &origin,
- const QGeoCoordinate &destination) {
-
- QGeoRouteRequest request(origin, destination);
-
- // The request defaults to the fastest route by car, which is
- // equivalent to:
- // request.setTravelMode(QGeoRouteRequest::CarTravel);
- // request.setRouteOptimization(QGeoRouteRequest::FastestRoute);
-
- request.setAvoidFeatureTypes(QGeoRouteRequest::AvoidTolls);
- request.setAvoidFeatureTypes(QGeoRouteRequest::AvoidMotorPoolLanes);
-
- QGeoRouteRequest::AvoidFeaturesTypes avoidableFeatures = routingManager->supportedAvoidFeatureTypes();
-
- if (!(avoidableFeatures & request.avoidFeatureTypes())) {
- // ... inform the user that the routing manager does not
- // provide support for avoiding tolls and/or motor pool lanes ...
- return;
- }
-
- QGeoRouteReply *reply = routingManager->calculateRoute(request);
-
- if (reply->isFinished()) {
- if (reply->error() == QGeoRouteReply::NoError) {
- routeCalculated(reply);
- } else {
- routeError(reply, reply->error(), reply->errorString());
- }
- return;
- }
-
- connect(routingManager,
- SIGNAL(finished(QGeoRouteReply*)),
- this,
- SLOT(routeCalculated(QGeoRouteReply*)));
-
- connect(routingManager,
- SIGNAL(error(QGeoRouteReply*,QGeoRouteReply::Error,QString)),
- this,
- SLOT(routeError(QGeoRouteReply*,QGeoRouteReply::Error,QString)));
- }
-
-private slots:
- void routeCalculated(QGeoRouteReply *reply)
- {
- // A route request can ask for several alternative routes ...
- if (reply->routes().size() != 0) {
-
- // ... but by default it will only get a single route
- QGeoRoute route = reply->routes().at(0);
-
- //... now we have to make use of the route ...
- }
-
- reply->deleteLater();
- }
-
- void routeError(QGeoRouteReply *reply, QGeoRouteReply:Error error, const QString &errorString)
- {
- // ... inform the user that an error has occurred ...
- reply->deleteLater();
- }
-};
- \endcode
+ \snippet maps/routehandler.h RouteHandler
*/
/*!