summaryrefslogtreecommitdiff
path: root/src/location/maps/qgeoroutesegment.cpp
diff options
context:
space:
mode:
authorAlex <qt-info@nokia.com>2011-05-06 12:53:54 +1000
committerAlex <qt-info@nokia.com>2011-05-06 12:53:54 +1000
commit336c5619c03cd338142f827ffcdaca855e35096c (patch)
treefc4f2a13f0a686a7434dae134d4f6714a24f48a3 /src/location/maps/qgeoroutesegment.cpp
parentb9758f161020136437fd728698d69a0f3ed970a1 (diff)
downloadqtlocation-336c5619c03cd338142f827ffcdaca855e35096c.tar.gz
first commit of QtLocation
Diffstat (limited to 'src/location/maps/qgeoroutesegment.cpp')
-rw-r--r--src/location/maps/qgeoroutesegment.cpp277
1 files changed, 277 insertions, 0 deletions
diff --git a/src/location/maps/qgeoroutesegment.cpp b/src/location/maps/qgeoroutesegment.cpp
new file mode 100644
index 00000000..d86e8dfe
--- /dev/null
+++ b/src/location/maps/qgeoroutesegment.cpp
@@ -0,0 +1,277 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Mobility Components.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qgeoroutesegment.h"
+#include "qgeoroutesegment_p.h"
+
+#include "qgeocoordinate.h"
+#include <QDateTime>
+
+QTM_BEGIN_NAMESPACE
+
+/*!
+ \class QGeoRouteSegment
+ \brief The QGeoRouteSegment class represents a segment of a route.
+
+ \inmodule QtLocation
+ \since 1.1
+
+ \ingroup maps-routing
+
+ A QGeoRouteSegment instance has information about the physcial layout
+ of the route segment, the length of the route and estimated time required
+ to traverse the route segment and an optional QGeoManeuver associated with
+ the end of the route segment.
+
+ QGeoRouteSegment instances can be thought of as edges on a routing
+ graph, with QGeoManeuver instances as optional labels attached to the
+ vertices of the graph.
+*/
+
+/*!
+ Constructs an invalid route segment object.
+
+ The route segment will remain invalid until one of setNextRouteSegment(),
+ setTravelTime(), setDistance(), setPath() or setManeuver() is called.
+*/
+QGeoRouteSegment::QGeoRouteSegment()
+ : d_ptr(new QGeoRouteSegmentPrivate()) {}
+
+/*!
+ Constructs a route segment object from the contents of \a other.
+*/
+QGeoRouteSegment::QGeoRouteSegment(const QGeoRouteSegment &other)
+ : d_ptr(other.d_ptr) {}
+
+/*!
+ \internal
+*/
+QGeoRouteSegment::QGeoRouteSegment(QExplicitlySharedDataPointer<QGeoRouteSegmentPrivate> &d_ptr)
+ : d_ptr(d_ptr) {}
+
+/*!
+ Destroys this route segment object.
+*/
+QGeoRouteSegment::~QGeoRouteSegment() {}
+
+
+/*!
+ Assigns \a other to this route segment object and then returns a
+ reference to this route segment object.
+*/
+QGeoRouteSegment& QGeoRouteSegment::operator= (const QGeoRouteSegment & other)
+{
+ d_ptr = other.d_ptr;
+ return *this;
+}
+
+/*!
+ Returns whether this route segment and \a other are equal.
+
+ The value of nextRouteSegment() is not considered in the comparison.
+*/
+bool QGeoRouteSegment::operator ==(const QGeoRouteSegment &other) const
+{
+ return (d_ptr.constData() == other.d_ptr.constData());
+}
+
+/*!
+ Returns whether this route segment and \a other are not equal.
+
+ The value of nextRouteSegment() is not considered in the comparison.
+*/
+bool QGeoRouteSegment::operator !=(const QGeoRouteSegment &other) const
+{
+ return !(operator==(other));
+}
+
+/*!
+ Returns whether this route segment is valid or not.
+
+ If nextRouteSegment() is called on the last route segment of a route, the
+ returned value will be an invalid route segment.
+*/
+bool QGeoRouteSegment::isValid() const
+{
+ return d_ptr->valid;
+}
+
+/*!
+ Sets the next route segment in the route to \a routeSegment.
+*/
+void QGeoRouteSegment::setNextRouteSegment(const QGeoRouteSegment &routeSegment)
+{
+ d_ptr->valid = true;
+ d_ptr->nextSegment = routeSegment.d_ptr;
+}
+
+/*!
+ Returns the next route segment in the route.
+
+ Will return an invalid route segment if this is the last route
+ segment in the route.
+*/
+QGeoRouteSegment QGeoRouteSegment::nextRouteSegment() const
+{
+ if (d_ptr->valid && d_ptr->nextSegment)
+ return QGeoRouteSegment(d_ptr->nextSegment);
+
+ QGeoRouteSegment segment;
+ segment.d_ptr->valid = false;
+ return segment;
+}
+
+/*!
+ Sets the estimated amount of time it will take to traverse this segment of
+ the route, in seconds, to \a secs.
+*/
+void QGeoRouteSegment::setTravelTime(int secs)
+{
+ d_ptr->valid = true;
+ d_ptr->travelTime = secs;
+}
+
+/*!
+ Returns the estimated amount of time it will take to traverse this segment
+ of the route, in seconds.
+*/
+int QGeoRouteSegment::travelTime() const
+{
+ return d_ptr->travelTime;
+}
+
+/*!
+ Sets the distance covered by this segment of the route, in metres, to \a distance.
+*/
+void QGeoRouteSegment::setDistance(qreal distance)
+{
+ d_ptr->valid = true;
+ d_ptr->distance = distance;
+}
+
+/*!
+ Returns the distance covered by this segment of the route, in metres.
+*/
+qreal QGeoRouteSegment::distance() const
+{
+ return d_ptr->distance;
+}
+
+/*!
+ Sets the geometric shape of this segment of the route to \a path.
+
+ The coordinates in \a path should be listed in the order in which they
+ would be traversed by someone traveling along this segment of the route.
+*/
+void QGeoRouteSegment::setPath(const QList<QGeoCoordinate> &path)
+{
+ d_ptr->valid = true;
+ d_ptr->path = path;
+}
+
+/*!
+ Returns the geometric shape of this route segment of the route.
+
+ The coordinates should be listed in the order in which they
+ would be traversed by someone traveling along this segment of the route.
+*/
+
+QList<QGeoCoordinate> QGeoRouteSegment::path() const
+{
+ return d_ptr->path;
+}
+
+/*!
+ Sets the maneuver for this route segement to \a maneuver.
+*/
+void QGeoRouteSegment::setManeuver(const QGeoManeuver &maneuver)
+{
+ d_ptr->valid = true;
+ d_ptr->maneuver = maneuver;
+}
+
+/*!
+ Returns the manevuer for this route segment.
+
+ Will return an invalid QGeoManeuver if no information has been attached
+ to the endpoint of this route segment.
+*/
+QGeoManeuver QGeoRouteSegment::maneuver() const
+{
+ return d_ptr->maneuver;
+}
+
+/*******************************************************************************
+*******************************************************************************/
+
+QGeoRouteSegmentPrivate::QGeoRouteSegmentPrivate()
+ : valid(false),
+ travelTime(0),
+ distance(0.0) {}
+
+QGeoRouteSegmentPrivate::QGeoRouteSegmentPrivate(const QGeoRouteSegmentPrivate &other)
+ : QSharedData(other),
+ valid(other.valid),
+ travelTime(other.travelTime),
+ distance(other.distance),
+ path(other.path),
+ maneuver(other.maneuver),
+ nextSegment(other.nextSegment) {}
+
+QGeoRouteSegmentPrivate::~QGeoRouteSegmentPrivate()
+{
+ nextSegment.reset();
+}
+
+bool QGeoRouteSegmentPrivate::operator ==(const QGeoRouteSegmentPrivate &other) const
+{
+ return ((valid == other.valid)
+ && (travelTime == other.travelTime)
+ && (distance == other.distance)
+ && (path == other.path)
+ && (maneuver == other.maneuver));
+}
+
+/*******************************************************************************
+*******************************************************************************/
+
+QTM_END_NAMESPACE
+