blob: 52057ce009350912d315482c7f1688cfb5313941 [file] [log] [blame]
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** 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 http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOROUTEREQUEST_H
#define QGEOROUTEREQUEST_H
#include <QtCore/QList>
#include <QtCore/QExplicitlySharedDataPointer>
#include <QtCore/QDateTime>
#include <QtLocation/qlocationglobal.h>
#include <QtPositioning/qgeocoordinate.h>
#include <QtPositioning/qgeorectangle.h>
QT_BEGIN_NAMESPACE
class QGeoRouteRequestPrivate;
class Q_LOCATION_EXPORT QGeoRouteRequest
{
public:
enum TravelMode {
CarTravel = 0x0001,
PedestrianTravel = 0x0002,
BicycleTravel = 0x0004,
PublicTransitTravel = 0x0008,
TruckTravel = 0x0010
};
Q_DECLARE_FLAGS(TravelModes, TravelMode)
enum FeatureType {
NoFeature = 0x00000000,
TollFeature = 0x00000001,
HighwayFeature = 0x00000002,
PublicTransitFeature = 0x00000004,
FerryFeature = 0x00000008,
TunnelFeature = 0x00000010,
DirtRoadFeature = 0x00000020,
ParksFeature = 0x00000040,
MotorPoolLaneFeature = 0x00000080,
TrafficFeature = 0x00000100
};
Q_DECLARE_FLAGS(FeatureTypes, FeatureType)
enum FeatureWeight {
NeutralFeatureWeight = 0x00000000,
PreferFeatureWeight = 0x00000001,
RequireFeatureWeight = 0x00000002,
AvoidFeatureWeight = 0x00000004,
DisallowFeatureWeight = 0x00000008
};
Q_DECLARE_FLAGS(FeatureWeights, FeatureWeight)
enum RouteOptimization {
ShortestRoute = 0x0001,
FastestRoute = 0x0002,
MostEconomicRoute = 0x0004,
MostScenicRoute = 0x0008
};
Q_DECLARE_FLAGS(RouteOptimizations, RouteOptimization)
enum SegmentDetail {
NoSegmentData = 0x0000,
BasicSegmentData = 0x0001
};
Q_DECLARE_FLAGS(SegmentDetails, SegmentDetail)
enum ManeuverDetail {
NoManeuvers = 0x0000,
BasicManeuvers = 0x0001
};
Q_DECLARE_FLAGS(ManeuverDetails, ManeuverDetail)
explicit QGeoRouteRequest(const QList<QGeoCoordinate> &waypoints = QList<QGeoCoordinate>());
QGeoRouteRequest(const QGeoCoordinate &origin,
const QGeoCoordinate &destination);
QGeoRouteRequest(const QGeoRouteRequest &other);
~QGeoRouteRequest();
QGeoRouteRequest &operator= (const QGeoRouteRequest &other);
bool operator == (const QGeoRouteRequest &other) const;
bool operator != (const QGeoRouteRequest &other) const;
void setWaypoints(const QList<QGeoCoordinate> &waypoints);
QList<QGeoCoordinate> waypoints() const;
void setWaypointsMetadata(const QList<QVariantMap> &waypointMetadata);
QList<QVariantMap> waypointsMetadata() const;
void setExcludeAreas(const QList<QGeoRectangle> &areas);
QList<QGeoRectangle> excludeAreas() const;
// defaults to 0
void setNumberAlternativeRoutes(int alternatives);
int numberAlternativeRoutes() const;
// defaults to TravelByCar
void setTravelModes(TravelModes travelModes);
TravelModes travelModes() const;
void setFeatureWeight(FeatureType featureType, FeatureWeight featureWeight);
FeatureWeight featureWeight(FeatureType featureType) const;
QList<FeatureType> featureTypes() const;
// defaults to OptimizeFastest
void setRouteOptimization(RouteOptimizations optimization);
RouteOptimizations routeOptimization() const;
// defaults to BasicSegmentData
void setSegmentDetail(SegmentDetail segmentDetail);
SegmentDetail segmentDetail() const;
// defaults to BasicManeuvers
void setManeuverDetail(ManeuverDetail maneuverDetail);
ManeuverDetail maneuverDetail() const;
// defaults to invalid datetime
void setDepartureTime(const QDateTime &departureTime);
QDateTime departureTime() const;
void setExtraParameters(const QVariantMap &extraParameters);
QVariantMap extraParameters() const;
private:
QExplicitlySharedDataPointer<QGeoRouteRequestPrivate> d_ptr;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::TravelModes)
Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::FeatureTypes)
Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::FeatureWeights)
Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::RouteOptimizations)
Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::SegmentDetails)
Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::ManeuverDetails)
QT_END_NAMESPACE
#endif