From 37fbff22d8a14a928f3b2f14041f2e893c6ea4e1 Mon Sep 17 00:00:00 2001 From: Goun Lee Date: Fri, 24 Jun 2011 14:55:08 +0900 Subject: [PATCH] [elm_multibuttonentry.c]Add elm_multibuttonentry_item_verify_callback_set API Change-Id: I8dc37b32d71c08b05129df40bf52d7a1d7060f7e Change-Id: I8dc37b32d71c08b05129df40bf52d7a1d7060f7e --- src/lib/Elementary.h.in | 2 ++ src/lib/elm_multibuttonentry.c | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+) mode change 100755 => 100644 src/lib/elm_multibuttonentry.c diff --git a/src/lib/Elementary.h.in b/src/lib/Elementary.h.in index da3c031..baee20d 100644 --- a/src/lib/Elementary.h.in +++ b/src/lib/Elementary.h.in @@ -3134,6 +3134,7 @@ extern "C" { /* multibuttonentry */ typedef struct _Multibuttonentry_Item Elm_Multibuttonentry_Item; + typedef Eina_Bool (*Elm_Multibuttonentry_Item_Verify_Callback) (Evas_Object *obj, const char *item_label, void *item_data, void *data); EAPI Evas_Object *elm_multibuttonentry_add(Evas_Object *parent); EAPI const char *elm_multibuttonentry_label_get(Evas_Object *obj); EAPI void elm_multibuttonentry_label_set(Evas_Object *obj, const char *label); @@ -3160,6 +3161,7 @@ extern "C" { EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_next(Elm_Multibuttonentry_Item *item); EAPI void *elm_multibuttonentry_item_data_get(Elm_Multibuttonentry_Item *item); EAPI void elm_multibuttonentry_item_data_set(Elm_Multibuttonentry_Item *item, void *data); + EAPI void elm_multibuttonentry_item_verify_callback_set(Evas_Object *obj, Elm_Multibuttonentry_Item_Verify_Callback func, void *data); /* smart callback called: * "selected" - This signal is emitted when the selected item of multibuttonentry is changed. * "added" - This signal is emitted when a new multibuttonentry item is added. diff --git a/src/lib/elm_multibuttonentry.c b/src/lib/elm_multibuttonentry.c old mode 100755 new mode 100644 index 89ef50e..ddcc14a --- a/src/lib/elm_multibuttonentry.c +++ b/src/lib/elm_multibuttonentry.c @@ -69,6 +69,8 @@ struct _Widget_Data { int contracted; Eina_Bool focused: 1; Ecore_IMF_Context *imf_context; + Elm_Multibuttonentry_Item_Verify_Callback add_callback; + void *add_callback_data; }; static const char *widtype = NULL; @@ -754,6 +756,8 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co if (!wd || !wd->box || !wd->entry) return NULL; + if ((wd->add_callback) && !wd->add_callback(obj, str, data, wd->add_callback_data)) return NULL; + // add button btn = edje_object_add(evas_object_evas_get(obj)); str_utf8 = elm_entry_markup_to_utf8(str); @@ -1264,6 +1268,8 @@ elm_multibuttonentry_add(Evas_Object *parent) wd->n_str = 0; wd->rectForEnd = NULL; wd->imf_context = NULL; + wd->add_callback = NULL; + wd->add_callback_data = NULL; _view_init(obj); _event_init(obj); @@ -1786,3 +1792,22 @@ elm_multibuttonentry_item_data_set(Elm_Multibuttonentry_Item *item, void *data) item->data = data; } +/** + * Set the multibuttonentry item_verify_callback function + * + * @param obj The multibuttonentry object + * @param func The function pointer to be called, it it's NULL, callback function will be deleted. + * @param data user data to be passed to the callback function + * + * @ingroup Multibuttonentry + */ +EAPI void +elm_multibuttonentry_item_verify_callback_set(Evas_Object *obj, Elm_Multibuttonentry_Item_Verify_Callback func, void *data) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + + wd->add_callback = func; + wd->add_callback_data = data; +} -- 2.7.4