From: Enlightenment S. <no-...@en...> - 2009-10-30 12:35:35
|
Log: Elm menu: do not delete this items Author: watchwolf Date: 2009-10-30 05:26:31 -0700 (Fri, 30 Oct 2009) New Revision: 43347 Modified: trunk/TMP/st/elementary/src/lib/elm_menu.c Modified: trunk/TMP/st/elementary/src/lib/elm_menu.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_menu.c 2009-10-30 12:05:31 UTC (rev 43346) +++ trunk/TMP/st/elementary/src/lib/elm_menu.c 2009-10-30 12:26:31 UTC (rev 43347) @@ -82,7 +82,6 @@ if (item->icon) evas_object_del(item->icon); if (item->hv) evas_object_del(item->hv); if (item->location) evas_object_del(item->location); - if (item->o) evas_object_del(item->o); free(item); } } |
From: Enlightenment S. <no-...@en...> - 2009-10-30 14:10:54
|
Log: Elm toosbar : fix item_label_set(), recalc the min size Author: watchwolf Date: 2009-10-30 07:10:41 -0700 (Fri, 30 Oct 2009) New Revision: 43351 Modified: trunk/TMP/st/elementary/src/lib/elm_toolbar.c Modified: trunk/TMP/st/elementary/src/lib/elm_toolbar.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_toolbar.c 2009-10-30 13:13:21 UTC (rev 43350) +++ trunk/TMP/st/elementary/src/lib/elm_toolbar.c 2009-10-30 14:10:41 UTC (rev 43351) @@ -412,10 +412,19 @@ EAPI void elm_toolbar_item_label_set(Elm_Toolbar_Item *item, const char *label) { + Evas_Coord mw, mh; if (!item) return; eina_stringshare_del(item->label); item->label = eina_stringshare_add(label); edje_object_part_text_set(item->base, "elm.text", item->label); + + mw = mh = -1; + elm_coords_finger_size_adjust(1, &mw, 1, &mh); + edje_object_size_min_restricted_calc(item->base, &mw, &mh, mw, mh); + elm_coords_finger_size_adjust(1, &mw, 1, &mh); + evas_object_size_hint_weight_set(item->base, -1.0, 1.0); + evas_object_size_hint_align_set(item->base, 0.5, -1.0); + evas_object_size_hint_min_set(item->base, mw, mh); } EAPI void |
From: Enlightenment S. <no-...@en...> - 2009-10-30 18:26:10
|
Log: Elm pager: now evas_object_hide work Author: watchwolf Date: 2009-10-30 11:25:57 -0700 (Fri, 30 Oct 2009) New Revision: 43353 Modified: trunk/TMP/st/elementary/src/lib/elm_pager.c Modified: trunk/TMP/st/elementary/src/lib/elm_pager.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_pager.c 2009-10-30 14:30:15 UTC (rev 43352) +++ trunk/TMP/st/elementary/src/lib/elm_pager.c 2009-10-30 18:25:57 UTC (rev 43353) @@ -27,6 +27,7 @@ { Eina_List *stack; Item *top, *oldtop; + Evas_Object *rect; }; struct _Item @@ -180,6 +181,7 @@ Evas_Object *obj2 = it->obj; evas_object_hide(it->base); edje_object_signal_emit(it->base, "elm,action,reset", "elm"); + evas_object_smart_callback_call(obj2, "hide,finished", it->content); edje_object_message_signal_process(it->base); if (it->popme) { @@ -212,6 +214,10 @@ elm_widget_del_hook_set(obj, _del_hook); elm_widget_theme_hook_set(obj, _theme_hook); + wd->rect = evas_object_rectangle_add(e); + elm_widget_resize_object_set(obj, wd->rect); + elm_widget_sub_object_add(obj, wd->rect); + evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _move, obj); evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _resize, obj); @@ -246,6 +252,7 @@ evas_object_geometry_get(obj, &x, &y, &w, &h); evas_object_move(it->base, x, y); evas_object_resize(it->base, w, h); + evas_object_clip_set(it->base, wd->rect); elm_widget_sub_object_add(obj, it->base); elm_widget_sub_object_add(obj, it->content); _elm_theme_set(it->base, "pager", "base", elm_widget_style_get(obj)); |
From: Enlightenment S. <no-...@en...> - 2009-11-01 19:05:12
|
Log: Elm notify : move evas_callback_add to the end, it can prevent some bugs Author: watchwolf Date: 2009-11-01 11:05:00 -0800 (Sun, 01 Nov 2009) New Revision: 43397 Modified: trunk/TMP/st/elementary/src/lib/elm_notify.c Modified: trunk/TMP/st/elementary/src/lib/elm_notify.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_notify.c 2009-11-01 17:05:43 UTC (rev 43396) +++ trunk/TMP/st/elementary/src/lib/elm_notify.c 2009-11-01 19:05:00 UTC (rev 43397) @@ -259,14 +259,14 @@ wd->notify = edje_object_add(e); elm_notify_orient_set(obj, ELM_NOTIFY_ORIENT_TOP); + elm_notify_parent_set(obj, parent); + evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj); evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _resize, obj); evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _resize, obj); evas_object_event_callback_add(obj, EVAS_CALLBACK_SHOW, _show, obj); evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, _hide, obj); - elm_notify_parent_set(obj, parent); - _sizing_eval(obj); return obj; } @@ -298,15 +298,16 @@ if (content) { + wd->content = content; + elm_widget_sub_object_add(obj, content); + edje_object_part_swallow(wd->notify, "elm.swallow.content", content); evas_object_event_callback_add(content, - EVAS_CALLBACK_CHANGED_SIZE_HINTS, - _changed_size_hints, obj); + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); evas_object_event_callback_add(content, - EVAS_CALLBACK_RESIZE, - _content_resize, obj); - wd->content = content; - elm_widget_sub_object_add(obj, content); + EVAS_CALLBACK_RESIZE, + _content_resize, obj); _sizing_eval(obj); } _calc(obj); @@ -347,6 +348,7 @@ if (parent) { + wd->parent = parent; edje_object_part_swallow(wd->notify, "elm.swallow.parent", parent); evas_object_event_callback_add(parent, EVAS_CALLBACK_CHANGED_SIZE_HINTS, @@ -363,7 +365,6 @@ evas_object_event_callback_add(parent, EVAS_CALLBACK_HIDE, _parent_hide, obj); - wd->parent = parent; _sizing_eval(obj); } _calc(obj); |
From: Enlightenment S. <no-...@en...> - 2009-11-09 22:15:38
|
Log: Elementary: add the patch from Dave Andreoli to remove the <br> at the end of the entry. This break a lot of applications but every new applications implement their own fix, it is time to fix it in elm. Author: watchwolf Date: 2009-11-09 14:15:26 -0800 (Mon, 09 Nov 2009) New Revision: 43593 Modified: trunk/TMP/st/elementary/src/lib/elm_entry.c Modified: trunk/TMP/st/elementary/src/lib/elm_entry.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_entry.c 2009-11-09 21:03:59 UTC (rev 43592) +++ trunk/TMP/st/elementary/src/lib/elm_entry.c 2009-11-09 22:15:26 UTC (rev 43593) @@ -13,6 +13,7 @@ Ecore_Event_Handler *sel_clear_handler; Ecore_Timer *longpress_timer; const char *cut_sel; + const char *stripped; Evas_Coord lastw; Evas_Coord downx, downy; Evas_Coord cx, cy, cw, ch; @@ -73,6 +74,7 @@ ecore_event_handler_del(wd->sel_clear_handler); #endif if (wd->cut_sel) eina_stringshare_del(wd->cut_sel); + if (wd->stripped) eina_stringshare_del(wd->stripped); if (wd->deferred_recalc_job) ecore_job_del(wd->deferred_recalc_job); if (wd->longpress_timer) ecore_timer_del(wd->longpress_timer); EINA_LIST_FREE(wd->items, it) @@ -1154,9 +1156,15 @@ elm_entry_entry_get(const Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); + const char *text; if (!wd) return NULL; - return edje_object_part_text_get(wd->ent, "elm.text"); + // Strip ending <br> that is added by the textblock + // need to check if <br> is present? seems it is always there + if (wd->stripped) eina_stringshare_del(wd->stripped); + text = edje_object_part_text_get(wd->ent, "elm.text"); + wd->stripped = eina_stringshare_add_length(text, strlen(text) - 4); + return wd->stripped; } EAPI const char * |
From: Enlightenment S. <no-...@en...> - 2009-11-12 19:24:00
|
Log: Photocam: set the type of the widget Author: watchwolf Date: 2009-11-12 11:23:44 -0800 (Thu, 12 Nov 2009) New Revision: 43633 Modified: trunk/TMP/st/elementary/src/lib/elm_photocam.c Modified: trunk/TMP/st/elementary/src/lib/elm_photocam.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_photocam.c 2009-11-12 17:00:54 UTC (rev 43632) +++ trunk/TMP/st/elementary/src/lib/elm_photocam.c 2009-11-12 19:23:44 UTC (rev 43633) @@ -917,7 +917,7 @@ wd = ELM_NEW(Widget_Data); e = evas_object_evas_get(parent); obj = elm_widget_add(e); - elm_widget_type_set(obj, "genlist"); + elm_widget_type_set(obj, "photocam"); elm_widget_sub_object_add(parent, obj); elm_widget_data_set(obj, wd); elm_widget_del_hook_set(obj, _del_hook); |
From: Enlightenment S. <no-...@en...> - 2009-11-13 18:43:12
|
Log: Elm map: test if http is supported by ecore. Fix a bug in thedownload destination path. Frequently the downloads are never finished, I investigate Author: watchwolf Date: 2009-11-13 10:42:58 -0800 (Fri, 13 Nov 2009) New Revision: 43673 Modified: trunk/TMP/st/elementary/src/lib/elm_map.c Modified: trunk/TMP/st/elementary/src/lib/elm_map.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_map.c 2009-11-13 18:36:08 UTC (rev 43672) +++ trunk/TMP/st/elementary/src/lib/elm_map.c 2009-11-13 18:42:58 UTC (rev 43673) @@ -234,8 +234,9 @@ if(gi->job) { - DBG("DOWNLOAD abort %p", gi); + DBG("DOWNLOAD abort %d", wd->preload_num); ecore_file_download_abort(gi->job); + gi->job = NULL; } free(gi); } @@ -262,7 +263,7 @@ gi->download = EINA_FALSE; gi->job = NULL; - DBG("DOWNLOAD done %p %s", gi, file); + DBG("DOWNLOAD done %d %s", gi->wd->preload_num, file); if (gi->want) { gi->want = EINA_FALSE; @@ -368,10 +369,16 @@ evas_object_smart_callback_call(obj, "loaded,detail", NULL); } evas_object_hide(gi->img); - evas_object_image_preload(gi->img, 1); evas_object_image_file_set(gi->img, NULL, NULL); gi->want = EINA_FALSE; gi->have = EINA_FALSE; + + if(gi->job) + { + DBG("DOWNLOAD abort %d", wd->preload_num); + ecore_file_download_abort(gi->job); + gi->job = NULL; + } } else if (gi->have) { @@ -437,7 +444,6 @@ { char buf[PATH_MAX], buf2[PATH_MAX]; - gi->download = EINA_TRUE; gi->want = EINA_TRUE; snprintf(buf, PATH_MAX, DEST_DIR_PATH, g->zoom, x); @@ -447,12 +453,13 @@ snprintf(buf2, PATH_MAX, DEST_FILE_PATH, buf, y); snprintf(buf, PATH_MAX, SOURCE_PATH, - wd->zoom, x, y); + g->zoom, x, y); if(ecore_file_exists(buf2) || g == eina_list_data_get(wd->grids)) { - DBG("DOWNLOAD %p %s \n\t in %s", gi, buf, buf2); + gi->download = EINA_TRUE; + DBG("DOWNLOAD %d %s \n\t in %s", wd->preload_num, buf, buf2); wd->preload_num++; if (wd->preload_num == 1) { @@ -465,9 +472,9 @@ _tile_downloaded(gi, buf2, EINA_TRUE); else { - ecore_file_download(buf, buf2, _tile_downloaded, _tile_dl_progress, gi, &gi->job); - if(!gi->job) - DBG("ERROR NO JOB !!!!!\n"); + ecore_file_download(buf, buf2, _tile_downloaded, _tile_dl_progress, gi, &(gi->job)); + if(!gi->job) + DBG("Can't start to download %s", buf); } } } @@ -912,6 +919,13 @@ int i; Grid *g; + + if(!ecore_file_download_protocol_available("http://")) + { + ERR("Ecore must be built with the support of HTTP for the widget map !"); + return NULL; + } + wd = ELM_NEW(Widget_Data); e = evas_object_evas_get(parent); obj = elm_widget_add(e); |
From: Enlightenment S. <no-...@en...> - 2009-11-15 21:36:58
|
Log: Elm map : zoom is centred to the coordinate show/bring in. Focus the zoom on a specific geographic coordinate and a classic coordinate (x,y) is not the same because the zoom increase/decrease the precision. Author: watchwolf Date: 2009-11-15 13:36:44 -0800 (Sun, 15 Nov 2009) New Revision: 43717 Modified: trunk/TMP/st/elementary/src/lib/elm_map.c Modified: trunk/TMP/st/elementary/src/lib/elm_map.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_map.c 2009-11-15 20:17:57 UTC (rev 43716) +++ trunk/TMP/st/elementary/src/lib/elm_map.c 2009-11-15 21:36:44 UTC (rev 43717) @@ -144,6 +144,12 @@ Eina_Bool on_hold : 1; Eina_Bool paused : 1; + struct + { + Eina_Bool enabled; + double lon, lat; + } center_on; + Eina_List *markers[19]; Evas_Coord marker_w, marker_h; Evas_Coord marker_max_w, marker_max_h; @@ -751,8 +757,18 @@ elm_smart_scroller_child_viewport_size_get(wd->scr, &ow, &oh); - xx = (wd->size.spos.x * wd->size.w) - (ow / 2); - yy = (wd->size.spos.y * wd->size.h) - (oh / 2); + if(wd->center_on.enabled) + { + elm_map_utils_convert_geo_into_coord(wd->center_on.lon, wd->center_on.lat, wd->size.w, &xx, &yy); + xx -= ow / 2; + yy -= oh / 2; + } + else + { + xx = (wd->size.spos.x * wd->size.w) - (ow / 2); + yy = (wd->size.spos.y * wd->size.h) - (oh / 2); + } + if (xx < 0) xx = 0; else if (xx > (wd->size.w - ow)) xx = wd->size.w - ow; if (yy < 0) yy = 0; @@ -762,7 +778,9 @@ if (wd->calc_job) ecore_job_del(wd->calc_job); wd->calc_job = ecore_job_add(_calc_job, wd); if (t >= 1.0) - return 0; + { + return 0; + } return 1; } @@ -1095,6 +1113,8 @@ static void _scr_drag_start(void *data, Evas_Object *obj, void *event_info) { + Widget_Data *wd = elm_widget_data_get(data); + wd->center_on.enabled = EINA_FALSE; evas_object_smart_callback_call(data, "scroll,drag,start", NULL); } @@ -1114,7 +1134,7 @@ _group_bubble_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) { Marker_Group *group = data; - + if(!evas_object_above_get(group->rect)) return ; evas_object_raise(group->bubble); @@ -1247,7 +1267,7 @@ static void _group_bringin_cb(void *data, Evas_Object *obj, const char *emission, const char *soure) -{ +{ Marker_Group *group = data; double lon, lat; @@ -1685,6 +1705,10 @@ evas_object_smart_callback_call(obj, "zoom,stop", NULL); } elm_smart_scroller_region_bring_in(wd->scr, rx, ry, rw, rh); + + wd->center_on.enabled = EINA_TRUE; + wd->center_on.lon = lon; + wd->center_on.lat = lat; } /** @@ -1719,6 +1743,10 @@ evas_object_smart_callback_call(obj, "zoom,stop", NULL); } elm_smart_scroller_child_region_show(wd->scr, rx, ry, rw, rh); + + wd->center_on.enabled = EINA_TRUE; + wd->center_on.lon = lon; + wd->center_on.lat = lat; } /** |
From: Enlightenment S. <no-...@en...> - 2009-11-17 15:56:11
|
Log: Elm Photocam : Fix the zoom. Author: watchwolf Date: 2009-11-17 07:55:59 -0800 (Tue, 17 Nov 2009) New Revision: 43751 Modified: trunk/TMP/st/elementary/src/lib/elm_map.c trunk/TMP/st/elementary/src/lib/elm_photocam.c Modified: trunk/TMP/st/elementary/src/lib/elm_map.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_map.c 2009-11-17 15:44:11 UTC (rev 43750) +++ trunk/TMP/st/elementary/src/lib/elm_map.c 2009-11-17 15:55:59 UTC (rev 43751) @@ -222,7 +222,6 @@ wd->show.show = EINA_FALSE; elm_smart_scroller_child_region_show(wd->scr, wd->show.x, wd->show.y, wd->show.w, wd->show.h); } - printf("RECT PLACE %d %d\n", gw, gh); } static void @@ -786,7 +785,7 @@ { elm_map_utils_convert_geo_into_coord(wd->center_on.lon, wd->center_on.lat, wd->size.w, &xx, &yy); xx -= ow / 2; - yy -= oh / 2; + yy -= oh / 2; } else { @@ -799,8 +798,6 @@ if (yy < 0) yy = 0; else if (yy > (wd->size.h - oh)) yy = wd->size.h - oh; - printf("ZOOM %d %f %d\n", wd->size.w, wd->size.spos.x, xx); - //elm_smart_scroller_child_region_show(wd->scr, xx, yy, ow, oh); wd->show.show = EINA_TRUE; wd->show.x = xx; wd->show.y = yy; @@ -811,7 +808,6 @@ wd->calc_job = ecore_job_add(_calc_job, wd); if (t >= 1.0) { - printf("ZOOM DONE %d %d\n\n", xx, yy); return 0; } return 1; @@ -1234,7 +1230,7 @@ evas_object_show(group->bx); elm_scroller_content_set(group->sc, group->bx); - + evas_object_event_callback_add(group->sc, EVAS_CALLBACK_RESIZE, _bubble_sc_hits_changed_cb, group); } @@ -1245,7 +1241,7 @@ marker->content = marker->class->func.get(group->wd->obj, marker, marker->data); if(marker->content) - elm_box_pack_end(group->bx, marker->content); + elm_box_pack_end(group->bx, marker->content); } } @@ -1308,7 +1304,7 @@ evas_object_show(group->rect); } -static void + static void _group_bringin_cb(void *data, Evas_Object *obj, const char *emission, const char *soure) { Marker_Group *group = data; @@ -1320,7 +1316,7 @@ elm_map_geo_region_bring_in(group->wd->obj, marker->longitude, marker->latitude); } -static void + static void _group_open_cb(void *data, Evas_Object *obj, const char *emission, const char *soure) { Marker_Group *group = data; @@ -1390,7 +1386,7 @@ evas_object_smart_callback_add(wd->scr, "drag,stop", _scr_drag_stop, obj); evas_object_smart_callback_add(wd->scr, "scroll", _scr_scroll, obj); - elm_smart_scroller_bounce_allow_set(wd->scr, 0, 0); + elm_smart_scroller_bounce_allow_set(wd->scr, 1, 1); wd->obj = obj; @@ -1952,12 +1948,12 @@ group->x-group->w/4, group->y-group->h/4, group->w, group->h)) { group->markers = eina_list_append(group->markers, marker); - + group->sum_x += marker->x[i]; group->sum_y += marker->y[i]; group->x = group->sum_x / eina_list_count(group->markers); group->y = group->sum_y / eina_list_count(group->markers); - + group->w = sizew + sizew/8. * eina_list_count(group->markers); group->h = sizeh + sizew/8. * eina_list_count(group->markers); if(group->w > wd->marker_max_w) group->w = wd->marker_max_w; Modified: trunk/TMP/st/elementary/src/lib/elm_photocam.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_photocam.c 2009-11-17 15:44:11 UTC (rev 43750) +++ trunk/TMP/st/elementary/src/lib/elm_photocam.c 2009-11-17 15:55:59 UTC (rev 43751) @@ -113,6 +113,11 @@ double x, y; } spos; } size; + struct + { + Eina_Bool show : 1; + Evas_Coord x, y ,w ,h; + } show; int tsize; Evas_Object *img; // low res version of image (scale down == 8) int nosmooth; @@ -170,6 +175,12 @@ ox + 0 - px + ax, oy + 0 - py + ay); evas_object_resize(wd->img, gw, gh); + + if(wd->show.show) + { + wd->show.show = EINA_FALSE; + elm_smart_scroller_child_region_show(wd->scr, wd->show.x, wd->show.y, wd->show.w, wd->show.h); + } } static void @@ -553,7 +564,13 @@ else if (xx > (wd->size.w - ow)) xx = wd->size.w - ow; if (yy < 0) yy = 0; else if (yy > (wd->size.h - oh)) yy = wd->size.h - oh; - elm_smart_scroller_child_region_show(wd->scr, xx, yy, ow, oh); + + wd->show.show = EINA_TRUE; + wd->show.x = xx; + wd->show.y = yy; + wd->show.w = ow; + wd->show.h = oh; + if (wd->calc_job) ecore_job_del(wd->calc_job); wd->calc_job = ecore_job_add(_calc_job, wd); if (t >= 1.0) |
From: Enlightenment S. <no-...@en...> - 2009-11-21 22:38:20
|
Log: Elm map : add elm_map_bubbles_close() Author: watchwolf Date: 2009-11-21 14:38:07 -0800 (Sat, 21 Nov 2009) New Revision: 43883 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in trunk/TMP/st/elementary/src/lib/elm_map.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h.in 2009-11-21 19:56:48 UTC (rev 43882) +++ trunk/TMP/st/elementary/src/lib/Elementary.h.in 2009-11-21 22:38:07 UTC (rev 43883) @@ -1036,6 +1036,7 @@ EAPI void elm_map_markers_list_show(Eina_List *markers); EAPI Evas_Object *elm_map_marker_object_get(Elm_Map_Marker *marker); EAPI void elm_map_marker_update(Elm_Map_Marker *marker); + EAPI void elm_map_bubbles_close(Evas_Object *obj); /* smart callbacks called: * "clicked" - when image clicked * "press" - when mouse/finger held down initially on image Modified: trunk/TMP/st/elementary/src/lib/elm_map.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_map.c 2009-11-21 19:56:48 UTC (rev 43882) +++ trunk/TMP/st/elementary/src/lib/elm_map.c 2009-11-21 22:38:07 UTC (rev 43883) @@ -164,6 +164,7 @@ Evas_Coord marker_w, marker_h; Evas_Coord marker_max_w, marker_max_h; int marker_zoom; + Eina_List *opened_bubbles; //opened bubbles, list of Map_Group * }; struct _Pan @@ -186,6 +187,8 @@ static void grid_load(Evas_Object *obj, Grid *g); +static void _group_object_create(Marker_Group *group); +static void _group_object_free(Marker_Group *group); static void _group_open_cb(void *data, Evas_Object *obj, const char *emission, const char *soure); static void _group_bringin_cb(void *data, Evas_Object *obj, const char *emission, const char *soure); static void _group_bubble_create(Marker_Group *group); @@ -253,10 +256,7 @@ { if(group->obj) { - evas_object_del(group->obj); - group->obj = NULL; - group->open = EINA_FALSE; - _group_bubble_free(group); + _group_object_free(group); } } } @@ -291,20 +291,8 @@ && yy-py+ay+oy >= oy && yy-py+ay+oy<= oy+oh) { if(!group->obj) - { - group->obj = edje_object_add(evas_object_evas_get(obj)); - _elm_theme_set(group->obj, "map", "marker", elm_widget_style_get(obj)); + _group_object_create(group); - evas_object_smart_member_add(group->obj, - wd->pan_smart); - elm_widget_sub_object_add(obj, group->obj); - - edje_object_signal_callback_add(group->obj, "open", "elm", _group_open_cb, group); - edje_object_signal_callback_add(group->obj, "bringin", "elm", _group_bringin_cb, group); - if(group->open) - _group_bubble_create(group); - } - if(eina_list_count(group->markers) > 1) { snprintf(buf, PATH_MAX, "%d", eina_list_count(group->markers)); @@ -322,9 +310,7 @@ } else if(group->obj) { - evas_object_del(group->obj); - group->obj = NULL; - _group_bubble_free(group); + _group_object_free(group); } } } @@ -1160,7 +1146,36 @@ evas_object_smart_callback_call(data, "scroll", NULL); } + static void +_group_object_create(Marker_Group *group) +{ + if(group->obj) return ; + + group->wd->opened_bubbles = eina_list_append(group->wd->opened_bubbles, group); + group->obj = edje_object_add(evas_object_evas_get(group->wd->obj)); + _elm_theme_set(group->obj, "map", "marker", elm_widget_style_get(group->wd->obj)); + + evas_object_smart_member_add(group->obj, + group->wd->pan_smart); + elm_widget_sub_object_add(group->wd->obj, group->obj); + + edje_object_signal_callback_add(group->obj, "open", "elm", _group_open_cb, group); + edje_object_signal_callback_add(group->obj, "bringin", "elm", _group_bringin_cb, group); + if(group->open) + _group_bubble_create(group); +} + + static void +_group_object_free(Marker_Group *group) +{ + group->wd->opened_bubbles = eina_list_remove(group->wd->opened_bubbles, group); + evas_object_del(group->obj); + group->obj = NULL; + _group_bubble_free(group); +} + + static void _group_bubble_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) { Marker_Group *group = data; @@ -1184,7 +1199,6 @@ group->wd->obj); elm_widget_sub_object_add(group->wd->obj, group->bubble); - _group_bubble_content_free(group); _group_bubble_content_update(group); @@ -2016,7 +2030,7 @@ Widget_Data *wd = marker->wd; for(i=0; i<=18; i++) - marker->groups[i]->markers = eina_list_remove(marker->groups[i]->markers, marker); + marker->groups[i]->markers = eina_list_remove(marker->groups[i]->markers, marker); if(marker->content && marker->clas->func.del) marker->clas->func.del(marker->wd->obj, marker, marker->data, marker->content); @@ -2169,4 +2183,22 @@ } } +/* + * + * Close all opened bubbles + * + * @param The map object + */ + EAPI void +elm_map_bubbles_close(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + Marker_Group *group; + Eina_List *l, *l_next; + EINA_LIST_FOREACH_SAFE(wd->opened_bubbles, l, l_next, group) + { + _group_object_free(group); + } +} + |
From: Enlightenment S. <no-...@en...> - 2009-11-22 10:15:22
|
Log: Elm map: close the bubble, do not destroy the marker object. Author: watchwolf Date: 2009-11-22 02:15:12 -0800 (Sun, 22 Nov 2009) New Revision: 43893 Modified: trunk/TMP/st/elementary/src/lib/elm_map.c Modified: trunk/TMP/st/elementary/src/lib/elm_map.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_map.c 2009-11-22 10:12:35 UTC (rev 43892) +++ trunk/TMP/st/elementary/src/lib/elm_map.c 2009-11-22 10:15:12 UTC (rev 43893) @@ -1152,7 +1152,6 @@ { if(group->obj) return ; - group->wd->opened_bubbles = eina_list_append(group->wd->opened_bubbles, group); group->obj = edje_object_add(evas_object_evas_get(group->wd->obj)); _elm_theme_set(group->obj, "map", "marker", elm_widget_style_get(group->wd->obj)); @@ -1169,7 +1168,6 @@ static void _group_object_free(Marker_Group *group) { - group->wd->opened_bubbles = eina_list_remove(group->wd->opened_bubbles, group); evas_object_del(group->obj); group->obj = NULL; _group_bubble_free(group); @@ -1192,6 +1190,8 @@ { if(group->bubble) return ; + group->wd->opened_bubbles = eina_list_append(group->wd->opened_bubbles, group); + group->bubble = edje_object_add(evas_object_evas_get(group->obj)); _elm_theme_set(group->bubble, "map", "marker_bubble", elm_widget_style_get(group->wd->obj)); @@ -1295,6 +1295,7 @@ { if(!group->bubble) return ; + group->wd->opened_bubbles = eina_list_remove(group->wd->opened_bubbles, group); evas_object_event_callback_del_full(group->sc, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _bubble_sc_hits_changed_cb, group); evas_object_del(group->bubble); @@ -2198,7 +2199,7 @@ EINA_LIST_FOREACH_SAFE(wd->opened_bubbles, l, l_next, group) { - _group_object_free(group); + _group_bubble_free(group); } } |
From: Enlightenment S. <no-...@en...> - 2009-11-25 13:21:14
|
Log: Elm map: when we delete a marker, if the group is empty -> delete it Author: watchwolf Date: 2009-11-25 05:21:02 -0800 (Wed, 25 Nov 2009) New Revision: 43972 Modified: trunk/TMP/st/elementary/src/lib/elm_map.c Modified: trunk/TMP/st/elementary/src/lib/elm_map.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_map.c 2009-11-25 12:43:27 UTC (rev 43971) +++ trunk/TMP/st/elementary/src/lib/elm_map.c 2009-11-25 13:21:02 UTC (rev 43972) @@ -2031,7 +2031,15 @@ Widget_Data *wd = marker->wd; for(i=0; i<=18; i++) - marker->groups[i]->markers = eina_list_remove(marker->groups[i]->markers, marker); + { + marker->groups[i]->markers = eina_list_remove(marker->groups[i]->markers, marker); + if(eina_list_count(marker->groups[i]->markers) == 0) + { + wd->markers[i] = eina_list_remove(wd->markers[i], marker->groups[i]); + _group_object_free(marker->groups[i]); + free(marker->groups[i]); + } + } if(marker->content && marker->clas->func.del) marker->clas->func.del(marker->wd->obj, marker, marker->data, marker->content); |
From: Enlightenment S. <no-...@en...> - 2009-11-25 20:51:40
|
Log: Elm map: remove warnings Author: watchwolf Date: 2009-11-25 12:51:28 -0800 (Wed, 25 Nov 2009) New Revision: 43990 Modified: trunk/TMP/st/elementary/src/lib/elm_map.c Modified: trunk/TMP/st/elementary/src/lib/elm_map.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_map.c 2009-11-25 20:46:05 UTC (rev 43989) +++ trunk/TMP/st/elementary/src/lib/elm_map.c 2009-11-25 20:51:28 UTC (rev 43990) @@ -178,7 +178,6 @@ static void _del_hook(Evas_Object *obj); static void _theme_hook(Evas_Object *obj); -static void _show_region_hook(void *data, Evas_Object *obj); static void _sizing_eval(Evas_Object *obj); static void _calc_job(void *data); static void grid_place(Evas_Object *obj, Grid *g, Evas_Coord px, Evas_Coord py, Evas_Coord ox, Evas_Coord oy, Evas_Coord ow, Evas_Coord oh); @@ -205,7 +204,6 @@ { Widget_Data *wd = elm_widget_data_get(obj); Evas_Coord ax, ay, gw, gh, hh, ww; - int x, y; evas_object_geometry_get(wd->rect, NULL, NULL, &ww, &hh); @@ -235,9 +233,8 @@ { Widget_Data *wd = elm_widget_data_get(obj); Evas_Coord ax, ay, gw, gh, tx, ty; - Eina_List *l, *l2; + Eina_List *l; Marker_Group *group; - int x, y; int xx, yy, ww, hh; char buf[PATH_MAX]; @@ -458,7 +455,7 @@ if(status) { - DBG("Download failed %s (%d) ", status, gi->file); + DBG("Download failed %s (%d) ", gi->file, status); remove(gi->file); } } @@ -467,7 +464,6 @@ grid_create(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); - int x, y; Grid *g; g = calloc(1, sizeof(Grid)); @@ -831,13 +827,6 @@ return go; } - static void -_mouse_move(void *data, Evas *evas, Evas_Object *obj, void *event_info) -{ - Widget_Data *wd = elm_widget_data_get(data); - Evas_Event_Mouse_Move *ev = event_info; -} - static int _long_press(void *data) { @@ -940,15 +929,6 @@ } static void -_show_region_hook(void *data, Evas_Object *obj) -{ - Widget_Data *wd = elm_widget_data_get(data); - Evas_Coord x, y, w, h; - elm_widget_show_region_get(obj, &x, &y, &w, &h); - elm_smart_scroller_child_region_show(wd->scr, x, y, w, h); -} - - static void _sizing_eval(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -1224,7 +1204,6 @@ { Eina_List *l; Elm_Map_Marker *marker; - Evas_Coord h; int i = 0; if(!group->bubble) return ; @@ -1307,7 +1286,7 @@ static void _group_bubble_place(Marker_Group *group) { - Evas_Coord x, y, w, h; + Evas_Coord x, y, w; Evas_Coord xx, yy, ww, hh; const char *s; @@ -1334,7 +1313,6 @@ _group_bringin_cb(void *data, Evas_Object *obj, const char *emission, const char *soure) { Marker_Group *group = data; - double lon, lat; Elm_Map_Marker *marker = eina_list_data_get(group->markers); if(!marker) return ; @@ -1379,11 +1357,8 @@ Widget_Data *wd; Evas_Coord minw, minh; static Evas_Smart *smart = NULL; - int i; const char *s; - Grid *g; - if(!ecore_file_download_protocol_available("http://")) { ERR("Ecore must be built with the support of HTTP for the widget map !"); @@ -1466,8 +1441,6 @@ _mouse_down, obj); evas_object_event_callback_add(wd->rect, EVAS_CALLBACK_MOUSE_UP, _mouse_up, obj); - evas_object_event_callback_add(wd->rect, EVAS_CALLBACK_MOUSE_MOVE, - _mouse_move, obj); evas_object_smart_member_add(wd->rect, wd->pan_smart); elm_widget_sub_object_add(obj, wd->rect); evas_object_show(wd->rect); @@ -1510,7 +1483,7 @@ Widget_Data *wd = elm_widget_data_get(obj); Eina_List *l; Grid *g, *g_zoom = NULL; - Evas_Coord pw, ph, rx, ry, rw, rh; + Evas_Coord rx, ry, rw, rh; int z; int zoom_changed = 0, started = 0; @@ -1828,7 +1801,6 @@ { Widget_Data *wd = elm_widget_data_get(obj); Evas_Coord sx, sy, sw, sh; - int iw, ih; elm_smart_scroller_child_pos_get(wd->scr, &sx, &sy); elm_smart_scroller_child_viewport_size_get(wd->scr, &sw, &sh); @@ -2095,8 +2067,6 @@ elm_map_markers_list_show(Eina_List *markers) { int zoom; - double minlon = 360, maxlon = -360; - double minlat = 360, maxlat = -360; double lon, lat; Eina_List *l; Elm_Map_Marker *marker, *m_max_lon = NULL, *m_max_lat = NULL, *m_min_lon = NULL, *m_min_lat = NULL; |
From: Enlightenment S. <no-...@en...> - 2009-12-18 17:46:01
|
Log: Elm map : increase the speed when marker are updated Author: watchwolf Date: 2009-12-18 09:45:47 -0800 (Fri, 18 Dec 2009) New Revision: 44549 Modified: trunk/TMP/st/elementary/src/lib/elm_map.c Modified: trunk/TMP/st/elementary/src/lib/elm_map.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_map.c 2009-12-18 17:41:43 UTC (rev 44548) +++ trunk/TMP/st/elementary/src/lib/elm_map.c 2009-12-18 17:45:47 UTC (rev 44549) @@ -162,7 +162,7 @@ Ecore_Job *markers_place_job; Eina_Matrixsparse *markers[19]; - Eina_List *groups_displayed; + Eina_List *cells_displayed; // list of Eina_Matrixsparse_Cell Evas_Coord markers_max_num; Evas_Coord marker_w, marker_h; Evas_Coord marker_max_w, marker_max_h; @@ -204,7 +204,7 @@ static void marker_place(Evas_Object *obj, Grid *g, Evas_Coord px, Evas_Coord py, Evas_Coord ox, Evas_Coord oy, Evas_Coord ow, Evas_Coord oh); static void _bubble_sc_hits_changed_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); -static void +static void rect_place(Evas_Object *obj, Evas_Coord px, Evas_Coord py, Evas_Coord ox, Evas_Coord oy, Evas_Coord ow, Evas_Coord oh) { Widget_Data *wd = elm_widget_data_get(obj); @@ -233,12 +233,13 @@ } } -static void +static void marker_place(Evas_Object *obj, Grid *g, Evas_Coord px, Evas_Coord py, Evas_Coord ox, Evas_Coord oy, Evas_Coord ow, Evas_Coord oh) { Widget_Data *wd = elm_widget_data_get(obj); Evas_Coord ax, ay, gw, gh, tx, ty; Eina_List *l, *l_next, *markers; + Eina_Matrixsparse_Cell *cell; Marker_Group *group; int xx, yy, ww, hh; char buf[PATH_MAX]; @@ -257,46 +258,18 @@ if(wd->zoom != wd->marker_zoom) { - EINA_LIST_FOREACH_SAFE(wd->groups_displayed, l, l_next, group) + EINA_LIST_FREE(wd->cells_displayed, cell) { - if(group->obj) + EINA_LIST_FOREACH_SAFE(eina_matrixsparse_cell_data_get(cell), l, l_next, group) { - _group_object_free(group); + if(group->obj) + _group_object_free(group); } } } wd->marker_zoom = wd->zoom; - //hide groups no more displayed - EINA_LIST_FOREACH_SAFE(wd->groups_displayed, l, l_next, group) - { - xx = group->x; - yy = group->y; - ww = group->w; - hh = group->h; - - if(ww<=0) ww = 1; - if(hh<=0) hh = 1; - - if ((gw != g->w) && (g->w > 0)) - { - tx = xx; - xx = ((long long )gw * xx) / g->w; - ww = (((long long)gw * (tx + ww)) / g->w) - xx; - } - if ((gh != g->h) && (g->h > 0)) - { - ty = yy; - yy = ((long long)gh * yy) / g->h; - hh = (((long long)gh * (ty + hh)) / g->h) - yy; - } - - if(group->obj && - !(xx-px+ax+ox >= ox && xx-px+ax+ox<= ox+ow - && yy-py+ay+oy >= oy && yy-py+ay+oy<= oy+oh)) - _group_object_free(group); - } - + g_xx = wd->pan_x / wd->tsize; if(g_xx < 0) g_xx = 0; @@ -309,10 +282,29 @@ g_hh = oh / wd->tsize + 1; if(g_yy + g_hh >= g->gh) g_hh = g->gh - g_yy - 1; + //hide groups no more displayed + EINA_LIST_FREE(wd->cells_displayed, cell) + { + eina_matrixsparse_cell_position_get(cell, (unsigned long *)&y, (unsigned long *)&x); + if(y < g_yy || y > g_yy + g_hh || x < g_xx || x > g_xx + g_ww) + { + EINA_LIST_FOREACH_SAFE(eina_matrixsparse_cell_data_get(cell), l, l_next, group) + { + if(group->obj) + _group_object_free(group); + } + } + } + for (y = g_yy; y <= g_yy + g_hh; y++) { for (x = g_xx; x <= g_xx + g_ww; x++) { + eina_matrixsparse_cell_idx_get(wd->markers[wd->zoom], y, x, &cell); + if(!cell) + continue ; + wd->cells_displayed = eina_list_append(wd->cells_displayed, cell); + if(!wd->markers[wd->zoom]) continue ; @@ -377,7 +369,7 @@ } } -static void +static void grid_place(Evas_Object *obj, Grid *g, Evas_Coord px, Evas_Coord py, Evas_Coord ox, Evas_Coord oy, Evas_Coord ow, Evas_Coord oh) { Widget_Data *wd = elm_widget_data_get(obj); @@ -430,7 +422,7 @@ eina_iterator_free(it); } -static void +static void grid_clear(Evas_Object *obj, Grid *g) { Widget_Data *wd = elm_widget_data_get(obj); @@ -481,7 +473,7 @@ g->gh = 0; } -static void +static void _tile_update(Grid_Item *gi) { gi->want = EINA_FALSE; @@ -506,7 +498,7 @@ } -static void +static void _tile_downloaded(void *data, const char *file, int status) { Grid_Item *gi = data; @@ -551,7 +543,7 @@ return g; } -static void +static void grid_load(Evas_Object *obj, Grid *g) { Widget_Data *wd = elm_widget_data_get(obj); @@ -743,7 +735,7 @@ } } -static void +static void grid_clearall(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -756,7 +748,7 @@ } } -static void +static void _smooth_update(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -777,7 +769,7 @@ } } -static void +static void _grid_raise(Grid *g) { Eina_Iterator *it = eina_matrixsparse_iterator_new(g->grid); @@ -795,7 +787,7 @@ eina_iterator_free(it); } -static int +static int _scr_timeout(void *data) { Widget_Data *wd = elm_widget_data_get(data); @@ -805,7 +797,7 @@ return 0; } -static void +static void _scr(void *data, Evas_Object *obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(data); @@ -818,7 +810,7 @@ wd->scr_timer = ecore_timer_add(0.5, _scr_timeout, data); } -static int +static int zoom_do(Evas_Object *obj, double t) { Widget_Data *wd = elm_widget_data_get(obj); @@ -863,7 +855,7 @@ return 1; } -static int +static int _zoom_anim(void *data) { Evas_Object *obj = data; @@ -891,7 +883,7 @@ return go; } -static int +static int _long_press(void *data) { Widget_Data *wd = elm_widget_data_get(data); @@ -901,7 +893,7 @@ return 0; } -static void +static void _mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(data); @@ -918,7 +910,7 @@ wd->long_timer = ecore_timer_add(1.0, _long_press, data); } -static void +static void _mouse_up(void *data, Evas *evas, Evas_Object *obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(data); @@ -938,7 +930,7 @@ static Evas_Smart_Class _pan_sc = EVAS_SMART_CLASS_INIT_NULL; -static void +static void _del_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -951,7 +943,7 @@ free(wd); } -static void +static void _del_pre_hook(Evas_Object *obj) { Marker_Group *group; @@ -996,7 +988,7 @@ wd->pan_smart = NULL; } -static void +static void _theme_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -1005,7 +997,7 @@ _sizing_eval(obj); } -static void +static void _sizing_eval(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -1016,7 +1008,7 @@ evas_object_size_hint_max_set(obj, maxw, maxh); } -static void +static void _calc_job(void *data) { Widget_Data *wd = data; @@ -1046,7 +1038,7 @@ evas_object_smart_changed(wd->pan_smart); } -static void +static void _pan_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y) { Pan *sd = evas_object_smart_data_get(obj); @@ -1056,7 +1048,7 @@ evas_object_smart_changed(obj); } -static void +static void _pan_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y) { Pan *sd = evas_object_smart_data_get(obj); @@ -1064,7 +1056,7 @@ if (y) *y = sd->wd->pan_y; } -static void +static void _pan_max_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y) { Pan *sd = evas_object_smart_data_get(obj); @@ -1078,7 +1070,7 @@ if (y) *y = oh; } -static void +static void _pan_child_size_get(Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) { Pan *sd = evas_object_smart_data_get(obj); @@ -1086,7 +1078,7 @@ if (h) *h = sd->wd->minh; } -static void +static void _pan_add(Evas_Object *obj) { Pan *sd; @@ -1101,7 +1093,7 @@ evas_object_smart_data_set(obj, sd); } -static void +static void _pan_del(Evas_Object *obj) { Pan *sd = evas_object_smart_data_get(obj); @@ -1109,7 +1101,7 @@ _pan_sc.del(obj); } -static void +static void _pan_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) { Pan *sd = evas_object_smart_data_get(obj); @@ -1121,7 +1113,7 @@ sd->wd->calc_job = ecore_job_add(_calc_job, sd->wd); } -static void +static void _pan_calculate(Evas_Object *obj) { Pan *sd = evas_object_smart_data_get(obj); @@ -1139,7 +1131,7 @@ } } -static void +static void _hold_on(void *data, Evas_Object *obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(obj); @@ -1147,7 +1139,7 @@ elm_smart_scroller_hold_set(wd->scr, 1); } -static void +static void _hold_off(void *data, Evas_Object *obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(obj); @@ -1155,7 +1147,7 @@ elm_smart_scroller_hold_set(wd->scr, 0); } -static void +static void _freeze_on(void *data, Evas_Object *obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(obj); @@ -1163,7 +1155,7 @@ elm_smart_scroller_freeze_set(wd->scr, 1); } -static void +static void _freeze_off(void *data, Evas_Object *obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(obj); @@ -1171,19 +1163,19 @@ elm_smart_scroller_freeze_set(wd->scr, 0); } -static void +static void _scr_anim_start(void *data, Evas_Object *obj, void *event_info) { evas_object_smart_callback_call(data, "scroll,anim,start", NULL); } -static void +static void _scr_anim_stop(void *data, Evas_Object *obj, void *event_info) { evas_object_smart_callback_call(data, "scroll,anim,stop", NULL); } -static void +static void _scr_drag_start(void *data, Evas_Object *obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(data); @@ -1191,20 +1183,20 @@ evas_object_smart_callback_call(data, "scroll,drag,start", NULL); } -static void +static void _scr_drag_stop(void *data, Evas_Object *obj, void *event_info) { evas_object_smart_callback_call(data, "scroll,drag,stop", NULL); } -static void +static void _scr_scroll(void *data, Evas_Object *obj, void *event_info) { evas_object_smart_callback_call(data, "scroll", NULL); } -static void +static void _group_object_create(Marker_Group *group) { if(group->obj) return ; @@ -1233,11 +1225,9 @@ if(group->open) _group_bubble_create(group); - - group->wd->groups_displayed = eina_list_append(group->wd->groups_displayed, group); } -static void +static void _group_object_free(Marker_Group *group) { if(!group->obj) return ; @@ -1251,11 +1241,9 @@ group->obj = NULL; _group_bubble_free(group); - - group->wd->groups_displayed = eina_list_remove(group->wd->groups_displayed, group); } -static void +static void _group_bubble_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) { Marker_Group *group = data; @@ -1267,7 +1255,7 @@ evas_object_raise(group->rect); } -static void +static void _group_bubble_create(Marker_Group *group) { if(group->bubble) return ; @@ -1301,7 +1289,7 @@ _group_bubble_place(data); } -static void +static void _group_bubble_content_update(Marker_Group *group) { Eina_List *l; @@ -1350,7 +1338,7 @@ } } -static void +static void _group_bubble_content_free(Marker_Group *group) { Eina_List *l; @@ -1371,7 +1359,7 @@ group->sc = NULL; } -static void +static void _group_bubble_free(Marker_Group *group) { if(!group->bubble) return ; @@ -1385,7 +1373,7 @@ _group_bubble_content_free(group); } -static void +static void _group_bubble_place(Marker_Group *group) { Evas_Coord x, y, w; @@ -1411,7 +1399,7 @@ evas_object_show(group->rect); } -static void +static void _group_bringin_cb(void *data, Evas_Object *obj, const char *emission, const char *soure) { Marker_Group *group = data; @@ -1422,7 +1410,7 @@ elm_map_geo_region_bring_in(group->wd->obj, marker->longitude, marker->latitude); } -static void +static void _group_open_cb(void *data, Evas_Object *obj, const char *emission, const char *soure) { Marker_Group *group = data; @@ -2038,7 +2026,7 @@ tabi[1] = tabi[4] = tabi[6] = -1; tabi[2] = tabi[0] = tabi[7] = 0; tabi[3] = tabi[5] = tabi[8] = 1; - + tabj[1] = tabj[2] = tabj[3] = -1; tabj[4] = tabj[0] = tabj[5] = 0; tabj[6] = tabj[7] = tabj[8] = 1; @@ -2067,7 +2055,7 @@ for(j=0, group=NULL; j<9 && !group; j++) { - EINA_LIST_FOREACH(eina_matrixsparse_data_idx_get(wd->markers[i], mpj + tabj[j], mpi + tabi[j]), + EINA_LIST_FOREACH(eina_matrixsparse_data_idx_get(wd->markers[i], mpj + tabj[j], mpi + tabi[j]), l, group) { if(ELM_RECTS_INTERSECT( marker->x[i]-sizew/4, marker->y[i]-sizeh/4, sizew, sizeh, @@ -2285,7 +2273,7 @@ * * @param marker The marker. */ -EAPI void +EAPI void elm_map_marker_update(Elm_Map_Marker *marker) { if(marker->content) |
From: Enlightenment S. <no-...@en...> - 2009-12-18 18:25:09
|
Log: Elm map : fix elm_map_marker_remove() and when a marker is added in a dispalyed group -> update the bubble Author: watchwolf Date: 2009-12-18 10:24:56 -0800 (Fri, 18 Dec 2009) New Revision: 44551 Modified: trunk/TMP/st/elementary/src/lib/elm_map.c Modified: trunk/TMP/st/elementary/src/lib/elm_map.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_map.c 2009-12-18 17:51:35 UTC (rev 44550) +++ trunk/TMP/st/elementary/src/lib/elm_map.c 2009-12-18 18:24:56 UTC (rev 44551) @@ -2033,8 +2033,8 @@ for (i=0; i<=18; i++) { - int sizew = wd->marker_w;; - int sizeh = wd->marker_h;; + int sizew = wd->marker_w; + int sizeh = wd->marker_h; if(sizew<=0) sizew = 2; if(sizeh<=0) sizeh = 2; if(sizew > wd->marker_max_w) sizew = wd->marker_max_w; @@ -2073,6 +2073,9 @@ if(group->w > wd->marker_max_w) group->w = wd->marker_max_w; if(group->h > wd->marker_max_h) group->h = wd->marker_max_h; + if(group->bubble) + _group_bubble_content_update(group); + break; } } @@ -2136,6 +2139,26 @@ _group_bubble_free(marker->groups[i]); free(marker->groups[i]); } + else + { + int sizew = wd->marker_w; + int sizeh = wd->marker_h; + if(sizew<=0) sizew = 2; + if(sizeh<=0) sizeh = 2; + if(sizew > wd->marker_max_w) sizew = wd->marker_max_w; + if(sizeh > wd->marker_max_h) sizeh = wd->marker_max_h; + + marker->groups[i]->sum_x -= marker->x[i]; + marker->groups[i]->sum_y -= marker->y[i]; + + marker->groups[i]->x = marker->groups[i]->sum_x / eina_list_count(marker->groups[i]->markers); + marker->groups[i]->y = marker->groups[i]->sum_y / eina_list_count(marker->groups[i]->markers); + + marker->groups[i]->w = sizew + sizew/8. * eina_list_count(marker->groups[i]->markers); + marker->groups[i]->h = sizeh + sizew/8. * eina_list_count(marker->groups[i]->markers); + if(marker->groups[i]->w > wd->marker_max_w) marker->groups[i]->w = wd->marker_max_w; + if(marker->groups[i]->h > wd->marker_max_h) marker->groups[i]->h = wd->marker_max_h; + } } if(marker->content && marker->clas->func.del) |
From: Enlightenment S. <no-...@en...> - 2009-12-18 18:30:38
|
Log: elm map : check if the matrixsparse exits Author: watchwolf Date: 2009-12-18 10:30:28 -0800 (Fri, 18 Dec 2009) New Revision: 44552 Modified: trunk/TMP/st/elementary/src/lib/elm_map.c Modified: trunk/TMP/st/elementary/src/lib/elm_map.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_map.c 2009-12-18 18:24:56 UTC (rev 44551) +++ trunk/TMP/st/elementary/src/lib/elm_map.c 2009-12-18 18:30:28 UTC (rev 44552) @@ -300,14 +300,14 @@ { for (x = g_xx; x <= g_xx + g_ww; x++) { + if(!wd->markers[wd->zoom]) + continue ; + eina_matrixsparse_cell_idx_get(wd->markers[wd->zoom], y, x, &cell); if(!cell) continue ; wd->cells_displayed = eina_list_append(wd->cells_displayed, cell); - if(!wd->markers[wd->zoom]) - continue ; - markers = eina_matrixsparse_data_idx_get(wd->markers[wd->zoom], y, x); int i = 0; |
From: Enlightenment S. <no-...@en...> - 2009-12-20 20:41:09
|
Log: Elm map : add a method to hide the markers of a group's class Author: watchwolf Date: 2009-12-20 12:40:55 -0800 (Sun, 20 Dec 2009) New Revision: 44615 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in trunk/TMP/st/elementary/src/lib/elm_map.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h.in 2009-12-20 19:41:00 UTC (rev 44614) +++ trunk/TMP/st/elementary/src/lib/Elementary.h.in 2009-12-20 20:40:55 UTC (rev 44615) @@ -1110,6 +1110,7 @@ EAPI void elm_map_group_class_data_set(Elm_Map_Group_Class *clas, void *data); EAPI void elm_map_group_class_zoom_displayed_set(Elm_Map_Group_Class *clas, int zoom); EAPI void elm_map_group_class_zoom_grouped_set(Elm_Map_Group_Class *clas, int zoom); + EAPI void elm_map_group_class_hide_set(Evas_Object *obj, Elm_Map_Group_Class *clas, Eina_Bool hide); EAPI Elm_Map_Marker_Class * elm_map_marker_class_new(Evas_Object *obj); EAPI void elm_map_marker_class_style_set(Elm_Map_Marker_Class *clas, const char *style); Modified: trunk/TMP/st/elementary/src/lib/elm_map.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_map.c 2009-12-20 19:41:00 UTC (rev 44614) +++ trunk/TMP/st/elementary/src/lib/elm_map.c 2009-12-20 20:40:55 UTC (rev 44615) @@ -99,6 +99,7 @@ void *data; int zoom_displayed; // display the group if the zoom is >= to zoom_display int zoom_grouped; // group the markers only if the zoom is <= to zoom_groups + Eina_Bool hide : 1; struct { @@ -399,7 +400,8 @@ hh = (((long long)gh * (ty + hh)) / g->h) - yy; } - if(xx-px+ax+ox >= ox && xx-px+ax+ox<= ox+ow + if(!group->clas->hide + && xx-px+ax+ox >= ox && xx-px+ax+ox<= ox+ow && yy-py+ay+oy >= oy && yy-py+ay+oy<= oy+oh) { if(!group->obj) @@ -2598,8 +2600,24 @@ clas->zoom_grouped = zoom; } +EAPI void +elm_map_group_class_hide_set(Evas_Object *obj, Elm_Map_Group_Class *clas, Eina_Bool hide) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if(clas->hide == hide) return ; + clas->hide = hide; + if(wd->grids) + { + Evas_Coord ox, oy, ow, oh; + evas_object_geometry_get(obj, &ox, &oy, &ow, &oh); + marker_place(obj, eina_list_data_get(wd->grids), wd->pan_x, wd->pan_y, ox, oy, ow, oh); + } +} + + + EAPI Elm_Map_Marker_Class * elm_map_marker_class_new(Evas_Object *obj) { |
From: Enlightenment S. <no-...@en...> - 2009-12-21 17:01:26
|
Log: Elm map : * do not display a bubble if the content is empty * use a different temp dir for each map Author: watchwolf Date: 2009-12-21 09:01:19 -0800 (Mon, 21 Dec 2009) New Revision: 44634 Modified: trunk/TMP/st/elementary/src/lib/elm_map.c Modified: trunk/TMP/st/elementary/src/lib/elm_map.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_map.c 2009-12-21 16:39:24 UTC (rev 44633) +++ trunk/TMP/st/elementary/src/lib/elm_map.c 2009-12-21 17:01:19 UTC (rev 44634) @@ -53,7 +53,7 @@ #define SOURCE_PATH "http://tile.openstreetmap.org/%d/%d/%d.png" -#define DEST_DIR_ZOOM_PATH "/tmp/elm_map/%d/" +#define DEST_DIR_ZOOM_PATH "/tmp/elm_map/%d/%d/" #define DEST_DIR_PATH DEST_DIR_ZOOM_PATH"%d/" #define DEST_FILE_PATH "%s%d.png" @@ -251,7 +251,7 @@ static void _group_bubble_free(Marker_Group *group); static void _group_bubble_place(Marker_Group *group); -static void _group_bubble_content_update(Marker_Group *group); +static int _group_bubble_content_update(Marker_Group *group); static void _group_bubble_content_free(Marker_Group *group); static void marker_place(Evas_Object *obj, Grid *g, Evas_Coord px, Evas_Coord py, Evas_Coord ox, Evas_Coord oy, Evas_Coord ow, Evas_Coord oh); static void _bubble_sc_hits_changed_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); @@ -512,7 +512,7 @@ Eina_Iterator *it = eina_matrixsparse_iterator_new(g->grid); Eina_Matrixsparse_Cell *cell; - snprintf(buf, PATH_MAX, DEST_DIR_ZOOM_PATH, g->zoom); + snprintf(buf, PATH_MAX, DEST_DIR_ZOOM_PATH, obj, g->zoom); ecore_file_recursive_rm(buf); EINA_ITERATOR_FOREACH(it, cell) @@ -773,7 +773,7 @@ gi->want = EINA_TRUE; - snprintf(buf, PATH_MAX, DEST_DIR_PATH, g->zoom, x); + snprintf(buf, PATH_MAX, DEST_DIR_PATH, obj, g->zoom, x); if(!ecore_file_exists(buf)) ecore_file_mkpath(buf); @@ -1407,7 +1407,12 @@ elm_widget_sub_object_add(group->wd->obj, group->bubble); _group_bubble_content_free(group); - _group_bubble_content_update(group); + if(!_group_bubble_content_update(group)) + { + //no content, we can delete the bubble + _group_bubble_free(group); + return ; + } group->rect = evas_object_rectangle_add(evas_object_evas_get(group->obj)); evas_object_color_set(group->rect, 0, 0, 0, 0); @@ -1426,14 +1431,14 @@ _group_bubble_place(data); } -static void +static int _group_bubble_content_update(Marker_Group *group) { Eina_List *l; Elm_Map_Marker *marker; int i = 0; - if(!group->bubble) return ; + if(!group->bubble) return 1; if(!group->sc) { @@ -1470,9 +1475,13 @@ elm_box_unpack(group->bx, marker->content); if(marker->content) - elm_box_pack_end(group->bx, marker->content); - i++; + { + elm_box_pack_end(group->bx, marker->content); + i++; + } } + + return i; } static void @@ -2467,21 +2476,18 @@ lat = (m_max_lat->latitude - m_min_lat->latitude) / 2. + m_min_lat->latitude; elm_smart_scroller_child_viewport_size_get(wd->scr, &rw, &rh); - for (zoom = 18; zoom>=0; zoom--) + for (zoom = 18; zoom>0; zoom--) { Evas_Coord size = pow(2.0, zoom)*wd->tsize; elm_map_utils_convert_geo_into_coord(lon, lat, size, &xc, &yc); - if(m_min_lon->x[zoom] - wd->marker_max_w > xc-rw/2 - && m_min_lat->y[zoom] - wd->marker_max_h > yc-rh/2 - && m_max_lon->x[zoom] + wd->marker_max_w < xc+rw/2 - && m_max_lat->y[zoom] + wd->marker_max_h < yc+rh/2) + if(m_min_lon->x[zoom] - wd->marker_max_w >= xc-rw/2 + && m_min_lat->y[zoom] - wd->marker_max_h >= yc-rh/2 + && m_max_lon->x[zoom] + wd->marker_max_w <= xc+rw/2 + && m_max_lat->y[zoom] + wd->marker_max_h <= yc+rh/2) break; } - if(zoom<0) - zoom = 0; - elm_map_geo_region_show(wd->obj, lon, lat); elm_map_zoom_set(wd->obj, zoom); } |
From: Enlightenment S. <no-...@en...> - 2009-12-22 09:34:36
|
Log: Elm slideshow : fix item_del Author: watchwolf Date: 2009-12-22 01:34:29 -0800 (Tue, 22 Dec 2009) New Revision: 44644 Modified: trunk/TMP/st/elementary/src/lib/elm_slideshow.c Modified: trunk/TMP/st/elementary/src/lib/elm_slideshow.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_slideshow.c 2009-12-21 21:00:50 UTC (rev 44643) +++ trunk/TMP/st/elementary/src/lib/elm_slideshow.c 2009-12-22 09:34:29 UTC (rev 44644) @@ -506,7 +506,8 @@ elm_slideshow_show(eina_list_data_get(l2)); } - wd->items = eina_list_remove(wd->items, item); + wd->items = eina_list_remove_list(wd->items, item->l); + wd->items_built = eina_list_remove(wd->items_built, item); if(item->o && item->itc->func.del) item->itc->func.del((void*)item->data, wd->previous->o); |
From: Enlightenment S. <no-...@en...> - 2009-12-22 09:57:51
|
Log: Elm slideshow : resize the next and previous loaded object because if the size is 0 some widget like photocam will load nothing Author: watchwolf Date: 2009-12-22 01:57:35 -0800 (Tue, 22 Dec 2009) New Revision: 44645 Modified: trunk/TMP/st/elementary/src/lib/elm_slideshow.c trunk/TMP/st/elementary/src/lib/els_icon.c Modified: trunk/TMP/st/elementary/src/lib/elm_slideshow.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_slideshow.c 2009-12-22 09:34:29 UTC (rev 44644) +++ trunk/TMP/st/elementary/src/lib/elm_slideshow.c 2009-12-22 09:57:35 UTC (rev 44645) @@ -140,6 +140,7 @@ Elm_Slideshow_Item *_item; Evas_Object *obj = item->obj; Widget_Data *wd = elm_widget_data_get(obj); + Evas_Coord w, h; if(!item->o && item->itc->func.get) { @@ -152,6 +153,8 @@ wd->items_built = eina_list_demote_list(wd->items_built, item->l_built); //we pre built the next and the previous item + evas_object_geometry_get(obj, NULL, NULL, &w, &h); + _item = eina_list_data_get(eina_list_prev(item->l)); if(!_item && wd->loop) _item = eina_list_data_get(eina_list_last(item->l)); @@ -159,6 +162,7 @@ { _item->o = _item->itc->func.get((void*)_item->data, obj); evas_object_hide(_item->o); + evas_object_resize(_item->o, w, h); evas_object_smart_member_add(_item->o, obj); _item->l_built = eina_list_append(NULL, _item); wd->items_built = eina_list_merge(wd->items_built, _item->l_built); @@ -174,9 +178,10 @@ { _item->o = _item->itc->func.get((void*)_item->data, obj); evas_object_hide(_item->o); + evas_object_resize(_item->o, w, h); evas_object_smart_member_add(_item->o, obj); _item->l_built = eina_list_append(NULL, _item); - wd->items_built = eina_list_merge(wd->items_built, _item->l_built); + wd->items_built = eina_list_merge(wd->items_built, _item->l_built); } else if(_item && _item->l_built) wd->items_built = eina_list_demote_list(wd->items_built, _item->l_built); @@ -507,7 +512,7 @@ } wd->items = eina_list_remove_list(wd->items, item->l); - wd->items_built = eina_list_remove(wd->items_built, item); + wd->items_built = eina_list_remove_list(wd->items_built, item->l_built); if(item->o && item->itc->func.del) item->itc->func.del((void*)item->data, wd->previous->o); Modified: trunk/TMP/st/elementary/src/lib/els_icon.c =================================================================== --- trunk/TMP/st/elementary/src/lib/els_icon.c 2009-12-22 09:34:29 UTC (rev 44644) +++ trunk/TMP/st/elementary/src/lib/els_icon.c 2009-12-22 09:57:35 UTC (rev 44645) @@ -4,7 +4,7 @@ typedef struct _Smart_Data Smart_Data; struct _Smart_Data -{ +{ Evas_Coord x, y, w, h; Evas_Object *obj; int size; @@ -12,7 +12,7 @@ unsigned char fill_inside : 1; unsigned char scale_up : 1; unsigned char scale_down : 1; -}; +}; /* local subsystem functions */ static void _smart_reconfigure(Smart_Data *sd); @@ -46,7 +46,7 @@ _els_smart_icon_file_key_set(Evas_Object *obj, const char *file, const char *key) { Smart_Data *sd; - + sd = evas_object_smart_data_get(obj); if (!sd) return 0; /* smart code here */ @@ -80,7 +80,7 @@ _els_smart_icon_smooth_scale_set(Evas_Object *obj, int smooth) { Smart_Data *sd; - + sd = evas_object_smart_data_get(obj); if (!sd) return; if (!strcmp(evas_object_type_get(sd->obj), "edje")) @@ -93,7 +93,7 @@ { Smart_Data *sd; int tw, th; - + sd = evas_object_smart_data_get(obj); if (!sd) return; if (!strcmp(evas_object_type_get(sd->obj), "edje")) @@ -110,7 +110,7 @@ _els_smart_icon_fill_inside_set(Evas_Object *obj, int fill_inside) { Smart_Data *sd; - + sd = evas_object_smart_data_get(obj); if (!sd) return; if (((sd->fill_inside) && (fill_inside)) || @@ -123,7 +123,7 @@ _els_smart_icon_scale_up_set(Evas_Object *obj, int scale_up) { Smart_Data *sd; - + sd = evas_object_smart_data_get(obj); if (!sd) return; if (((sd->scale_up) && (scale_up)) || @@ -136,7 +136,7 @@ _els_smart_icon_scale_down_set(Evas_Object *obj, int scale_down) { Smart_Data *sd; - + sd = evas_object_smart_data_get(obj); if (!sd) return; if (((sd->scale_down) && (scale_down)) || @@ -149,13 +149,13 @@ _els_smart_icon_scale_size_set(Evas_Object *obj, int size) { Smart_Data *sd; - + sd = evas_object_smart_data_get(obj); if (!sd) return; sd->size = size; if (!sd->obj) return; if (!strcmp(evas_object_type_get(sd->obj), "edje")) - return; + return; evas_object_image_load_size_set(sd->obj, sd->size, sd->size); } @@ -163,7 +163,7 @@ _els_smart_icon_scale_set(Evas_Object *obj, double scale) { Smart_Data *sd; - + sd = evas_object_smart_data_get(obj); if (!sd) return; sd->scale = scale; @@ -178,7 +178,7 @@ unsigned int *data, *data2, *to, *from; int x, y, w, hw, iw, ih; const char *file, *key; - + sd = evas_object_smart_data_get(obj); if (!sd) return; if (!strcmp(evas_object_type_get(sd->obj), "edje")) @@ -254,7 +254,7 @@ { int iw, ih; Evas_Coord x, y, w, h; - + if (!sd->obj) return; if (!strcmp(evas_object_type_get(sd->obj), "edje")) { @@ -270,13 +270,13 @@ iw = 0; ih = 0; evas_object_image_size_get(sd->obj, &iw, &ih); - + iw = ((double)iw) * sd->scale; ih = ((double)ih) * sd->scale; - + if (iw < 1) iw = 1; if (ih < 1) ih = 1; - + if (sd->fill_inside) { w = sd->w; @@ -295,7 +295,7 @@ { h = sd->h; w = ((double)iw * h) / (double)ih; - } + } } if (!sd->scale_up) { @@ -352,7 +352,7 @@ _smart_add(Evas_Object *obj) { Smart_Data *sd; - + sd = calloc(1, sizeof(Smart_Data)); if (!sd) return; sd->obj = evas_object_image_add(evas_object_evas_get(obj)); @@ -369,12 +369,12 @@ evas_object_smart_member_add(sd->obj, obj); evas_object_smart_data_set(obj, sd); } - + static void _smart_del(Evas_Object *obj) { Smart_Data *sd; - + sd = evas_object_smart_data_get(obj); if (!sd) return; evas_object_del(sd->obj); @@ -385,7 +385,7 @@ _smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y) { Smart_Data *sd; - + sd = evas_object_smart_data_get(obj); if (!sd) return; if ((sd->x == x) && (sd->y == y)) return; @@ -398,7 +398,7 @@ _smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) { Smart_Data *sd; - + sd = evas_object_smart_data_get(obj); if (!sd) return; if ((sd->w == w) && (sd->h == h)) return; @@ -411,7 +411,7 @@ _smart_show(Evas_Object *obj) { Smart_Data *sd; - + sd = evas_object_smart_data_get(obj); if (!sd) return; evas_object_show(sd->obj); @@ -421,7 +421,7 @@ _smart_hide(Evas_Object *obj) { Smart_Data *sd; - + sd = evas_object_smart_data_get(obj); if (!sd) return; evas_object_hide(sd->obj); @@ -431,7 +431,7 @@ _smart_color_set(Evas_Object *obj, int r, int g, int b, int a) { Smart_Data *sd; - + sd = evas_object_smart_data_get(obj); if (!sd) return; evas_object_color_set(sd->obj, r, g, b, a); @@ -441,7 +441,7 @@ _smart_clip_set(Evas_Object *obj, Evas_Object * clip) { Smart_Data *sd; - + sd = evas_object_smart_data_get(obj); if (!sd) return; evas_object_clip_set(sd->obj, clip); @@ -451,11 +451,11 @@ _smart_clip_unset(Evas_Object *obj) { Smart_Data *sd; - + sd = evas_object_smart_data_get(obj); if (!sd) return; evas_object_clip_unset(sd->obj); -} +} static void _els_smart_icon_flip_horizontal(Smart_Data *sd) @@ -463,7 +463,7 @@ unsigned int *data; unsigned int *p1, *p2, tmp; int x, y, iw, ih; - + evas_object_image_size_get(sd->obj, &iw, &ih); data = evas_object_image_data_get(sd->obj, 1); @@ -492,7 +492,7 @@ unsigned int *data; unsigned int *p1, *p2, tmp; int x, y, iw, ih; - + evas_object_image_size_get(sd->obj, &iw, &ih); data = evas_object_image_data_get(sd->obj, 1); @@ -521,7 +521,7 @@ unsigned int *data; unsigned int *p1, *p2, tmp; int x, hw, iw, ih; - + evas_object_image_size_get(sd->obj, &iw, &ih); data = evas_object_image_data_get(sd->obj, 1); |
From: Enlightenment S. <no-...@en...> - 2009-12-23 09:53:53
|
Log: Elm map : add API to set a custom source Author: watchwolf Date: 2009-12-23 01:53:39 -0800 (Wed, 23 Dec 2009) New Revision: 44678 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in trunk/TMP/st/elementary/src/lib/elm_map.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h.in 2009-12-23 02:14:06 UTC (rev 44677) +++ trunk/TMP/st/elementary/src/lib/Elementary.h.in 2009-12-23 09:53:39 UTC (rev 44678) @@ -1080,7 +1080,14 @@ ELM_MAP_SOURCE_MAPNIK, ELM_MAP_SOURCE_OSMARENDER, ELM_MAP_SOURCE_CYCLEMAP, - ELM_MAP_SOURCE_MAPLINT + ELM_MAP_SOURCE_MAPLINT, + ELM_MAP_SOURCE_CUSTOM_1, + ELM_MAP_SOURCE_CUSTOM_2, + ELM_MAP_SOURCE_CUSTOM_3, + ELM_MAP_SOURCE_CUSTOM_4, + ELM_MAP_SOURCE_CUSTOM_5, + ELM_MAP_SOURCE_CUSTOM_6, + ELM_MAP_SOURCE_CUSTOM_7 } Elm_Map_Sources; typedef struct _Elm_Map_Marker Elm_Map_Marker; typedef struct _Elm_Map_Marker_Class Elm_Map_Marker_Class; @@ -1089,6 +1096,7 @@ typedef void (*ElmMapMarkerDelFunc) (Evas_Object *obj, Elm_Map_Marker *marker, void *data, Evas_Object *o); typedef Evas_Object *(*ElmMapMarkerIconGetFunc) (Evas_Object *obj, Elm_Map_Marker *marker, void *data); typedef Evas_Object *(*ElmMapGroupIconGetFunc) (Evas_Object *obj, void *data); + typedef char *(*ElmMapSourceURLFunc) (int x, int y, int zoom); EAPI Evas_Object *elm_map_add(Evas_Object *parent); EAPI void elm_map_zoom_set(Evas_Object *obj, int zoom); @@ -1130,10 +1138,11 @@ EAPI void elm_map_source_set(Evas_Object *obj, Elm_Map_Sources source); EAPI Elm_Map_Sources elm_map_source_get(Evas_Object *obj); + EAPI void elm_map_source_custom_api_set(Elm_Map_Sources source, const char *label, + int zoom_min, int zoom_max, ElmMapSourceURLFunc url_cb); EAPI int elm_map_source_zoom_min_get(Elm_Map_Sources source); EAPI int elm_map_source_zoom_max_get(Elm_Map_Sources source); EAPI const char * elm_map_source_name_get(Elm_Map_Sources source); - EAPI void elm_map_source_set(Evas_Object *obj, Elm_Map_Sources source); /* smart callbacks called: * "clicked" - when image clicked * "press" - when mouse/finger held down initially on image Modified: trunk/TMP/st/elementary/src/lib/elm_map.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_map.c 2009-12-23 02:14:06 UTC (rev 44677) +++ trunk/TMP/st/elementary/src/lib/elm_map.c 2009-12-23 09:53:39 UTC (rev 44678) @@ -62,14 +62,13 @@ // Map sources // Currently the size of a tile must be 256*256 // and the size of the map must be pow(2.0, z)*tile_size -typedef char *(*MapSourceURLFunc) (int x, int y, int zoom); typedef struct _Map_Sources_Tab { Elm_Map_Sources source; const char *name; int zoom_min; int zoom_max; - MapSourceURLFunc url_cb; + ElmMapSourceURLFunc url_cb; } Map_Sources_Tab; #define ZOOM_MAX 18 @@ -84,6 +83,13 @@ {ELM_MAP_SOURCE_OSMARENDER, "Osmarender", 0, 17, _osmarender_url_cb}, {ELM_MAP_SOURCE_CYCLEMAP, "Cycle Map", 0, 17, _cyclemap_url_cb}, {ELM_MAP_SOURCE_MAPLINT, "Maplint", 12, 16, _maplint_url_cb}, + {ELM_MAP_SOURCE_CUSTOM_1, "Custom 1", 0, 18, NULL}, + {ELM_MAP_SOURCE_CUSTOM_2, "Custom 2", 0, 18, NULL}, + {ELM_MAP_SOURCE_CUSTOM_3, "Custom 3", 0, 18, NULL}, + {ELM_MAP_SOURCE_CUSTOM_4, "Custom 4", 0, 18, NULL}, + {ELM_MAP_SOURCE_CUSTOM_5, "Custom 5", 0, 18, NULL}, + {ELM_MAP_SOURCE_CUSTOM_6, "Custom 6", 0, 18, NULL}, + {ELM_MAP_SOURCE_CUSTOM_7, "Custom 7", 0, 18, NULL} }; // @@ -813,8 +819,8 @@ snprintf(buf2, PATH_MAX, DEST_FILE_PATH, buf, y); source = map_sources_tab[wd->source].url_cb(x, y, g->zoom); - + if(gi->file) eina_stringshare_del(gi->file); gi->file = eina_stringshare_add(buf2); @@ -1746,9 +1752,9 @@ int zoom_changed = 0, started = 0; if (zoom < 0 ) zoom = 0; - if (zoom > map_sources_tab[wd->source].zoom_max) + if (zoom > map_sources_tab[wd->source].zoom_max) zoom = map_sources_tab[wd->source].zoom_max; - if (zoom < map_sources_tab[wd->source].zoom_min) + if (zoom < map_sources_tab[wd->source].zoom_min) zoom = map_sources_tab[wd->source].zoom_min; if (zoom == wd->zoom) return; @@ -2668,7 +2674,7 @@ * * Set the zoom from where the markers are displayed. * - * Markers will not be displayed for a zoom less than @ref zoom + * Markers will not be displayed for a zoom less than @ref zoom * * @param clas the group class * @param zoom the zoom @@ -2692,7 +2698,7 @@ } /* - * Set if the markers associated to the group class @clas are hidden or not. + * Set if the markers associated to the group class @clas are hidden or not. * If @ref hide is true the markers will be hidden. * * @param clas the group class @@ -2818,7 +2824,8 @@ int zoom; if(wd->source == source ) return ; - + if(!map_sources_tab[source].url_cb) return ; + EINA_LIST_FREE(wd->grids, grid) grid_clear(obj, grid); @@ -2850,6 +2857,29 @@ /* * + * Set the API of a custom source. + * + * A custom web service can be associated to the source ELM_MAP_SOURCE_CUSTOM_(1..7). + * + * @param source the source ID (ELM_MAP_SOURCE_CUSTOM_(1..7)) + * @param name the name of the source + * @param zoom_min the minimum zoom of the source, must be >= 0 + * @param zoom_max the maximum zoom of the source, must be <= ZOOM_MAX + * @param url_cb the callback used to create the url from where a tile (png or jpeg file) is downloaded. + */ +EAPI void +elm_map_source_custom_api_set(Elm_Map_Sources source, const char *name, int zoom_min, int zoom_max, ElmMapSourceURLFunc url_cb) +{ + if(!name || !url_cb) return ; + + map_sources_tab[source].name = name; + map_sources_tab[source].zoom_min = zoom_min; + map_sources_tab[source].zoom_max = zoom_max; + map_sources_tab[source].url_cb = url_cb; +} + +/* + * * Get the maximum zoom of the source. * * @param source the source |
From: Enlightenment S. <no-...@en...> - 2009-12-23 17:10:33
|
Log: Elm_Slideshow : add item_data_get() Author: watchwolf Date: 2009-12-23 09:10:18 -0800 (Wed, 23 Dec 2009) New Revision: 44696 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in trunk/TMP/st/elementary/src/lib/elm_slideshow.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h.in 2009-12-23 15:28:03 UTC (rev 44695) +++ trunk/TMP/st/elementary/src/lib/Elementary.h.in 2009-12-23 17:10:18 UTC (rev 44696) @@ -949,6 +949,7 @@ EAPI void elm_slideshow_clear(Evas_Object *obj); EAPI const Eina_List *elm_slideshow_items_get(const Evas_Object *obj); EAPI void elm_slideshow_item_del(Elm_Slideshow_Item *item); + EAPI void * elm_slideshow_item_data_get(Elm_Slideshow_Item *item); EAPI Elm_Slideshow_Item* elm_slideshow_item_current_get(Evas_Object *obj); EAPI Evas_Object* elm_slideshow_item_object_get(Elm_Slideshow_Item* item); /* smart callbacks called: Modified: trunk/TMP/st/elementary/src/lib/elm_slideshow.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_slideshow.c 2009-12-23 15:28:03 UTC (rev 44695) +++ trunk/TMP/st/elementary/src/lib/elm_slideshow.c 2009-12-23 17:10:18 UTC (rev 44696) @@ -565,3 +565,16 @@ return item->o; } +/** + * Returns the data associated to an item + * + * @param item The slideshow item + * @return Returns the data associated to this item + */ +EAPI void * +elm_slideshow_item_data_get(Elm_Slideshow_Item * item) +{ + if (!item) return NULL; + return (void *)item->data; +} + |
From: Enlightenment S. <no-...@en...> - 2009-12-24 10:22:08
|
Log: Elm map : change PATH_MAX by sizeof(buf) in snprintf Author: watchwolf Date: 2009-12-24 02:21:54 -0800 (Thu, 24 Dec 2009) New Revision: 44713 Modified: trunk/TMP/st/elementary/src/lib/elm_map.c Modified: trunk/TMP/st/elementary/src/lib/elm_map.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_map.c 2009-12-24 09:19:22 UTC (rev 44712) +++ trunk/TMP/st/elementary/src/lib/elm_map.c 2009-12-24 10:21:54 UTC (rev 44713) @@ -449,7 +449,7 @@ group->update_nbelems = EINA_FALSE; if(eina_list_count(group->markers) > 1) { - snprintf(buf, PATH_MAX, "%d", eina_list_count(group->markers)); + snprintf(buf, sizeof(buf), "%d", eina_list_count(group->markers)); edje_object_part_text_set(elm_layout_edje_get(group->obj), "elm.text", buf); } else @@ -549,7 +549,7 @@ Eina_Iterator *it = eina_matrixsparse_iterator_new(g->grid); Eina_Matrixsparse_Cell *cell; - snprintf(buf, PATH_MAX, DEST_DIR_ZOOM_PATH, obj, g->zoom); + snprintf(buf, sizeof(buf), DEST_DIR_ZOOM_PATH, obj, g->zoom); ecore_file_recursive_rm(buf); EINA_ITERATOR_FOREACH(it, cell) @@ -812,11 +812,11 @@ gi->want = EINA_TRUE; - snprintf(buf, PATH_MAX, DEST_DIR_PATH, obj, g->zoom, x); + snprintf(buf, sizeof(buf), DEST_DIR_PATH, obj, g->zoom, x); if(!ecore_file_exists(buf)) ecore_file_mkpath(buf); - snprintf(buf2, PATH_MAX, DEST_FILE_PATH, buf, y); + snprintf(buf2, sizeof(buf2), DEST_FILE_PATH, buf, y); source = map_sources_tab[wd->source].url_cb(x, y, g->zoom); @@ -2921,7 +2921,7 @@ static char * _mapnik_url_cb(int x, int y, int zoom) { char buf[PATH_MAX]; - snprintf(buf, PATH_MAX, "http://tile.openstreetmap.org/%d/%d/%d.png", + snprintf(buf, sizeof(buf), "http://tile.openstreetmap.org/%d/%d/%d.png", zoom, x, y); return strdup(buf); } @@ -2929,7 +2929,7 @@ static char * _osmarender_url_cb(int x, int y, int zoom) { char buf[PATH_MAX]; - snprintf(buf, PATH_MAX, "http://tah.openstreetmap.org/Tiles/tile/%d/%d/%d.png", + snprintf(buf, sizeof(buf), "http://tah.openstreetmap.org/Tiles/tile/%d/%d/%d.png", zoom, x, y); return strdup(buf); } @@ -2937,7 +2937,7 @@ static char * _cyclemap_url_cb(int x, int y, int zoom) { char buf[PATH_MAX]; - snprintf(buf, PATH_MAX, "http://andy.sandbox.cloudmade.com/tiles/cycle/%d/%d/%d.png", + snprintf(buf, sizeof(buf), "http://andy.sandbox.cloudmade.com/tiles/cycle/%d/%d/%d.png", zoom, x, y); return strdup(buf); } @@ -2945,7 +2945,7 @@ static char * _maplint_url_cb(int x, int y, int zoom) { char buf[PATH_MAX]; - snprintf(buf, PATH_MAX, "http://tah.openstreetmap.org/Tiles/maplint/%d/%d/%d.png", + snprintf(buf, sizeof(buf), "http://tah.openstreetmap.org/Tiles/maplint/%d/%d/%d.png", zoom, x, y); return strdup(buf); } |
From: Enlightenment S. <no-...@en...> - 2010-02-17 22:49:34
|
Log: Set the content after the content is added as sub object Author: watchwolf Date: 2010-02-17 14:49:27 -0800 (Wed, 17 Feb 2010) New Revision: 46259 Modified: trunk/TMP/st/elementary/src/lib/elm_notify.c Modified: trunk/TMP/st/elementary/src/lib/elm_notify.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_notify.c 2010-02-17 19:50:19 UTC (rev 46258) +++ trunk/TMP/st/elementary/src/lib/elm_notify.c 2010-02-17 22:49:27 UTC (rev 46259) @@ -163,6 +163,7 @@ } evas_object_resize(wd->notify, minw, minh); } + _sizing_eval(obj); } static int @@ -294,15 +295,15 @@ if (content) { + elm_widget_sub_object_add(obj, content); wd->content = content; - elm_widget_sub_object_add(obj, content); - evas_object_event_callback_add(content, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints, obj); evas_object_event_callback_add(content, EVAS_CALLBACK_RESIZE, _content_resize, obj); edje_object_part_swallow(wd->notify, "elm.swallow.content", content); + _sizing_eval(obj); } _calc(obj); @@ -376,7 +377,7 @@ break; case ELM_NOTIFY_ORIENT_CENTER: _elm_theme_set(wd->notify, "notify", "base", "center"); - break; + break; case ELM_NOTIFY_ORIENT_BOTTOM: _elm_theme_set(wd->notify, "notify", "base", "bottom"); break; |
From: Enlightenment S. <no-...@en...> - 2010-06-23 17:58:14
|
Log: elm_notify: recalc everything if the size hint change Author: watchwolf Date: 2010-06-23 10:58:08 -0700 (Wed, 23 Jun 2010) New Revision: 49820 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in trunk/TMP/st/elementary/src/lib/elm_notify.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-06-23 15:51:20 UTC (rev 49819) +++ trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-06-23 17:58:08 UTC (rev 49820) @@ -1473,7 +1473,6 @@ * TODO * * Update the minimun height of the bar in the theme. No minimun should be set in the vertical theme - * Add horyzontal theme * Add events (move, start ...) */ EAPI Evas_Object *elm_panes_add(Evas_Object *parent); Modified: trunk/TMP/st/elementary/src/lib/elm_notify.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_notify.c 2010-06-23 15:51:20 UTC (rev 49819) +++ trunk/TMP/st/elementary/src/lib/elm_notify.c 2010-06-23 17:58:08 UTC (rev 49820) @@ -92,7 +92,7 @@ static void _changed_size_hints(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { - _sizing_eval(data); + _calc(data); } static void @@ -101,6 +101,7 @@ Widget_Data *wd = elm_widget_data_get(obj); Evas_Object *sub = event_info; if (!wd) return; + if (sub == wd->content) { evas_object_event_callback_del_full(sub, EVAS_CALLBACK_CHANGED_SIZE_HINTS, @@ -306,6 +307,7 @@ if (wd->content == content) return; if (wd->content) evas_object_del(wd->content); wd->content = content; + if (content) { elm_widget_sub_object_add(obj, content); |