1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
#ifndef NAVITROUTE_H
#define NAVITROUTE_H
#include <QObject>
#include <QDebug>
#include <QTime>
#include <QUrl>
#include "navitinstance.h"
#include <glib.h>
extern "C" {
#include "config.h"
#include "item.h" /* needs to be first, as attr.h depends on it */
#include "navit.h"
#include "coord.h"
#include "attr.h"
#include "xmlconfig.h" // for NAVIT_OBJECT
#include "layout.h"
#include "map.h"
#include "transform.h"
#include "mapset.h"
#include "search.h"
#include "bookmarks.h"
#include "callback.h"
#include "route.h"
#include "navigation.h"
#include "layout.h"
#include "graphics.h"
#include "vehicle.h"
#include "vehicleprofile.h"
#include "roadprofile.h"
#include "track.h"
#include "proxy.h"
}
#include "navithelper.h"
class NavitRoute : public QObject
{
Q_OBJECT
Q_PROPERTY(NavitInstance * navit MEMBER m_navitInstance WRITE setNavit)
Q_PROPERTY(QStringList directions READ getDirections NOTIFY propertiesChanged)
Q_PROPERTY(QString distance READ getDistance NOTIFY propertiesChanged)
Q_PROPERTY(QString timeLeft READ getTimeLeft NOTIFY propertiesChanged)
Q_PROPERTY(QString arrivalTime READ getArrivalTime NOTIFY propertiesChanged)
Q_PROPERTY(QString currentStreet READ getCurrentStreet NOTIFY propertiesChanged)
Q_PROPERTY(int speed READ getSpeed NOTIFY propertiesChanged)
Q_PROPERTY(int speedLimit READ getSpeedLimit NOTIFY propertiesChanged)
Q_PROPERTY(Status status READ getStatus NOTIFY statusChanged)
Q_PROPERTY(QUrl nextTurnIcon READ getNextTurnIcon NOTIFY nextTurnChanged)
Q_PROPERTY(QString nextTurn READ getNextTurn NOTIFY nextTurnChanged)
Q_PROPERTY(QString nextTurnDistance READ getNextTurnDistance NOTIFY nextTurnChanged)
public:
NavitRoute();
void setNavit(NavitInstance * navit);
static void routeCallbackHandler(NavitRoute * navitRoute);
static void destinationCallbackHandler(NavitRoute * navitRoute);
static void statusCallbackHandler(NavitRoute * navitRoute, int status);
void routeUpdate();
void destinationUpdate();
void statusUpdate();
enum Status {
Invalid = status_invalid,
NoRoute = status_no_route,
Idle = status_no_destination,
Calculating = status_calculating,
Recalculating = status_recalculating,
Navigating = status_routing
};
Q_ENUMS(Status)
signals:
void propertiesChanged();
void destinationAdded(QString destination);
void destinationRemoved();
void navigationFinished();
void statusChanged();
void nextTurnChanged();
public slots:
void setDestination(QString label, int x, int y);
void setPosition(int x, int y);
void addStop(QString label, int x, int y, int position);
void cancelNavigation();
private:
NavitInstance *m_navitInstance = nullptr;
QStringList m_directions;
QString m_distance;
QString m_timeLeft;
QString m_arrivalTime;
QString m_currentStreet;
QString m_nextTurn;
QString m_nextTurnDistance;
int m_speed;
int m_speedLimit;
QUrl m_nextTurnIcon;
Status m_status;
QString m_lastDestination;
struct pcoord m_lastDestinationCoord;
int m_destCount;
QString getLastDestination(pcoord *pc);
void updateNextTurn(struct map * map);
QStringList getDirections() {
return m_directions;
}
QString getDistance() {
return m_distance;
}
QString getTimeLeft() {
return m_timeLeft;
}
QString getArrivalTime() {
return m_arrivalTime;
}
QString getCurrentStreet() {
return m_currentStreet;
}
QString getNextTurn() {
return m_nextTurn;
}
QString getNextTurnDistance() {
return m_nextTurnDistance;
}
int getSpeed() {
return m_speed;
}
int getSpeedLimit() {
return m_speedLimit;
}
Status getStatus(){
return m_status;
}
QUrl getNextTurnIcon(){
return m_nextTurnIcon;
}
};
#endif // NAVITROUTE_H
|