navit  0.5.3-trunk
navitProxy.h
Go to the documentation of this file.
1 #ifndef NAVIT_GUI_QML_NAVIT_H
2 #define NAVIT_GUI_QML_NAVIT_H
3 
4 void __setNewPoint(struct gui_priv* this_,struct coord* c, NGQPointTypes type);
5 
6 class 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  }
102  void setDestination() {
103  navit_set_destination(this->object->nav,this->object->currentPoint->pc(),
104  this->object->currentPoint->coordString().toStdString().c_str(),1);
105  }
106  void stopNavigation() {
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 protected:
141  int getAttrFunc(enum attr_type type, struct attr* attr, struct attr_iter* iter) {
142  return navit_get_attr(this->object->nav, type, attr, iter);
143  }
144  int setAttrFunc(struct attr* attr) {
145  return navit_set_attr(this->object->nav,attr);
146  }
147  struct attr_iter* getIterFunc() {
148  return navit_attr_iter_new(NULL);
149  };
150  void dropIterFunc(struct attr_iter* iter) {
152  };
153 
154 private:
155 
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.h:34
Definition: navitProxy.h:6
QString getAttrList(const QString &attr_name)
Definition: navitProxy.h:29
QString getDestination()
Definition: navitProxy.h:90
void setPosition()
Definition: navitProxy.h:128
void quit()
Definition: navitProxy.h:13
void dropIterFunc(struct attr_iter *iter)
Definition: navitProxy.h:150
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:141
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:144
void setObjectByName(const QString &attr_name, const QString &attr_value)
Definition: navitProxy.h:20
struct attr_iter * getIterFunc()
Definition: navitProxy.h:147
void setCenter()
Definition: navitProxy.h:131
void setDestination()
Definition: navitProxy.h:102
Definition: proxy.h:21
QString getAttr(const QString &attr_name)
Definition: proxy.h:35
struct gui_priv * object
Definition: proxy.h:89
int _itemId
Definition: proxy.h:91
QDomElement _fieldValueHelper(QDomDocument doc, QString field, QString value)
Definition: proxy.h:98
@ ItemName
Definition: proxy.h:16
@ ItemValue
Definition: proxy.h:16
@ ItemId
Definition: proxy.h:16
void command_evaluate(struct attr *attr, const char *expr)
Definition: command.c:1463
@ 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
void navit_set_center(struct navit *this_, struct pcoord *center, int set_timeout)
Definition: navit.c:2346
struct transformation * navit_get_trans(struct navit *this_)
Definition: navit.c:3501
struct attr_iter * navit_attr_iter_new(void *unused)
Definition: navit.c:3188
void navit_attr_iter_destroy(struct attr_iter *iter)
Definition: navit.c:3192
void navit_destroy(struct navit *this_)
Definition: navit.c:3792
int navit_set_vehicle_by_name(struct navit *n, const char *name)
Definition: navit.c:3692
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:2792
int navit_set_layout_by_name(struct navit *n, const char *name)
Definition: navit.c:3714
int navit_get_attr(struct navit *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter)
Definition: navit.c:2796
void navit_set_position(struct navit *this_, struct pcoord *c)
Definition: navit.c:3393
static GtkActionEntry entries[]
Definition: gui_gtk_action.c:196
void __setNewPoint(struct gui_priv *this_, struct coord *c, NGQPointTypes type)
Definition: guiProxy.h:143
NGQPointTypes
Definition: ngqpoint.h:32
@ Position
Definition: ngqpoint.h:32
@ Destination
Definition: ngqpoint.h:32
static struct pcoord c
Definition: popup.c:375
Definition: config_.c:47
void * iter
Definition: config_.c:48
Definition: attr.c:48
Definition: attr.h:157
struct coord_geo * coord_geo
Definition: attr.h:168
struct navit * navit
Definition: attr.h:169
struct vehicle * vehicle
Definition: attr.h:172
struct layout * layout
Definition: attr.h:173
struct pcoord * pcoord
Definition: attr.h:181
union attr::@0 u
enum attr_type type
Definition: attr.h:158
Definition: coord.h:34
Definition: graphics_win32.h:52
class NGQProxyVehicle * vehicleProxy
Definition: gui_qml.cpp:76
struct navit * nav
Definition: graphics_win32.h:53
struct vehicle * currVehicle
Definition: gui_qml.cpp:42
char * name
Definition: layout.h:117
Definition: navit.c:112
Definition: gpx2navit_txt.h:51
Definition: coord.h:52
int y
Definition: coord.h:55
enum projection pro
Definition: coord.h:53
int x
Definition: coord.h:54
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:212