navit 0.5.3-trunk
Loading...
Searching...
No Matches
proxy.h
Go to the documentation of this file.
1#ifndef NAVIT_GUI_QML_PROXY_H
2#define NAVIT_GUI_QML_PROXY_H
3
4class NGQStandardItemModel : public QStandardItemModel {
5 public:
6 NGQStandardItemModel(QObject *parent) : QStandardItemModel(parent) {
7 // Populate role list
10 roleNames.insert(NGQStandardItemModel::ItemIcon, "itemIcon");
11 roleNames.insert(NGQStandardItemModel::ItemPath, "itemPath");
12 roleNames.insert(NGQStandardItemModel::ItemValue, "itemValue");
13 this->setRoleNames(roleNames);
14 }
15
16 enum listRoles {
17 ItemId = Qt::UserRole + 1,
18 ItemName = Qt::UserRole + 2,
19 ItemIcon = Qt::UserRole + 3,
20 ItemPath = Qt::UserRole + 4,
21 ItemValue = Qt::UserRole + 5
22 };
23
24 private:
25 QHash<int, QByteArray> roleNames;
26};
27
28class NGQProxy : public QObject {
29 Q_OBJECT;
30
31 Q_PROPERTY(int itemId READ itemId NOTIFY itemIdSignal);
32
33 public:
34 NGQProxy(struct gui_priv *this_, QObject *parent) : QObject(parent) {
35 this->object = this_;
36 }
37
38 signals:
40
41 public slots:
42 // Attribute read/write
43 QString getAttr(const QString &attr_name) {
44 QString ret;
45 struct attr attr;
46
47 getAttrFunc(attr_from_name(attr_name.toStdString().c_str()), &attr, NULL);
48 if (ATTR_IS_INT(attr.type)) {
49 ret.setNum(attr.u.num);
50 }
52 ret.setNum(*attr.u.numd);
53 }
55 ret = attr.u.str;
56 }
57 if (attr.type == attr_layout) {
58 ret = attr.u.layout->name;
59 }
60 return ret;
61 }
62 void setAttr(const QString &attr_name, const QString &attr_string) {
63 struct attr attr_value;
64 double *helper;
65
66 dbg(lvl_debug, "Setting %s to %s", attr_name.toStdString().c_str(), attr_string.toStdString().c_str());
67 getAttrFunc(attr_from_name(attr_name.toStdString().c_str()), &attr_value, NULL);
68
69 if (ATTR_IS_INT(attr_value.type)) {
70 // Special handling for "true"/"false"
71 if (attr_string == "true") {
72 attr_value.u.num = 1;
73 } else if (attr_string == "false") {
74 attr_value.u.num = 0;
75 } else {
76 attr_value.u.num = attr_string.toInt();
77 }
78 }
79 if (ATTR_IS_DOUBLE(attr_value.type)) {
80 helper = g_new0(double, 1);
81 *helper = attr_string.toDouble();
82 attr_value.u.numd = helper;
83 }
84 if (ATTR_IS_STRING(attr_value.type)) {
85 attr_value.u.str = (char *)attr_string.toStdString().c_str();
86 }
87
88 setAttrFunc(&attr_value);
89
90 return;
91 }
92
93 int itemId() {
94 return _itemId;
95 }
96
97 protected:
99
101
102 virtual int setAttrFunc(struct attr *attr) = 0;
103 virtual int getAttrFunc(enum attr_type type, struct attr *attr, struct attr_iter *iter) = 0;
104 virtual struct attr_iter *getIterFunc() {
105 return NULL;
106 };
107 virtual void dropIterFunc(struct attr_iter *) {
108 return;
109 };
110
111 QDomElement _fieldValueHelper(QDomDocument doc, QString field, QString value) {
112 QDomElement fieldTag = doc.createElement(field);
113 QDomText valueText = doc.createTextNode(value);
114 fieldTag.appendChild(valueText);
115 return fieldTag;
116 }
117};
118
119#include "proxy.moc"
120
121#endif /* NAVIT_GUI_QML_PROXY_H */
enum attr_type attr_from_name(const char *name)
Converts a string to an attr_type.
Definition attr.c:92
#define ATTR_IS_DOUBLE(x)
Definition attr.h:120
#define ATTR_IS_INT(x)
Definition attr.h:119
#define ATTR_IS_STRING(x)
Definition attr.h:121
attr_type
Definition attr_type_def.h:11
Definition proxy.h:28
int itemId()
Definition proxy.h:93
void setAttr(const QString &attr_name, const QString &attr_string)
Definition proxy.h:62
int itemId
Definition proxy.h:31
void itemIdSignal(int itemId)
QString getAttr(const QString &attr_name)
Definition proxy.h:43
struct gui_priv * object
Definition proxy.h:98
NGQProxy(struct gui_priv *this_, QObject *parent)
Definition proxy.h:34
virtual int setAttrFunc(struct attr *attr)=0
virtual struct attr_iter * getIterFunc()
Definition proxy.h:104
virtual int getAttrFunc(enum attr_type type, struct attr *attr, struct attr_iter *iter)=0
int _itemId
Definition proxy.h:100
virtual void dropIterFunc(struct attr_iter *)
Definition proxy.h:107
QDomElement _fieldValueHelper(QDomDocument doc, QString field, QString value)
Definition proxy.h:111
Definition proxy.h:4
NGQStandardItemModel(QObject *parent)
Definition proxy.h:6
QHash< int, QByteArray > roleNames
Definition proxy.h:25
listRoles
Definition proxy.h:16
@ ItemPath
Definition proxy.h:20
@ ItemName
Definition proxy.h:18
@ ItemValue
Definition proxy.h:21
@ ItemIcon
Definition proxy.h:19
@ ItemId
Definition proxy.h:17
static GValue value
Definition datawindow.c:42
@ lvl_debug
Definition debug.h:52
#define dbg(level,...)
Definition debug.h:59
char type[3]
Definition garmin_img.c:2
Definition config_.c:47
Definition attr.c:48
Definition attr.h:138
char * str
Definition attr.h:141
struct layout * layout
Definition attr.h:154
double * numd
Definition attr.h:147
union attr::@0 u
enum attr_type type
Definition attr.h:139
long num
Definition attr.h:143
Definition graphics_win32.h:50
char * name
Definition layout.h:128
Definition gpx2navit_txt.h:50