libosmscout 1.1.1
Loading...
Searching...
No Matches
RouteStep.h
Go to the documentation of this file.
1#ifndef OSMSCOUT_CLIENT_QT_ROUTESTEP_H
2#define OSMSCOUT_CLIENT_QT_ROUTESTEP_H
3
4/*
5 OSMScout - a Qt backend for libosmscout and libosmscout-map
6 Copyright (C) 2010 Tim Teulings
7 Copyright (C) 2017 Lukas Karas
8
9 This library is free software; you can redistribute it and/or
10 modify it under the terms of the GNU Lesser General Public
11 License as published by the Free Software Foundation; either
12 version 2.1 of the License, or (at your option) any later version.
13
14 This library is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 Lesser General Public License for more details.
18
19 You should have received a copy of the GNU Lesser General Public
20 License along with this library; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 */
23
25
26#include <osmscout/util/Time.h>
28#include <osmscout/GeoCoord.h>
29
30#include <QObject>
31
32namespace osmscout {
33
42class OSMSCOUT_CLIENT_QT_API RouteStep : public QObject
43{
44 Q_OBJECT
45 Q_PROPERTY(QString type READ getType NOTIFY update)
46 Q_PROPERTY(double lat READ getLat() NOTIFY update)
47 Q_PROPERTY(double lon READ getLon() NOTIFY update)
48 Q_PROPERTY(double distance READ getDistance NOTIFY update)
49 Q_PROPERTY(double distanceDelta READ getDistanceDelta NOTIFY update)
50 Q_PROPERTY(double distanceTo READ getDistanceTo NOTIFY update)
51 Q_PROPERTY(double time READ getTime NOTIFY update)
52 Q_PROPERTY(double timeDelta READ getTimeDelta NOTIFY update)
53 Q_PROPERTY(QString description READ getDescription NOTIFY update)
54 Q_PROPERTY(QString shortDescription READ getShortDescription NOTIFY update)
55 Q_PROPERTY(QStringList streetNames READ getStreetNames NOTIFY update)
56 Q_PROPERTY(QStringList destinations READ getDestinations NOTIFY update)
57 Q_PROPERTY(int roundaboutExit READ getRoundaboutExit NOTIFY update)
59
60signals:
61 void update();
62
63public:
64 enum Roles {
65 ShortDescriptionRole = Qt::UserRole + 1,
66 DescriptionRole = Qt::UserRole + 2,
67 TypeRole = Qt::UserRole + 3,
68 RoundaboutExitRole = Qt::UserRole + 4,
69 RoundaboutClockwiseRole = Qt::UserRole + 5,
70 latRole = Qt::UserRole + 6,
71 lonRole = Qt::UserRole + 7,
72 distanceRole = Qt::UserRole + 8,
73 distanceDeltaRole = Qt::UserRole + 9,
74 distanceToRole = Qt::UserRole + 10,
75 timeRole = Qt::UserRole + 11,
76 timeDeltaRole = Qt::UserRole + 12,
77 streetNamesRole = Qt::UserRole + 13,
78 destinationsRole = Qt::UserRole + 14
79 };
80 Q_ENUM(Roles)
81
82public:
83 QString type;
84 GeoCoord coord;
85 Distance distance;
86 Distance distanceDelta;
87 Distance distanceTo;
90 QString description;
91 QString shortDescription;
92 QStringList streetNames;
93 QStringList destinations;
94 int roundaboutExit{-1};
95
102 bool roundaboutClockwise{false};
103
104public:
105 inline RouteStep() : RouteStep("", GeoCoord(), Distance::Zero(), Distance::Zero(),
106 Duration::zero(), Duration::zero(),
107 QStringList())
108 {};
109
110 RouteStep(const QString &type,
111 const GeoCoord &coord,
112 const Distance &distance,
113 const Distance &distanceDelta,
114 const Duration &timestamp,
116 const QStringList &streetNames);
117
118 RouteStep(const RouteStep& other);
119
121
122 QString getType() const
123 {
124 return type;
125 };
126
127 GeoCoord GetCoord() const
128 {
129 return coord;
130 }
131
132 double getLat() const
133 {
134 return coord.GetLat();
135 }
136
137 double getLon() const
138 {
139 return coord.GetLon();
140 }
141
142 Distance GetDistance() const
143 {
144 return distance;
145 }
146
147 double getDistance() const
148 {
149 return distance.AsMeter();
150 }
151
152 double getDistanceDelta() const
153 {
154 return distanceDelta.AsMeter();
155 }
156
157 double getDistanceTo() const
158 {
159 return distanceTo.AsMeter();
160 }
161
162 double getTime() const
163 {
165 }
166
167 double getTimeDelta() const
168 {
170 }
171
172 QString getDescription() const
173 {
174 return description;
175 }
176
177 QString getShortDescription() const
178 {
179 return shortDescription;
180 }
181
182 QStringList getStreetNames() const
183 {
184 return streetNames;
185 }
186
187 QStringList getDestinations() const
188 {
189 return destinations;
190 }
191
193 {
194 return roundaboutExit;
195 }
196
198 {
199 return roundaboutClockwise;
200 }
201
202 QVariant data(int role) const;
203
204 static QHash<int, QByteArray> roleNames(QHash<int, QByteArray> roles);
205
206private:
207 void copyDynamicProperties(const RouteStep &other);
208};
209
210}
211
212#endif //OSMSCOUT_CLIENT_QT_ROUTESTEP_H
#define OSMSCOUT_CLIENT_QT_API
Definition ClientQtImportExport.h:45
QString shortDescription
Plain short description (translated already).
Definition RouteStep.h:54
double getLat() const
Definition RouteStep.h:132
double getDistanceDelta() const
Definition RouteStep.h:152
double getDistanceTo() const
Definition RouteStep.h:157
double getDistance() const
Definition RouteStep.h:147
int getRoundaboutExit() const
Definition RouteStep.h:192
double getLon() const
Definition RouteStep.h:137
bool getRoundaboutClockwise() const
Definition RouteStep.h:197
double lat
Definition RouteStep.h:46
QString getDescription() const
Definition RouteStep.h:172
QStringList streetNames
Street names leading to this step.
Definition RouteStep.h:55
QStringList getStreetNames() const
Definition RouteStep.h:182
Duration timestampDelta
Estimate time from previous route step.
Definition RouteStep.h:89
QString getShortDescription() const
Definition RouteStep.h:177
RouteStep()
Definition RouteStep.h:105
Distance GetDistance() const
Definition RouteStep.h:142
double distanceDelta
Definition RouteStep.h:49
Duration timestamp
Estimate time from route start.
Definition RouteStep.h:88
double distanceTo
Definition RouteStep.h:50
RouteStep & operator=(const RouteStep &other)
double time
Definition RouteStep.h:51
double getTime() const
Definition RouteStep.h:162
QStringList getDestinations() const
Definition RouteStep.h:187
QVariant data(int role) const
updatedouble lon
Definition RouteStep.h:47
Roles
Definition RouteStep.h:64
@ destinationsRole
Definition RouteStep.h:78
@ distanceToRole
Definition RouteStep.h:74
@ distanceDeltaRole
Definition RouteStep.h:73
@ DescriptionRole
Definition RouteStep.h:66
@ lonRole
Definition RouteStep.h:71
@ timeRole
Definition RouteStep.h:75
@ TypeRole
Definition RouteStep.h:67
@ ShortDescriptionRole
Definition RouteStep.h:65
@ timeDeltaRole
Definition RouteStep.h:76
@ RoundaboutExitRole
Definition RouteStep.h:68
@ RoundaboutClockwiseRole
Definition RouteStep.h:69
@ latRole
Definition RouteStep.h:70
@ distanceRole
Definition RouteStep.h:72
@ streetNamesRole
Definition RouteStep.h:77
QString getType() const
Definition RouteStep.h:122
RouteStep(const RouteStep &other)
static QHash< int, QByteArray > roleNames(QHash< int, QByteArray > roles)
QString description
Formatted (html) verbose description (translated already).
Definition RouteStep.h:53
QString type
Type of route step.
Definition RouteStep.h:45
double timeDelta
Definition RouteStep.h:52
GeoCoord coord
Position.
Definition RouteStep.h:84
RouteStep(const QString &type, const GeoCoord &coord, const Distance &distance, const Distance &distanceDelta, const Duration &timestamp, const Duration &timestampDelta, const QStringList &streetNames)
updatedouble distance
Definition RouteStep.h:48
QStringList destinations
Destinations, visible on road sign usually.
Definition RouteStep.h:56
bool roundaboutClockwise
Definition RouteStep.h:58
GeoCoord GetCoord() const
Definition RouteStep.h:127
int roundaboutExit
when type is "leave-roundabout" this property indicate number of exit
Definition RouteStep.h:57
double getTimeDelta() const
Definition RouteStep.h:167
Definition Area.h:39
Timestamp::duration Duration
Definition Time.h:29
double DurationAsSeconds(Duration duration)
Definition Time.h:33