elm_map: add elm_map_overlay_del_cb_set() to get notified when an overlay is deleted.

SVN revision: 72233
This commit is contained in:
Davide Andreoli 2012-06-16 12:50:54 +00:00
parent 6d265ac226
commit a6a41f5717
4 changed files with 52 additions and 2 deletions

View File

@ -196,3 +196,7 @@
2012-06-15 Michael Bouchaud
* elm_progressbar: elm_progressbar_format_function_set to add a callback
function to format the unit string.
2012-06-16 Davide Andreoli
* elm_map: add elm_map_overlay_del_cb_set to be notify when
an overlay is deleted.

View File

@ -12,6 +12,8 @@ Additions:
* Toolbar: Add elm_toolbar_standard_priority_set/get APIs.
* Add elm_object_scroll_hold/freeze_get.
* Add ELM_CALENDAR_LAST_DAY_OF_MONTH enum type
* Add elm_progressbar_format_function_set API function
* Add elm_map_overlay_del_cb_set API function
Fixes:

View File

@ -253,6 +253,9 @@ struct _Elm_Map_Overlay
Elm_Map_Overlay_Get_Cb cb;
void *cb_data;
Elm_Map_Overlay_Del_Cb delcb;
void *delcb_data;
// These are not used if overlay type is class or group
Overlay_Group *grp;
};
@ -526,6 +529,7 @@ static const char SIG_NAME_LOAD[] = "name,load";
static const char SIG_NAME_LOADED[] = "name,loaded";
static const char SIG_NAME_LOADED_FAIL[] = "name,loaded,fail";
static const char SIG_OVERLAY_CLICKED[] = "overlay,clicked";
static const char SIG_OVERLAY_DEL[] = "overlay,del";
static const Evas_Smart_Cb_Description _signals[] = {
{SIG_CLICKED, ""},
{SIG_CLICKED_DOUBLE, ""},
@ -550,6 +554,7 @@ static const Evas_Smart_Cb_Description _signals[] = {
{SIG_NAME_LOADED, ""},
{SIG_NAME_LOADED_FAIL, ""},
{SIG_OVERLAY_CLICKED, ""},
{SIG_OVERLAY_DEL, ""},
{NULL, NULL}
};
@ -4794,6 +4799,10 @@ elm_map_overlay_del(Elm_Map_Overlay *overlay)
EINA_SAFETY_ON_NULL_RETURN(overlay->wd);
ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype);
evas_object_smart_callback_call(overlay->wd->obj, SIG_OVERLAY_DEL, overlay);
if (overlay->delcb) overlay->delcb(overlay->delcb_data, overlay->wd->obj,
overlay);
if (overlay->grp)
{
if (overlay->grp->clas)
@ -5286,6 +5295,23 @@ elm_map_overlay_get_cb_set(Elm_Map_Overlay *overlay, Elm_Map_Overlay_Get_Cb get_
#endif
}
EAPI void
elm_map_overlay_del_cb_set(Elm_Map_Overlay *overlay, Elm_Map_Overlay_Del_Cb del_cb, void *data)
{
#ifdef HAVE_ELEMENTARY_ECORE_CON
EINA_SAFETY_ON_NULL_RETURN(overlay);
EINA_SAFETY_ON_NULL_RETURN(overlay->wd);
ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype);
overlay->delcb = del_cb;
overlay->delcb_data = data;
#else
(void) overlay;
(void) del_cb;
(void) data;
#endif
}
EAPI Elm_Map_Overlay *
elm_map_overlay_class_add(Evas_Object *obj)
{

View File

@ -189,6 +189,7 @@ typedef Evas_Object *(*Elm_Map_Marker_Icon_Get_Func)(Evas_Object *
typedef Evas_Object *(*Elm_Map_Group_Icon_Get_Func)(Evas_Object *obj, void *data); /**< Icon fetching class function for markers group classes. */
typedef void (*Elm_Map_Overlay_Get_Cb)(void *data, Evas_Object *map, Elm_Map_Overlay *overlay); /**< Get callback function for the overlay. */
typedef void (*Elm_Map_Overlay_Del_Cb)(void *data, Evas_Object *map, Elm_Map_Overlay *overlay); /**< Det callback function for the overlay. */
typedef void (*Elm_Map_Name_Cb)(void *data, Evas_Object *map, Elm_Map_Name *name); /**< Async-callback function for the name request. */
typedef void (*Elm_Map_Route_Cb)(void *data, Evas_Object *map, Elm_Map_Route *route); /**< Async-callback function for the route request. */
@ -970,11 +971,28 @@ EAPI void elm_map_overlays_show(Eina_List *overlays);
* is clicked, callback will be called and return a virtual group overlays.
*
* You can delete this callback function by setting @c NULL.
*
*
* @ingroup Map
*/
EAPI void elm_map_overlay_get_cb_set(Elm_Map_Overlay *overlay, Elm_Map_Overlay_Get_Cb get_cb, void *data);
EAPI void elm_map_overlay_get_cb_set(Elm_Map_Overlay *overlay, Elm_Map_Overlay_Get_Cb get_cb, void *data);
/**
* Set the get callback function to call when the overlay is deleted.
*
* @param overlay The overlay to own the del callback function.
* @param get_cb The callback function.
* @param data The user callback data.
*
* If the overlay is deleted, the callback wll be called.
* The deleted overlay is returned by callback.
*
* You can delete this callback function by setting @c NULL.
*
* @since 1.1.0
*
* @ingroup Map
*/
EAPI void elm_map_overlay_del_cb_set(Elm_Map_Overlay *overlay, Elm_Map_Overlay_Del_Cb del_cb, void *data);
/**
* Add a new class overlay to the map object.