[multibuttonentry] add an API elm_multibuttonentry_unselect_all()
authorHyunsil <hyunsil.park@samsung.com>
Fri, 24 Sep 2010 12:48:02 +0000 (21:48 +0900)
committerHyunsil <hyunsil.park@samsung.com>
Fri, 24 Sep 2010 12:48:02 +0000 (21:48 +0900)
src/lib/Elementary.h.in [changed mode: 0644->0755]
src/lib/elm_multibuttonentry.c

old mode 100644 (file)
new mode 100755 (executable)
index 2aac952..d089dc1
@@ -2644,6 +2644,7 @@ extern "C" {
    EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_last_get(Evas_Object *obj);
    EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_selected_get(Evas_Object *obj);
    EAPI void                       elm_multibuttonentry_item_selected_set(Elm_Multibuttonentry_Item *item);
+   EAPI void                       elm_multibuttonentry_item_unselect_all(Evas_Object *obj);
    EAPI void                       elm_multibuttonentry_item_del(Elm_Multibuttonentry_Item *item);
    EAPI void                       elm_multibuttonentry_items_del(Evas_Object *obj);
    EAPI const char                *elm_multibuttonentry_item_label_get(Elm_Multibuttonentry_Item *item);
index 107fba0..2ef20ed 100755 (executable)
@@ -22,6 +22,14 @@ typedef enum _Multibuttonentry_Pos
  MULTIBUTONENTRY_POS_NUM\r
 }Multibuttonentry_Pos;\r
 \r
+typedef enum _Multibuttonentry_Button_State\r
+{\r
+ MULTIBUTONENTRY_BUTTON_STATE_DEFAULT,\r
+ MULTIBUTONENTRY_BUTTON_STATE_SELECTED,\r
+ MULTIBUTONENTRY_BUTTON_STATE_NUM\r
+}Multibuttonentry_Button_State;\r
+\r
+\r
 struct _Multibuttonentry_Item {\r
        Evas_Object *multibuttonentry;\r
        Evas_Object *button;\r
@@ -181,6 +189,34 @@ _set_label(Evas_Object *obj, const char* str)
 }\r
 \r
 static void\r
+_change_current_button_state(Evas_Object *obj, Multibuttonentry_Button_State state)\r
+{\r
+       Widget_Data *wd = elm_widget_data_get(obj);\r
+       Elm_Multibuttonentry_Item *item = NULL;\r
+       if (!wd) return;\r
+\r
+       if(wd->current) \r
+               item = eina_list_data_get(wd->current);\r
+\r
+       if(item && item->button){\r
+               switch(state){\r
+                       case MULTIBUTONENTRY_BUTTON_STATE_DEFAULT:\r
+                               edje_object_signal_emit(item->button, "default", "");\r
+                               wd->current = NULL;\r
+                               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
+                               break;\r
+                       default:\r
+                               edje_object_signal_emit(item->button, "default", "");\r
+                               wd->current = NULL;\r
+                               break;\r
+               }\r
+       }\r
+}\r
+\r
+static void\r
 _change_current_button(Evas_Object *obj, Evas_Object *btn)\r
 {\r
        Widget_Data *wd = elm_widget_data_get(obj);\r
@@ -189,10 +225,7 @@ _change_current_button(Evas_Object *obj, Evas_Object *btn)
        if (!wd) return;\r
 \r
        // change the state of previous button to "default"\r
-       if(wd->current){\r
-               item = eina_list_data_get(wd->current);\r
-               edje_object_signal_emit(item->button,"default", "");    \r
-       }\r
+       _change_current_button_state(obj, MULTIBUTONENTRY_BUTTON_STATE_DEFAULT);\r
        \r
        // change the current\r
        EINA_LIST_FOREACH(wd->items, l, item) {\r
@@ -203,11 +236,8 @@ _change_current_button(Evas_Object *obj, Evas_Object *btn)
        }\r
 \r
        // chagne the state of current button to "focused"\r
-       if(wd->current){\r
-               item = eina_list_data_get(wd->current);\r
-               edje_object_signal_emit(item->button,"focused", "");\r
-               evas_object_smart_callback_call(obj, "selected", item);\r
-       }\r
+       _change_current_button_state(obj, MULTIBUTONENTRY_BUTTON_STATE_SELECTED);\r
+       \r
 }\r
 \r
 static void\r
@@ -707,6 +737,23 @@ elm_multibuttonentry_item_selected_set(Elm_Multibuttonentry_Item *item)
 }\r
 \r
 /**\r
+ * unselect all of items.\r
+ *\r
+ * @param obj The multibuttonentry object\r
+ *\r
+ * @ingroup Multibuttonentry\r
+ */\r
+EAPI void\r
+elm_multibuttonentry_item_unselect_all(Evas_Object *obj)\r
+{\r
+       ELM_CHECK_WIDTYPE(obj, widtype);\r
+       Widget_Data *wd = elm_widget_data_get(obj);\r
+       if (!wd) return;\r
+\r
+       _change_current_button_state(obj, MULTIBUTONENTRY_BUTTON_STATE_DEFAULT);\r
+}\r
+\r
+/**\r
  * Remove all items in the multibuttonentry.\r
  *\r
  * @param obj The multibuttonentry object\r