#include "command.h"
#include "graphics.h"
#include "vehicle.h"
+#include "map.h"
+#include "mapset.h"
#include "util.h"
char *def_navit="/default_navit";
char *def_graphics="/default_graphics";
char *def_vehicle="/default_vehicle";
+ char *def_mapset="/default_mapset";
+ char *def_map="/default_map";
struct attr attr;
if (strncmp(opath, object_path, strlen(object_path))) {
}
return NULL;
}
+ if (!strncmp(oprefix,def_mapset,strlen(def_mapset))) {
+ oprefix+=strlen(def_mapset);
+ if (navit_get_attr(navit, attr_mapset, &attr, NULL)) {
+ if (!oprefix[0]) {
+ return attr.u.mapset;
+ }
+ if (!strncmp(oprefix,def_map,strlen(def_map))) {
+ if (mapset_get_attr(attr.u.mapset, attr_map, &attr, NULL)) {
+ return attr.u.map;
+ }
+ return NULL;
+ }
+ }
+ return NULL;
+ }
}
return NULL;
}
}
return 0;
}
+ if(attr->type > attr_type_string_begin && attr->type < attr_type_string_end) {
+ if (dbus_message_iter_get_arg_type(&iterattr) == DBUS_TYPE_STRING) {
+ dbus_message_iter_get_basic(&iterattr, &attr->u.str);
+ return 1;
+ }
+ return 0;
+ }
if(attr->type > attr_type_double_begin && attr->type < attr_type_double_end) {
if (dbus_message_iter_get_arg_type(&iterattr) == DBUS_TYPE_DOUBLE) {
attr->u.numd=g_new(typeof(*attr->u.numd),1);
}
static DBusHandlerResult
+request_map_set_attr(DBusConnection *connection, DBusMessage *message)
+{
+ struct map *map;
+ struct attr attr;
+ int ret;
+
+ map = object_get_from_message(message, "map");
+ if (! map)
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ if (decode_attr(message, &attr)) {
+ ret=map_set_attr(map, &attr);
+ destroy_attr(&attr);
+ if (ret)
+ return empty_reply(connection, message);
+ }
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
+
+static DBusHandlerResult
request_navit_set_position(DBusConnection *connection, DBusMessage *message)
{
struct pcoord pc;
{".graphics","get_data", "s", "type", "ay", "data", request_graphics_get_data},
{".graphics","set_attr", "sv", "attribute,value", "", "", request_graphics_set_attr},
{".vehicle","set_attr", "sv", "attribute,value", "", "", request_vehicle_set_attr},
+ {".map","set_attr", "sv", "attribute,value", "", "", request_map_set_attr},
#if 0
{".navit", "toggle_announcer", "", "", "", "", request_navit_toggle_announcer},
{".navit", "toggle_announcer", "i", "", "", "", request_navit_toggle_announcer},
}
if (old) {
new=filter->new;
+ if (!new)
+ return type;
while (new) {
struct filter_entry *entry=new->data;
count+=entry->last-entry->first+1;
}
filters=g_list_next(filters);
}
- return type_none;
+ return type;
}
static void
g_free(m);
}
+static int
+map_filter_set_attr(struct map_priv *m, struct attr *attr)
+{
+ switch (attr->type) {
+ case attr_filter:
+ parse_filters(m,attr->u.str);
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+
static struct map_methods map_methods_filter = {
projection_mg,
"utf-8",
map_filter_rect_get_item_byid,
map_filter_search_new,
map_filter_search_destroy,
- map_filter_search_get_item
+ map_filter_search_get_item,
+ NULL,
+ NULL,
+ map_filter_set_attr,
};