navit 0.5.3-trunk
Loading...
Searching...
No Matches
navitProxy.h
Go to the documentation of this file.
1#ifndef NAVIT_GUI_QML_NAVIT_H
2#define NAVIT_GUI_QML_NAVIT_H
3
4void __setNewPoint(struct gui_priv *this_, struct coord *c, NGQPointTypes type);
5
6class NGQProxyNavit : public NGQProxy {
7 Q_OBJECT;
8
9 public:
10 NGQProxyNavit(struct gui_priv *object, QObject *parent) : NGQProxy(object, parent) {};
11
12 public slots:
13 void quit() {
14 struct attr navit;
15 navit.type = attr_navit;
16 navit.u.navit = this->object->nav;
17 navit_destroy(navit.u.navit);
19 }
20 void setObjectByName(const QString &attr_name, const QString &attr_value) {
21 if (attr_name == "layout") {
22 navit_set_layout_by_name(this->object->nav, attr_value.toStdString().c_str());
23 }
24 if (attr_name == "vehicle") {
25 navit_set_vehicle_by_name(this->object->nav, attr_value.toStdString().c_str());
26 }
27 return;
28 }
29 QString getAttrList(const QString &attr_name) {
30 struct attr attr;
31 struct attr_iter *iter;
32 int counter = 0;
33 QString currentValue;
34 QDomDocument retDoc;
35 QDomElement entries;
36
37 entries = retDoc.createElement("attributes");
38 retDoc.appendChild(entries);
39
40 // Find current value
41 getAttrFunc(attr_from_name(attr_name.toStdString().c_str()), &attr, NULL);
42 if (attr.type == attr_layout) {
43 currentValue = attr.u.layout->name;
44 }
45
46 // Fill da list
47 iter = getIterFunc();
48 if (iter == NULL) {
49 return QString();
50 }
51
52 while (getAttrFunc(attr_from_name(attr_name.toStdString().c_str()), &attr, iter)) {
53 QStandardItem *curItem = new QStandardItem();
54 // Listed attributes are usualy have very complex structure
55 if (attr.type == attr_layout) {
56 curItem->setData(QVariant(counter), NGQStandardItemModel::ItemId);
57 curItem->setData(QVariant(attr.u.layout->name), NGQStandardItemModel::ItemName);
58 curItem->setData(QVariant(attr.u.layout->name), NGQStandardItemModel::ItemValue);
59 if (currentValue == attr.u.layout->name) {
60 this->_itemId = counter;
61 }
62 }
63 if (attr.type == attr_vehicle) {
64 QStandardItem *curItem = new QStandardItem();
65 QDomElement entry = retDoc.createElement("vehicle");
66 entries.appendChild(entry);
67
68 this->object->currVehicle = attr.u.vehicle;
69 curItem->setData(QVariant(this->object->vehicleProxy->getAttr("name")), NGQStandardItemModel::ItemName);
70 entry.appendChild(this->_fieldValueHelper(retDoc, QString("id"), QString::number(counter)));
71 entry.appendChild(this->_fieldValueHelper(retDoc, QString("name"),
72 QString(this->object->vehicleProxy->getAttr("name"))));
73
74 // Detecting current vehicle
75 struct attr vehicle_attr;
76 navit_get_attr(this->object->nav, attr_vehicle, &vehicle_attr, NULL);
77 if (vehicle_attr.u.vehicle == attr.u.vehicle) {
78 this->_itemId = counter;
79 }
80 }
81 counter++;
82 }
83
84 dropIterFunc(iter);
85
86 dbg(lvl_debug, QString::number(_itemId).toStdString().c_str(), NULL);
87
88 return retDoc.toString();
89 }
90 QString getDestination() {
91 struct attr attr;
92 struct coord c;
93
94 if (getAttrFunc(attr_destination, &attr, NULL)) {
95 c.x = attr.u.pcoord->x;
96 c.y = attr.u.pcoord->y;
97 __setNewPoint(this->object, &c, Destination);
98 return this->object->currentPoint->pointName();
99 }
100 return QString();
101 }
103 navit_set_destination(this->object->nav, this->object->currentPoint->pc(),
104 this->object->currentPoint->coordString().toStdString().c_str(), 1);
105 }
107 navit_set_destination(this->object->nav, NULL, NULL, 0);
108 }
109 QString getPosition() {
110 struct attr attr;
111 struct pcoord pc;
112 struct coord c;
113 struct transformation *trans;
114
115 trans = navit_get_trans(this->object->nav);
116
117 getAttrFunc(attr_vehicle, &attr, NULL);
118 this->object->currVehicle = attr.u.vehicle;
119
120 if (vehicle_get_attr(this->object->currVehicle, attr_position_coord_geo, &attr, NULL)) {
121 pc.pro = transform_get_projection(trans);
123 __setNewPoint(this->object, &c, Position);
124 return this->object->currentPoint->pointName();
125 }
126 return QString();
127 }
128 void setPosition() {
129 navit_set_position(this->object->nav, this->object->currentPoint->pc());
130 }
131 void setCenter() {
132 navit_set_center(this->object->nav, this->object->currentPoint->pc(), 1);
133 }
134 void command(QString command) {
135 struct attr navit;
136 navit.type = attr_navit;
137 navit.u.navit = this->object->nav;
138 command_evaluate(&navit, command.toLocal8Bit().constData());
139 }
140
141 protected:
142 int getAttrFunc(enum attr_type type, struct attr *attr, struct attr_iter *iter) {
143 return navit_get_attr(this->object->nav, type, attr, iter);
144 }
145 int setAttrFunc(struct attr *attr) {
146 return navit_set_attr(this->object->nav, attr);
147 }
149 return navit_attr_iter_new(NULL);
150 };
151 void dropIterFunc(struct attr_iter *iter) {
153 };
154
155 private:
156};
157
158#include "navitProxy.moc"
159
160#endif /* NAVIT_GUI_QML_NAVITPROXY_H */
enum attr_type attr_from_name(const char *name)
Converts a string to an attr_type.
Definition attr.c:92
attr_type
Definition attr_type_def.h:11
Definition navitProxy.h:6
QString getAttrList(const QString &attr_name)
Definition navitProxy.h:29
QString getDestination()
Definition navitProxy.h:90
struct attr_iter * getIterFunc()
Definition navitProxy.h:148
void setPosition()
Definition navitProxy.h:128
void quit()
Definition navitProxy.h:13
void dropIterFunc(struct attr_iter *iter)
Definition navitProxy.h:151
void command(QString command)
Definition navitProxy.h:134
void stopNavigation()
Definition navitProxy.h:106
int getAttrFunc(enum attr_type type, struct attr *attr, struct attr_iter *iter)
Definition navitProxy.h:142
NGQProxyNavit(struct gui_priv *object, QObject *parent)
Definition navitProxy.h:10
QString getPosition()
Definition navitProxy.h:109
int setAttrFunc(struct attr *attr)
Definition navitProxy.h:145
void setObjectByName(const QString &attr_name, const QString &attr_value)
Definition navitProxy.h:20
void setCenter()
Definition navitProxy.h:131
void setDestination()
Definition navitProxy.h:102
Definition proxy.h:28
QString getAttr(const QString &attr_name)
Definition proxy.h:43
struct gui_priv * object
Definition proxy.h:98
int _itemId
Definition proxy.h:100
QDomElement _fieldValueHelper(QDomDocument doc, QString field, QString value)
Definition proxy.h:111
@ ItemName
Definition proxy.h:18
@ ItemValue
Definition proxy.h:21
@ ItemId
Definition proxy.h:17
void command_evaluate(struct attr *attr, const char *expr)
Definition command.c:1582
@ lvl_debug
Definition debug.h:52
#define dbg(level,...)
Definition debug.h:59
void event_main_loop_quit(void)
Definition event.c:52
char type[3]
Definition garmin_img.c:2
struct transformation * navit_get_trans(struct navit *this_)
Definition navit.c:3524
void navit_set_center(struct navit *this_, struct pcoord *center, int set_timeout)
Definition navit.c:2346
void navit_attr_iter_destroy(struct attr_iter *iter)
Definition navit.c:3215
void navit_destroy(struct navit *this_)
Definition navit.c:3838
int navit_set_vehicle_by_name(struct navit *n, const char *name)
Definition navit.c:3738
struct attr_iter * navit_attr_iter_new(void *unused)
Definition navit.c:3211
void navit_set_destination(struct navit *this_, struct pcoord *c, const char *description, int async)
Definition navit.c:1627
int navit_set_attr(struct navit *this_, struct attr *attr)
Definition navit.c:2815
int navit_set_layout_by_name(struct navit *n, const char *name)
Definition navit.c:3760
int navit_get_attr(struct navit *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter)
Definition navit.c:2819
void navit_set_position(struct navit *this_, struct pcoord *c)
Definition navit.c:3416
static GtkActionEntry entries[]
Definition gui_gtk_action.c:196
void __setNewPoint(struct gui_priv *this_, struct coord *c, NGQPointTypes type)
Definition guiProxy.h:150
NGQPointTypes
Definition ngqpoint.h:30
@ Position
Definition ngqpoint.h:33
@ Destination
Definition ngqpoint.h:34
static struct pcoord c
Definition popup.c:375
Definition config_.c:47
Definition attr.c:48
Definition attr.h:138
struct coord_geo * coord_geo
Definition attr.h:149
struct navit * navit
Definition attr.h:150
struct vehicle * vehicle
Definition attr.h:153
struct layout * layout
Definition attr.h:154
struct pcoord * pcoord
Definition attr.h:162
union attr::@0 u
enum attr_type type
Definition attr.h:139
Definition coord.h:33
Definition graphics_win32.h:50
class NGQProxyVehicle * vehicleProxy
Definition gui_qml.cpp:76
struct navit * nav
Definition graphics_win32.h:51
struct vehicle * currVehicle
Definition gui_qml.cpp:42
char * name
Definition layout.h:128
Definition navit.c:112
Definition gpx2navit_txt.h:50
Definition coord.h:51
int y
Definition coord.h:54
enum projection pro
Definition coord.h:52
int x
Definition coord.h:53
The parameters needed to transform a map for display.
Definition transform.c:64
enum projection transform_get_projection(struct transformation *this_)
Definition transform.c:706
void transform_from_geo(enum projection pro, const struct coord_geo *g, struct coord *c)
Transform the coordinates of a geographical point from a geographical (lat, long) representation to a...
Definition transform.c:309
int vehicle_get_attr(struct vehicle *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter)
Definition vehicle.c:201