add signals - <clicked>, <item,clicked>, <item,selected>, <item,added>, <item,deleted>
authorHyunsil Park <hyunsil.park@samsung.com>
Mon, 10 Jan 2011 02:15:56 +0000 (11:15 +0900)
committerHyunsil Park <hyunsil.park@samsung.com>
Mon, 10 Jan 2011 02:15:56 +0000 (11:15 +0900)
src/lib/elm_multibuttonentry.c

index b3b9ffb..5c7e9b7 100644 (file)
@@ -159,6 +159,15 @@ _sizing_eval(Evas_Object *obj)
 }\r
 \r
 static void \r
+_signal_mouse_clicked(void *data, Evas_Object *obj, const char *emission, const char *source)\r
+{\r
+   Widget_Data *wd = elm_widget_data_get(data);\r
+   if(!wd || !wd->base) return;\r
+\r
+   evas_object_smart_callback_call(data, "clicked", NULL);\r
+}\r
+\r
+static void \r
 _changed_size_hint_cb(void *data, Evas *evas, Evas_Object *obj, void *event)\r
 {\r
    Evas_Object *eo = (Evas_Object *)data;\r
@@ -192,6 +201,11 @@ _event_init(Evas_Object *obj)
    Widget_Data *wd = elm_widget_data_get(obj);\r
    if (!wd || !wd->base)   return;\r
 \r
+   if(wd->base)\r
+        {\r
+           edje_object_signal_callback_add(wd->base, "mouse,clicked,1", "*", _signal_mouse_clicked, obj);\r
+        }\r
+\r
    if (wd->box)\r
      {\r
         evas_object_event_callback_add(wd->box, EVAS_CALLBACK_RESIZE, _resize_cb, obj);\r
@@ -449,7 +463,8 @@ _change_current_button_state(Evas_Object *obj, Multibuttonentry_Button_State sta
                 break;\r
              case MULTIBUTONENTRY_BUTTON_STATE_SELECTED:\r
                 edje_object_signal_emit(item->button, "focused", "");\r
-                evas_object_smart_callback_call(obj, "selected", item);\r
+                               evas_object_smart_callback_call(obj, "selected", item); // will be removed!\r
+                evas_object_smart_callback_call(obj, "item,selected", item);\r
                 break;\r
              default:\r
                 edje_object_signal_emit(item->button, "default", "");\r
@@ -490,6 +505,7 @@ _button_clicked(void *data, Evas_Object *obj, const char *emission, const char *
 {\r
    Widget_Data *wd = elm_widget_data_get(data);\r
    static char str[MAX_STR];\r
+   Elm_Multibuttonentry_Item *item = NULL;\r
    if (!wd) return;\r
 \r
    strncpy(str, elm_scrolled_entry_entry_get(wd->entry), MAX_STR);\r
@@ -499,6 +515,10 @@ _button_clicked(void *data, Evas_Object *obj, const char *emission, const char *
       _add_button(data, str);\r
 \r
    _change_current_button(data, obj);\r
+\r
+   if (wd->current)\r
+      if(item = eina_list_data_get(wd->current))\r
+         evas_object_smart_callback_call(data, "item,clicked", item);\r
 }\r
 \r
 static void\r
@@ -538,7 +558,8 @@ _del_button_item(Elm_Multibuttonentry_Item *item)
           {\r
              wd->items = eina_list_remove(wd->items, _item);\r
              elm_box_unpack(wd->box, _item->button);\r
-             evas_object_smart_callback_call(obj, "deleted", _item);\r
+             evas_object_smart_callback_call(obj, "deleted", _item); // will be removed!\r
+             evas_object_smart_callback_call(obj, "item,deleted", _item);\r
              _del_button_obj(obj, _item->button);\r
              free(_item);\r
              if (wd->current == l)   \r
@@ -670,7 +691,8 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co
         elm_label_wrap_width_set(label, item->vw - 2*padding_outer - 2*padding_inner ); \r
      }\r
 \r
-   evas_object_smart_callback_call(obj, "added", item);\r
+   evas_object_smart_callback_call(obj, "added", item); // will be removed!\r
+   evas_object_smart_callback_call(obj, "item,added", item);\r
 \r
    return item;\r
 }\r