summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxenos1984 <xenos1984@ffa7fe5e-494d-0410-b361-a75ebd5db220>2013-06-01 05:48:15 +0000
committerxenos1984 <xenos1984@ffa7fe5e-494d-0410-b361-a75ebd5db220>2013-06-01 05:48:15 +0000
commitebd28ac2414465df38344305fa3bd8648cca3f15 (patch)
tree0f75e9a892f3bd8912dae89a0219f87aad4a1558
parent83fc0dba6526ceabd4d13674aa8966cca6d897f9 (diff)
downloadnavit-ebd28ac2414465df38344305fa3bd8648cca3f15.tar.gz
Fix:gui/internal:Load POI icon from icon_src field for custom POIs.
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@5523 ffa7fe5e-494d-0410-b361-a75ebd5db220
-rw-r--r--navit/navit/gui/internal/gui_internal_poi.c28
1 files changed, 23 insertions, 5 deletions
diff --git a/navit/navit/gui/internal/gui_internal_poi.c b/navit/navit/gui/internal/gui_internal_poi.c
index 537fc934e..86a64b012 100644
--- a/navit/navit/gui/internal/gui_internal_poi.c
+++ b/navit/navit/gui/internal/gui_internal_poi.c
@@ -84,9 +84,10 @@ struct selector selectors[]={
*/
static struct graphics_image *
-gui_internal_poi_icon(struct gui_priv *this, enum item_type type)
+gui_internal_poi_icon(struct gui_priv *this, struct item *item)
{
struct attr layout;
+ struct attr icon_src;
GList *layer;
navit_get_attr(this->nav, attr_layout, &layout, NULL);
layer=layout.u.layout->layers;
@@ -95,15 +96,32 @@ gui_internal_poi_icon(struct gui_priv *this, enum item_type type)
while(itemgra) {
GList *types=((struct itemgra *)itemgra->data)->type;
while(types) {
- if((long)types->data==type) {
+ if((long)types->data==item->type) {
GList *element=((struct itemgra *)itemgra->data)->elements;
while(element) {
struct element * el=element->data;
if(el->type==element_icon) {
+ char *src;
+ char *icon;
struct graphics_image *img;
- char *icon=g_strdup(el->u.icon.src);
+ if(item_is_custom_poi(*item)) {
+ struct map_rect *mr=map_rect_new(item->map, NULL);
+ item=map_rect_get_item_byid(mr, item->id_hi, item->id_lo);
+ if(item_attr_get(item, attr_icon_src, &icon_src)) {
+ src=el->u.icon.src;
+ if(!src || !src[0])
+ src="%s";
+ icon=g_strdup_printf(src,icon_src.u.str);
+ }
+ else {
+ icon=g_strdup(el->u.icon.src);
+ }
+ }
+ else {
+ icon=g_strdup(el->u.icon.src);
+ }
char *dot=g_strrstr(icon,".");
- dbg(2,"%s %s\n", item_to_name(type),icon);
+ dbg(2,"%s %s\n", item_to_name(item->type),icon);
if(dot)
*dot=0;
img=image_new_xs(this,icon);
@@ -310,7 +328,7 @@ gui_internal_cmd_pois_item(struct gui_priv *this, struct coord *center, struct i
type=item_to_name(item->type);
- icon=gui_internal_poi_icon(this,item->type);
+ icon=gui_internal_poi_icon(this,item);
if(!icon) {
icon=image_new_xs(this,"gui_inactive");
text=g_strdup_printf("%s%s%s%s %s", distbuf, dirbuf, routedistbuf, type, name);