efl_ui_radio: cleanup API
authorMarcel Hollerbach <mail@marcel-hollerbach.de>
Wed, 29 May 2019 18:06:25 +0000 (20:06 +0200)
committerJongmin Lee <jm105.lee@samsung.com>
Wed, 26 Jun 2019 01:39:57 +0000 (10:39 +0900)
This is a bit of a giant commit. However, the problem here is that
cleaning up the API went hand in hand with rewriting most of the usages.
In the process of renewing and removing old API the following was done:
- Legacy API testcases have been ported back to smart callbacks
- EO-API testcases have been ported to efl_add syntax
- weird event #defines have been removed
- Wrong constructor usage has been removed
- Ported to the new box object introduced before
- removed legacy API from efl_ui_radio
  -> no more ptr(int) q66 will do jumps of happiness
  -> no more ununderstandable group_add methods
  -> Seperated code in blocks only for legacy, and blocks only for
non-legacy

To verify this commit, you can check all the tests that have been
touched here. Additionally, the cxx example has been adjusted

ref T7867

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D9060

21 files changed:
src/bin/elementary/test_bg.c
src/bin/elementary/test_part_bg.c
src/bin/elementary/test_ui_active_view.c
src/bin/elementary/test_ui_box.c
src/bin/elementary/test_ui_image.c
src/bin/elementary/test_ui_pager.c
src/bin/elementary/test_ui_pager_scroll.c
src/bin/elementary/test_ui_panel.c
src/bin/elementary/test_ui_tab_pager.c
src/bin/elementary/test_ui_table.c
src/bin/elementary/test_ui_textpath.c
src/examples/elementary/efl_ui_list_example_1.c
src/examples/elementary/radio_cxx_example_01.cc
src/lib/elementary/Efl_Ui.h
src/lib/elementary/Elementary.h
src/lib/elementary/efl_ui_radio.c
src/lib/elementary/efl_ui_radio_eo.legacy.c
src/lib/elementary/efl_ui_radio_private.h
src/lib/elementary/elm_check.h
src/lib/elementary/elm_dayselector.c
src/modules/elementary/prefs/elm_check.c

index 5c74caf..fb8b4f5 100644 (file)
@@ -375,9 +375,12 @@ test_bg_window(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
 static void
 _cb_radio_changed_scale_type(void *data, const Efl_Event *ev)
 {
+   Efl_Ui_Radio_Box *bx = efl_ui_widget_parent_get(ev->object);
    Evas_Object *o_bg = data;
+   int v = efl_ui_radio_group_selected_value_get(bx);
+   if (v == -1) v = 0;
 
-   efl_gfx_image_scale_type_set(o_bg, efl_ui_nstate_value_get(ev->object));
+   efl_gfx_image_scale_type_set(o_bg, v);
 }
 
 static void
@@ -402,7 +405,7 @@ test_bg_scale_type(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *e
 {
    Evas_Object *win;
    Evas_Object *box, *hbox, *o_bg;
-   Evas_Object *rd, *rdg;
+   Evas_Object *rd, *c;
    char buf[PATH_MAX];
 
    win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
@@ -427,59 +430,54 @@ test_bg_scale_type(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *e
                   efl_gfx_hint_fill_set(efl_added, EINA_TRUE, EINA_TRUE),
                   efl_pack(box, efl_added));
 
-   hbox = efl_add(EFL_UI_BOX_CLASS, box,
+   hbox = efl_add(EFL_UI_RADIO_BOX_CLASS, box,
                   efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL),
                   efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0.0),
                   efl_gfx_hint_fill_set(efl_added, EINA_TRUE, EINA_TRUE),
                   efl_pack(box, efl_added));
 
-   rdg = rd = efl_add(EFL_UI_RADIO_CLASS, hbox,
-                efl_ui_radio_state_value_set(efl_added, EFL_GFX_IMAGE_SCALE_TYPE_FILL),
-                efl_text_set(efl_added, "Fill"),
-                efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0.0),
-                efl_event_callback_add(efl_added, EFL_UI_RADIO_EVENT_CHANGED, _cb_radio_changed_scale_type, o_bg),
-                efl_pack(hbox, efl_added));
-
-   rd = efl_add(EFL_UI_RADIO_CLASS, hbox,
-                efl_ui_radio_state_value_set(efl_added, EFL_GFX_IMAGE_SCALE_TYPE_FIT_INSIDE),
-                efl_ui_radio_group_add(efl_added, rdg),
-                efl_text_set(efl_added, "Fit Inside"),
-                efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0.0),
-                efl_event_callback_add(efl_added, EFL_UI_RADIO_EVENT_CHANGED, _cb_radio_changed_scale_type, o_bg),
-                efl_pack(hbox, efl_added));
-
-
-   rd = efl_add(EFL_UI_RADIO_CLASS, hbox,
-                efl_ui_radio_state_value_set(efl_added, EFL_GFX_IMAGE_SCALE_TYPE_FIT_OUTSIDE),
-                efl_ui_radio_group_add(efl_added, rdg),
-                efl_text_set(efl_added, "Fit Outside"),
-                efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0.0),
-                efl_event_callback_add(efl_added, EFL_UI_RADIO_EVENT_CHANGED, _cb_radio_changed_scale_type, o_bg),
-                efl_pack(hbox, efl_added));
-
-   rd = efl_add(EFL_UI_RADIO_CLASS, hbox,
-                efl_ui_radio_state_value_set(efl_added, EFL_GFX_IMAGE_SCALE_TYPE_NONE),
-                efl_ui_radio_group_add(efl_added, rdg),
-                efl_text_set(efl_added, "None"),
-                efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0.0),
-                efl_event_callback_add(efl_added, EFL_UI_RADIO_EVENT_CHANGED, _cb_radio_changed_scale_type, o_bg),
-                efl_pack(hbox, efl_added));
-
-   rd = efl_add(EFL_UI_RADIO_CLASS, hbox,
-                efl_ui_radio_state_value_set(efl_added, EFL_GFX_IMAGE_SCALE_TYPE_TILE),
-                efl_ui_radio_group_add(efl_added, rdg),
-                efl_text_set(efl_added, "Tile"),
-                efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0.0),
-                efl_event_callback_add(efl_added, EFL_UI_RADIO_EVENT_CHANGED, _cb_radio_changed_scale_type, o_bg),
-                efl_pack(hbox, efl_added));
-
-   efl_ui_radio_group_value_set(rdg, EFL_GFX_IMAGE_SCALE_TYPE_FILL);
-
-   efl_add(EFL_UI_CHECK_CLASS, hbox,
-                efl_text_set(efl_added, "Bg Color"),
-                efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0.0),
-                efl_event_callback_add(efl_added, EFL_UI_CHECK_EVENT_CHANGED, _cb_check_changed_scale_type, o_bg),
-                efl_pack(hbox, efl_added));
+   rd = efl_add(EFL_UI_RADIO_CLASS, hbox);
+   efl_ui_radio_state_value_set(rd, EFL_GFX_IMAGE_SCALE_TYPE_FILL);
+   efl_text_set(rd, "Fill");
+   efl_gfx_hint_weight_set(rd, EFL_GFX_HINT_EXPAND, 0.0);
+   efl_event_callback_add(rd, EFL_UI_CHECK_EVENT_SELECTED_CHANGED, _cb_radio_changed_scale_type, o_bg);
+   efl_pack(hbox, rd);
+
+   rd = efl_add(EFL_UI_RADIO_CLASS, hbox);
+   efl_ui_radio_state_value_set(rd, EFL_GFX_IMAGE_SCALE_TYPE_FIT_INSIDE);
+   efl_text_set(rd, "Fit Inside");
+   efl_gfx_hint_weight_set(rd, EFL_GFX_HINT_EXPAND, 0.0);
+   efl_event_callback_add(rd, EFL_UI_CHECK_EVENT_SELECTED_CHANGED, _cb_radio_changed_scale_type, o_bg);
+   efl_pack(hbox, rd);
+
+   rd = efl_add(EFL_UI_RADIO_CLASS, hbox);
+   efl_ui_radio_state_value_set(rd, EFL_GFX_IMAGE_SCALE_TYPE_FIT_OUTSIDE);
+   efl_text_set(rd, "Fit Outside");
+   efl_gfx_hint_weight_set(rd, EFL_GFX_HINT_EXPAND, 0.0);
+   efl_event_callback_add(rd, EFL_UI_CHECK_EVENT_SELECTED_CHANGED, _cb_radio_changed_scale_type, o_bg);
+   efl_pack(hbox, rd);
+
+   rd = efl_add(EFL_UI_RADIO_CLASS, hbox);
+   efl_ui_radio_state_value_set(rd, EFL_GFX_IMAGE_SCALE_TYPE_NONE);
+   efl_text_set(rd, "None");
+   efl_gfx_hint_weight_set(rd, EFL_GFX_HINT_EXPAND, 0.0);
+   efl_event_callback_add(rd, EFL_UI_CHECK_EVENT_SELECTED_CHANGED, _cb_radio_changed_scale_type, o_bg);
+   efl_pack(hbox, rd);
+
+   rd = efl_add(EFL_UI_RADIO_CLASS, hbox);
+   efl_ui_radio_state_value_set(rd, EFL_GFX_IMAGE_SCALE_TYPE_TILE);
+   efl_text_set(rd, "Tile");
+   efl_gfx_hint_weight_set(rd, EFL_GFX_HINT_EXPAND, 0.0);
+   efl_event_callback_add(rd, EFL_UI_CHECK_EVENT_SELECTED_CHANGED, _cb_radio_changed_scale_type, o_bg);
+   efl_pack(hbox, rd);
+
+   efl_ui_radio_group_selected_value_set(hbox, EFL_GFX_IMAGE_SCALE_TYPE_FILL);
+
+   c = efl_add(EFL_UI_CHECK_CLASS, box);
+   efl_text_set(c, "Bg Color");
+   efl_gfx_hint_weight_set(c, EFL_GFX_HINT_EXPAND, 0.0);
+   efl_event_callback_add(c, EFL_UI_CHECK_EVENT_SELECTED_CHANGED, _cb_check_changed_scale_type, o_bg);
+   efl_pack(box, c);
 
    efl_gfx_entity_size_set(win, EINA_SIZE2D(300, 200));
 }
index 6ab0d6e..d297d2a 100644 (file)
@@ -12,10 +12,10 @@ const Efl_Class *content_class[MAX_NUM_OF_CONTENT];
 static void
 _reset_cb(void *data, const Efl_Event *ev EINA_UNUSED)
 {
-   Evas_Object *radio = data;
+   Efl_Ui_Radio_Group *radio = data;
    Evas_Object *target;
 
-   radio = efl_ui_radio_selected_object_get(radio);
+   radio = efl_ui_radio_group_selected_object_get(radio);
    target = evas_object_data_get(radio, "data");
 
    efl_gfx_color_set(efl_part(target, "background"), 0, 0, 0, 0);
@@ -25,11 +25,11 @@ _reset_cb(void *data, const Efl_Event *ev EINA_UNUSED)
 static void
 _color_cb(void *data, const Efl_Event *ev EINA_UNUSED)
 {
-   Evas_Object *radio = data;
+   Efl_Ui_Radio_Group *radio = data;
    Evas_Object *target;
    static Eina_Bool i;
 
-   radio = efl_ui_radio_selected_object_get(radio);
+   radio = efl_ui_radio_group_selected_object_get(radio);
    target = evas_object_data_get(radio, "data");
    i ^= EINA_TRUE;
    efl_gfx_color_set(efl_part(target, "background"), (i) ? 255 : 0, (i) ? 0 : 255, 0, 255);
@@ -38,12 +38,12 @@ _color_cb(void *data, const Efl_Event *ev EINA_UNUSED)
 static void
 _scale_type_cb(void *data, const Efl_Event *ev EINA_UNUSED)
 {
-   Evas_Object *radio = data;
+   Efl_Ui_Radio_Group *radio = data;
    Evas_Object *target;
    Efl_Gfx_Image_Scale_Type type;
    char buf[PATH_MAX];
 
-   radio = efl_ui_radio_selected_object_get(radio);
+   radio = efl_ui_radio_group_selected_object_get(radio);
    target = evas_object_data_get(radio, "data");
 
    snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
@@ -53,24 +53,28 @@ _scale_type_cb(void *data, const Efl_Event *ev EINA_UNUSED)
    efl_gfx_image_scale_type_set(efl_part(target, "background"), type);
 }
 
-static Evas_Object *
+static Efl_Ui_Radio_Group *
 _create_box_contents(Evas_Object *box)
 {
    Evas_Object *hbox;
    Evas_Object *radio_group, *radio;
    Evas_Object *content;
+   Efl_Ui_Radio_Group *group;
    char buf[PATH_MAX];
    unsigned int i;
 
+   group = efl_new(EFL_UI_RADIO_GROUP_IMPL_CLASS, NULL);
+
    hbox = efl_add(EFL_UI_BOX_CLASS, box,
                   efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL),
                   efl_gfx_hint_weight_set(efl_added, 1, 1),
                   efl_pack_end(box, efl_added));
 
-   radio_group = radio = efl_add(EFL_UI_RADIO_CLASS, hbox,
-                                 efl_pack_end(hbox, efl_added),
-                                 efl_gfx_hint_weight_set(efl_added, 0, 0),
-                                 efl_ui_radio_state_value_set(efl_added, 0));
+   radio_group = radio = efl_add(EFL_UI_RADIO_CLASS, hbox);
+   efl_gfx_hint_weight_set(radio, 0, 0);
+   efl_ui_radio_state_value_set(radio, 0);
+   efl_ui_radio_group_register(group, radio);
+   efl_pack_end(hbox, radio);
 
    content = efl_add(EFL_UI_BOX_CLASS, hbox,
                      efl_pack_end(hbox, efl_added));
@@ -89,11 +93,11 @@ _create_box_contents(Evas_Object *box)
                        efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL),
                        efl_pack_end(box, efl_added));
 
-        radio = efl_add(EFL_UI_RADIO_CLASS, hbox,
-                        efl_ui_radio_group_add(efl_added, radio_group),
-                        efl_pack_end(hbox, efl_added),
-                        efl_ui_radio_state_value_set(efl_added, i + 1),
-                        efl_gfx_hint_weight_set(efl_added, 0, 0));
+        radio = efl_add(EFL_UI_RADIO_CLASS, hbox);
+        efl_ui_radio_state_value_set(radio, i + 1);
+        efl_gfx_hint_weight_set(radio, 0, 0);
+        efl_ui_radio_group_register(group, radio);
+        efl_pack_end(hbox, radio);
 
         content = efl_add(content_class[i], hbox,
                           efl_pack_end(hbox, efl_added));
@@ -110,7 +114,7 @@ _create_box_contents(Evas_Object *box)
         evas_object_data_set(radio, "data", content);
      }
 
-   efl_ui_radio_group_value_set(radio_group, 0);
+   efl_ui_radio_group_selected_value_set(group, 0);
 
    return radio_group;
 }
@@ -121,7 +125,7 @@ test_part_background(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void
    Evas_Object *win;
    Evas_Object *scr;
    Evas_Object *vbox, *hbox;
-   Evas_Object *radio_group;
+   Efl_Ui_Radio_Group *radio_group;
    Evas_Object *reset_btn, *color_btn, *scale_btn;
 
    content_class[0] = EFL_UI_CALENDAR_CLASS;
index 86e81e8..38a79ea 100644 (file)
@@ -399,7 +399,7 @@ active_view_size(void *data,
    size_params->active_view = params->active_view;
    size_params->params = params;
 
-   efl_event_callback_add(ck, EFL_UI_CHECK_EVENT_CHANGED, width_check_cb,
+   efl_event_callback_add(ck, EFL_UI_CHECK_EVENT_SELECTED_CHANGED, width_check_cb,
                           size_params);
    efl_event_callback_add(ck, EFL_EVENT_DEL, check_del_cb, size_params);
 
@@ -440,7 +440,7 @@ active_view_size(void *data,
    size_params->active_view = params->active_view;
    size_params->params = params;
 
-   efl_event_callback_add(ck, EFL_UI_CHECK_EVENT_CHANGED, height_check_cb,
+   efl_event_callback_add(ck, EFL_UI_CHECK_EVENT_SELECTED_CHANGED, height_check_cb,
                           size_params);
    efl_event_callback_add(ck, EFL_EVENT_DEL, check_del_cb, size_params);
 
index 4c37b87..01414b9 100644 (file)
@@ -20,9 +20,9 @@ typedef enum {
 } Weight_Mode;
 
 static void
-weights_cb(void *data, const Efl_Event *event)
+weights_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
 {
-   Weight_Mode mode = elm_radio_state_value_get(event->object);
+   Weight_Mode mode = elm_radio_state_value_get(obj);
 
    switch (mode)
      {
@@ -138,9 +138,9 @@ alignv_btn_slider_cb(void *data, const Efl_Event *event)
 }
 
 static void
-flow_check_cb(void *data, const Efl_Event *event)
+flow_check_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
 {
-   Eina_Bool chk = elm_check_selected_get(event->object);
+   Eina_Bool chk = elm_check_selected_get(obj);
    Eina_List *list = NULL;
    Eina_Iterator *it;
    Eo *box, *win, *sobj, *parent;
@@ -167,17 +167,17 @@ flow_check_cb(void *data, const Efl_Event *event)
 }
 
 static void
-horiz_check_cb(void *data, const Efl_Event *event)
+horiz_check_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
 {
-   Eina_Bool chk = elm_check_selected_get(event->object);
+   Eina_Bool chk = elm_check_selected_get(obj);
    Eo *box = efl_key_wref_get(data, "box");
    efl_ui_layout_orientation_set(box, chk ? EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL : EFL_UI_LAYOUT_ORIENTATION_VERTICAL);
 }
 
 static void
-homo_check_cb(void *data, const Efl_Event *event)
+homo_check_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
 {
-   Eina_Bool chk = elm_check_selected_get(event->object);
+   Eina_Bool chk = elm_check_selected_get(obj);
    Eo *box = efl_key_wref_get(data, "box");
    efl_ui_box_homogeneous_set(box, chk);
 }
@@ -210,12 +210,12 @@ _custom_layout_update(Eo *pack, const void *data EINA_UNUSED)
 }
 
 static void
-custom_check_cb(void *data, const Efl_Event *event)
+custom_check_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
 {
    EFL_OPS_DEFINE(custom_layout_ops,
                   EFL_OBJECT_OP_FUNC(efl_pack_layout_update, _custom_layout_update));
 
-   Eina_Bool chk = elm_check_selected_get(event->object);
+   Eina_Bool chk = elm_check_selected_get(obj);
    Eo *box, *win = data;
 
    box = efl_key_wref_get(win, "box");
@@ -268,7 +268,7 @@ test_ui_box(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_in
 
    chk = o = elm_radio_add(win);
    elm_object_text_set(o, "No weight");
-   efl_event_callback_add(o, EFL_UI_RADIO_EVENT_CHANGED, weights_cb, win);
+   evas_object_smart_callback_add(o, "changed", weights_cb, win);
    efl_gfx_hint_align_set(o, 0, 0.5);
    elm_radio_state_value_set(o, NONE);
    efl_pack(bx, o);
@@ -276,7 +276,7 @@ test_ui_box(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_in
 
    o = elm_radio_add(win);
    elm_object_text_set(o, "No weight + box fill");
-   efl_event_callback_add(o, EFL_UI_RADIO_EVENT_CHANGED, weights_cb, win);
+   evas_object_smart_callback_add(o, "changed", weights_cb, win);
    efl_gfx_hint_align_set(o, 0, 0.5);
    elm_radio_state_value_set(o, NONE_BUT_FILL);
    elm_radio_group_add(o, chk);
@@ -285,7 +285,7 @@ test_ui_box(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_in
 
    o = elm_radio_add(win);
    elm_object_text_set(o, "Equal weights");
-   efl_event_callback_add(o, EFL_UI_RADIO_EVENT_CHANGED, weights_cb, win);
+   evas_object_smart_callback_add(o, "changed", weights_cb, win);
    efl_gfx_hint_align_set(o, 0, 0.5);
    elm_radio_state_value_set(o, EQUAL);
    elm_radio_group_add(o, chk);
@@ -294,7 +294,7 @@ test_ui_box(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_in
 
    o = elm_radio_add(win);
    elm_object_text_set(o, "One weight only");
-   efl_event_callback_add(o, EFL_UI_RADIO_EVENT_CHANGED, weights_cb, win);
+   evas_object_smart_callback_add(o, "changed", weights_cb, win);
    efl_gfx_hint_align_set(o, 0, 0.5);
    elm_radio_state_value_set(o, ONE);
    elm_radio_group_add(o, chk);
@@ -303,7 +303,7 @@ test_ui_box(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_in
 
    o = elm_radio_add(win);
    elm_object_text_set(o, "Two weights");
-   efl_event_callback_add(o, EFL_UI_RADIO_EVENT_CHANGED, weights_cb, win);
+   evas_object_smart_callback_add(o, "changed", weights_cb, win);
    efl_gfx_hint_align_set(o, 0, 0.5);
    elm_radio_state_value_set(o, TWO);
    elm_radio_group_add(o, chk);
@@ -329,7 +329,7 @@ test_ui_box(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_in
    o = elm_check_add(win);
    elm_check_selected_set(o, 0);
    elm_object_text_set(o, "Flow");
-   efl_event_callback_add(o, EFL_UI_CHECK_EVENT_CHANGED, flow_check_cb, win);
+   evas_object_smart_callback_add(o, "changed", flow_check_cb, win);
    efl_gfx_hint_align_set(o, 0, 0);
    efl_pack(bx, o);
    efl_gfx_entity_visible_set(o, 1);
@@ -337,7 +337,7 @@ test_ui_box(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_in
    o = elm_check_add(win);
    elm_check_selected_set(o, 1);
    elm_object_text_set(o, "Horizontal");
-   efl_event_callback_add(o, EFL_UI_CHECK_EVENT_CHANGED, horiz_check_cb, win);
+   evas_object_smart_callback_add(o, "changed", horiz_check_cb, win);
    efl_gfx_hint_align_set(o, 0, 0);
    efl_pack(bx, o);
    efl_gfx_entity_visible_set(o, 1);
@@ -345,7 +345,7 @@ test_ui_box(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_in
    o = elm_check_add(win);
    elm_check_selected_set(o, 0);
    elm_object_text_set(o, "Homogenous");
-   efl_event_callback_add(o, EFL_UI_CHECK_EVENT_CHANGED, homo_check_cb, win);
+   evas_object_smart_callback_add(o, "changed", homo_check_cb, win);
    efl_gfx_hint_align_set(o, 0, 0);
    efl_pack(bx, o);
    efl_gfx_entity_visible_set(o, 1);
@@ -353,7 +353,7 @@ test_ui_box(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_in
    o = elm_check_add(win);
    elm_check_selected_set(o, 0);
    elm_object_text_set(o, "Custom layout");
-   efl_event_callback_add(o, EFL_UI_CHECK_EVENT_CHANGED, custom_check_cb, win);
+   evas_object_smart_callback_add(o, "changed", custom_check_cb, win);
    efl_gfx_hint_align_set(o, 0, 0);
    efl_gfx_hint_weight_set(o, 0, 1);
    efl_pack(bx, o);
index 38d732f..8491a7f 100644 (file)
@@ -50,8 +50,9 @@ my_im_ch(void *data, const Efl_Event *ev EINA_UNUSED)
 {
    Eo *win = data;
    Eo *im = efl_key_data_get(win, "im");
-   Eo *rdg = efl_key_data_get(win, "rdg");
-   Efl_Gfx_Image_Orientation v = efl_ui_radio_state_value_get(efl_ui_radio_selected_object_get(rdg));
+
+   Efl_Gfx_Image_Orientation v = efl_ui_radio_group_selected_value_get(ev->object);
+   if (((int)v) == -1) v = 0;
 
    efl_gfx_image_orientation_set(im, v);
    fprintf(stderr, "Set %i and got %i\n",
@@ -61,17 +62,18 @@ my_im_ch(void *data, const Efl_Event *ev EINA_UNUSED)
 void
 test_ui_image(void *data EINA_UNUSED, Eo *obj  EINA_UNUSED, void *event_info EINA_UNUSED)
 {
-   Eo *win, *box, *im, *rd, *rdg = NULL;
+   Eo *win, *box, *im, *rd;
    int i;
 
    win = win_add("image test", "Image Test");
 
-   box = efl_add(EFL_UI_BOX_CLASS, win);
+   box = efl_add(EFL_UI_RADIO_BOX_CLASS, win);
    efl_gfx_hint_weight_set(box, 1.0, 1.0);
    efl_content_set(win, box);
+   efl_key_data_set(win, "rdg", box);
 
    im = img_add(win, "/images/logo.png");
-   efl_pack(box, im);
+   efl_content_set(win, im);
 
    for (i = 0; images_orient[i].name; ++i)
      {
@@ -81,19 +83,10 @@ test_ui_image(void *data EINA_UNUSED, Eo *obj  EINA_UNUSED, void *event_info EIN
         efl_ui_radio_state_value_set(rd, images_orient[i].orient);
         efl_text_set(rd, images_orient[i].name);
         efl_pack(box, rd);
-        efl_event_callback_add(rd, EFL_UI_RADIO_EVENT_CHANGED, my_im_ch, win);
-        if (!rdg)
-          {
-             rdg = rd;
-             efl_key_data_set(win, "rdg", rdg);
-          }
-        else
-          {
-             efl_ui_radio_group_add(rd, rdg);
-          }
      }
 
    efl_gfx_entity_size_set(win, EINA_SIZE2D(320, 480));
+   efl_event_callback_add(box, EFL_UI_RADIO_GROUP_EVENT_VALUE_CHANGED, my_im_ch, win);
 }
 
 
@@ -130,8 +123,8 @@ my_im_scale_ch(void *data, const Efl_Event *ev EINA_UNUSED)
 {
    Eo *win = data;
    Eo *im = efl_key_data_get(win, "im");
-   Eo *rdg = efl_key_data_get(win, "rdg");
-   int v = efl_ui_radio_state_value_get(efl_ui_radio_selected_object_get(rdg));
+   int v = efl_ui_radio_group_selected_value_get(ev->object);
+   if (v == -1) v = 0;
 
    efl_gfx_image_scale_type_set(im, images_scale_type[v].scale_type);
    fprintf(stderr, "Set %d[%s] and got %d\n",
@@ -141,14 +134,15 @@ my_im_scale_ch(void *data, const Efl_Event *ev EINA_UNUSED)
 void
 test_ui_image_scale_type(void *data EINA_UNUSED, Eo *obj  EINA_UNUSED, void *event_info EINA_UNUSED)
 {
-   Eo *win, *box, *im, *rd, *rdg = NULL;
+   Eo *win, *box, *im, *rd;
    int i;
 
    win = win_add("image test scale type", "Image Test Scale Type");
 
-   box = efl_add(EFL_UI_BOX_CLASS, win);
+   box = efl_add(EFL_UI_RADIO_BOX_CLASS, win);
    efl_gfx_hint_weight_set(box, 1.0, 1.0);
    efl_content_set(win, box);
+   efl_key_data_set(win, "rdg", box);
 
    im = efl_add(EFL_UI_IMAGE_CLASS, win);
    char buf[PATH_MAX];
@@ -156,7 +150,7 @@ test_ui_image_scale_type(void *data EINA_UNUSED, Eo *obj  EINA_UNUSED, void *eve
    elm_image_file_set(im, buf, NULL);
    efl_gfx_hint_weight_set(im, 1.0, 1.0);
    efl_gfx_hint_fill_set(im, EINA_TRUE, EINA_TRUE);
-   efl_pack(box, im);
+   efl_content_set(win, im);
 
    efl_key_data_set(win, "im", im);
 
@@ -168,18 +162,8 @@ test_ui_image_scale_type(void *data EINA_UNUSED, Eo *obj  EINA_UNUSED, void *eve
         efl_ui_radio_state_value_set(rd, i);
         efl_text_set(rd, images_scale_type[i].name);
         efl_pack(box, rd);
-        efl_event_callback_add(rd, EFL_UI_RADIO_EVENT_CHANGED, my_im_scale_ch, win);
-        if (!rdg)
-          {
-             rdg = rd;
-             efl_key_data_set(win, "rdg", rdg);
-          }
-        else
-          {
-             efl_ui_radio_group_add(rd, rdg);
-          }
      }
-
+   efl_event_callback_add(box, EFL_UI_RADIO_GROUP_EVENT_VALUE_CHANGED, my_im_scale_ch, win);
    efl_gfx_entity_size_set(win, EINA_SIZE2D(320, 480));
 }
 
@@ -307,7 +291,7 @@ _url_activate_cb(void *data, Eo *obj, void *event_info EINA_UNUSED)
 void
 test_remote_ui_image(void *data EINA_UNUSED, Eo *obj  EINA_UNUSED, void *event_info EINA_UNUSED)
 {
-   Eo *win, *box, *im, *rd, *rdg = NULL, *box2, *o;
+   Eo *win, *box, *im, *rd, *box2, *o;
    int i;
 
    win = win_add("image test", "Image Test");
@@ -332,6 +316,12 @@ test_remote_ui_image(void *data EINA_UNUSED, Eo *obj  EINA_UNUSED, void *event_i
    evas_object_smart_callback_add(im, "download,done", _download_done_cb, win);
    evas_object_smart_callback_add(im, "download,error", _download_error_cb, win);
 
+   box2 = efl_add(EFL_UI_RADIO_BOX_CLASS, win);
+   efl_gfx_hint_weight_set(box2, 1.0, 1.0);
+   efl_content_set(win, box2);
+   efl_key_data_set(win, "rdg", box2);
+   efl_pack(box, box2);
+
    for (i = 0; images_orient[i].name; ++i)
      {
         rd = efl_add(EFL_UI_RADIO_CLASS, win);
@@ -339,23 +329,15 @@ test_remote_ui_image(void *data EINA_UNUSED, Eo *obj  EINA_UNUSED, void *event_i
         efl_gfx_hint_weight_set(rd, 1.0, 0.0);
         efl_ui_radio_state_value_set(rd, images_orient[i].orient);
         efl_text_set(rd, images_orient[i].name);
-        efl_pack(box, rd);
-        efl_event_callback_add(rd, EFL_UI_RADIO_EVENT_CHANGED, my_im_ch, win);
-        if (!rdg)
-          {
-             rdg = rd;
-             efl_key_data_set(win, "rdg", rdg);
-          }
-        else
-          {
-             efl_ui_radio_group_add(rd, rdg);
-          }
+        efl_pack(box2, rd);
      }
+   efl_event_callback_add(box2, EFL_UI_RADIO_GROUP_EVENT_VALUE_CHANGED, my_im_ch, win);
 
    box2 = o = efl_add(EFL_UI_BOX_CLASS, box);
    efl_ui_layout_orientation_set(o, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL);
    efl_gfx_hint_weight_set(o, 1.0, 0);
    efl_gfx_hint_fill_set(o, EINA_TRUE, EINA_TRUE);
+   efl_pack(box, box2);
 
    o = efl_add(EFL_UI_TEXT_CLASS, box2,
      efl_text_interactive_editable_set(efl_added, EINA_FALSE)
@@ -374,7 +356,6 @@ test_remote_ui_image(void *data EINA_UNUSED, Eo *obj  EINA_UNUSED, void *event_i
    evas_object_show(o);
    efl_pack(box2, o);
 
-   efl_pack(box, box2);
 
    // set file now
    _url_activate_cb(win, o, NULL);
@@ -567,19 +548,17 @@ test_load_ui_image(void *data EINA_UNUSED, Eo *obj  EINA_UNUSED, void *event_inf
       );
       efl_pack(hbox, label);
 
-      chk1 = efl_add(EFL_UI_CHECK_CLASS, hbox,
-        efl_text_set(efl_added, "Async file open"),
-        efl_gfx_hint_weight_set(efl_added, 0.0, 0.0),
-        efl_gfx_hint_fill_set(efl_added, EINA_TRUE, EINA_FALSE)
-      );
+      chk1 = efl_add(EFL_UI_CHECK_CLASS, hbox);
+      efl_text_set(chk1, "Async file open");
+      efl_gfx_hint_weight_set(chk1, 0.0, 0.0);
+      efl_gfx_hint_fill_set(chk1, EINA_TRUE, EINA_FALSE);
       efl_pack(hbox, chk1);
       efl_key_data_set(win, "chk1", chk1);
 
-      chk2 = efl_add(EFL_UI_CHECK_CLASS, hbox,
-        efl_text_set(efl_added, "Disable preload"),
-        efl_gfx_hint_weight_set(efl_added, 0.0, 0.0),
-        efl_gfx_hint_fill_set(efl_added, EINA_TRUE, EINA_FALSE)
-      );
+      chk2 = efl_add(EFL_UI_CHECK_CLASS, hbox);
+      efl_text_set(chk2, "Disable preload");
+      efl_gfx_hint_weight_set(chk2, 0.0, 0.0);
+      efl_gfx_hint_fill_set(chk2, EINA_TRUE, EINA_FALSE);
       efl_pack(hbox, chk2);
       efl_key_data_set(win, "chk2", chk2);
    }
@@ -614,7 +593,8 @@ _cb_prescale_radio_changed(void *data, const Efl_Event *ev)
 {
    Eo *o_bg = data;
    int size;
-   size = efl_ui_radio_state_value_get(efl_ui_radio_selected_object_get(ev->object));
+   size = efl_ui_radio_group_selected_value_get(ev->object);
+   if (size == -1) size = 0;
    //FIXME
    elm_image_prescale_set(o_bg, size);
 }
@@ -624,7 +604,7 @@ test_ui_image_prescale(void *data EINA_UNUSED, Eo *obj EINA_UNUSED, void *event_
 {
    Eo *win, *im;
    Eo *box, *hbox;
-   Eo *rd, *rdg;
+   Eo *rd;
 
    win = win_add("image-prescale", "Image Prescale Test");
 
@@ -634,7 +614,7 @@ test_ui_image_prescale(void *data EINA_UNUSED, Eo *obj EINA_UNUSED, void *event_
    im = img_add(win, "/images/plant_01.jpg");
    efl_pack(box, im);
 
-   hbox = efl_add(EFL_UI_BOX_CLASS, win);
+   hbox = efl_add(EFL_UI_RADIO_BOX_CLASS, win);
    efl_ui_layout_orientation_set(hbox, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL);
    efl_gfx_hint_weight_set(hbox, 1.0, 1.0);
    efl_gfx_hint_fill_set(hbox, EINA_TRUE, EINA_TRUE);
@@ -643,27 +623,22 @@ test_ui_image_prescale(void *data EINA_UNUSED, Eo *obj EINA_UNUSED, void *event_
    efl_ui_radio_state_value_set(rd, 50);
    efl_text_set(rd, "50");
    efl_gfx_hint_weight_set(rd, 1.0, 1.0);
-   efl_event_callback_add(rd, EFL_UI_RADIO_EVENT_CHANGED, _cb_prescale_radio_changed, im);
    efl_pack(hbox, rd);
-   rdg = rd;
 
    rd = efl_add(EFL_UI_RADIO_CLASS, win);
    efl_ui_radio_state_value_set(rd, 100);
-   efl_ui_radio_group_add(rd, rdg);
    efl_text_set(rd, "100");
    efl_gfx_hint_weight_set(rd, 1.0, 1.0);
-   efl_event_callback_add(rd, EFL_UI_RADIO_EVENT_CHANGED, _cb_prescale_radio_changed, im);
    efl_pack(hbox, rd);
 
    rd = efl_add(EFL_UI_RADIO_CLASS, win);
    efl_ui_radio_state_value_set(rd, 200);
-   efl_ui_radio_group_add(rd, rdg);
    efl_text_set(rd, "200");
    efl_gfx_hint_weight_set(rd, 1.0, 1.0);
-   efl_event_callback_add(rd, EFL_UI_RADIO_EVENT_CHANGED, _cb_prescale_radio_changed, im);
    efl_pack(hbox, rd);
+   efl_event_callback_add(hbox, EFL_UI_RADIO_GROUP_EVENT_VALUE_CHANGED, _cb_prescale_radio_changed, im);
 
-   elm_radio_value_set(rdg, 200);
+   efl_ui_radio_group_selected_object_set(hbox, rd);
 
    efl_pack(box, hbox);
 
index 5fba212..6fcf48f 100644 (file)
@@ -375,7 +375,7 @@ static void page_size_cb(void *data,
    size_params->pager = params->pager;
    size_params->params = params;
 
-   efl_event_callback_add(ck, EFL_UI_CHECK_EVENT_CHANGED, width_check_cb,
+   efl_event_callback_add(ck, EFL_UI_CHECK_EVENT_SELECTED_CHANGED, width_check_cb,
                           size_params);
    efl_event_callback_add(ck, EFL_EVENT_DEL, check_del_cb, size_params);
 
@@ -416,7 +416,7 @@ static void page_size_cb(void *data,
    size_params->pager = params->pager;
    size_params->params = params;
 
-   efl_event_callback_add(ck, EFL_UI_CHECK_EVENT_CHANGED, height_check_cb,
+   efl_event_callback_add(ck, EFL_UI_CHECK_EVENT_SELECTED_CHANGED, height_check_cb,
                           size_params);
    efl_event_callback_add(ck, EFL_EVENT_DEL, check_del_cb, size_params);
 
index 9d1857e..6e6c7d1 100644 (file)
@@ -359,7 +359,7 @@ static void next_block_check_cb(void *data, const Efl_Event *ev)
 static void loop_radio_cb(void *data, const Efl_Event *ev)
 {
    Eo *pager = data;
-   int state = efl_ui_radio_group_value_get(ev->object);
+   int state = efl_ui_radio_group_selected_value_get(efl_ui_widget_parent_get(ev->object));
 
    efl_ui_pager_loop_mode_set(pager, state);
 }
@@ -409,8 +409,8 @@ static void page_size_cb(void *data,
    inbox = efl_add(EFL_UI_BOX_CLASS, fr,
                   efl_content_set(fr, efl_added));
 
-   ck = elm_check_add(inbox);
-   elm_object_text_set(ck, "Fill");
+   ck = efl_add(EFL_UI_CHECK_CLASS, inbox);
+   efl_text_set(ck, "Fill");
    efl_pack_end(inbox, ck);
    efl_gfx_entity_visible_set(ck, 1);
 
@@ -429,7 +429,7 @@ static void page_size_cb(void *data,
    size_params->pager = params->pager;
    size_params->params = params;
 
-   efl_event_callback_add(ck, EFL_UI_CHECK_EVENT_CHANGED, width_check_cb,
+   efl_event_callback_add(ck, EFL_UI_CHECK_EVENT_SELECTED_CHANGED, width_check_cb,
                           size_params);
    efl_event_callback_add(ck, EFL_EVENT_DEL, check_del_cb, size_params);
 
@@ -450,8 +450,8 @@ static void page_size_cb(void *data,
    inbox = efl_add(EFL_UI_BOX_CLASS, fr,
                   efl_content_set(fr, efl_added));
 
-   ck = elm_check_add(inbox);
-   elm_object_text_set(ck, "Fill");
+   ck = efl_add(EFL_UI_CHECK_CLASS, inbox);
+   efl_text_set(ck, "Fill");
    efl_pack_end(inbox, ck);
    efl_gfx_entity_visible_set(ck, 1);
 
@@ -470,7 +470,7 @@ static void page_size_cb(void *data,
    size_params->pager = params->pager;
    size_params->params = params;
 
-   efl_event_callback_add(ck, EFL_UI_CHECK_EVENT_CHANGED, height_check_cb,
+   efl_event_callback_add(ck, EFL_UI_CHECK_EVENT_SELECTED_CHANGED, height_check_cb,
                           size_params);
    efl_event_callback_add(ck, EFL_EVENT_DEL, check_del_cb, size_params);
 
@@ -778,7 +778,7 @@ static void scroll_block_cb(void *data,
    Params *params = (Params *)data;
    Evas_Object *navi = params->navi;
    Eo *pager = params->pager;
-   Eo *btn, *box;
+   Eo *btn, *box, *c;
    Eina_Bool prev, next;
 
    btn = efl_add(EFL_UI_BUTTON_CLASS, navi,
@@ -793,21 +793,21 @@ static void scroll_block_cb(void *data,
 
    efl_ui_pager_scroll_block_get(pager, &prev, &next);
 
-   efl_add(EFL_UI_CHECK_CLASS, box,
-           efl_ui_widget_style_set(efl_added, "toggle"),
-           efl_text_set(efl_added, "Prev Block"),
-           efl_ui_check_selected_set(efl_added, prev),
-           efl_event_callback_add(efl_added, EFL_UI_CHECK_EVENT_CHANGED,
-                                  prev_block_check_cb, pager),
-           efl_pack_end(box, efl_added));
-
-   efl_add(EFL_UI_CHECK_CLASS, box,
-           efl_ui_widget_style_set(efl_added, "toggle"),
-           efl_text_set(efl_added, "Next Block"),
-           efl_ui_check_selected_set(efl_added, next),
-           efl_event_callback_add(efl_added, EFL_UI_CHECK_EVENT_CHANGED,
-                                  next_block_check_cb, pager),
-           efl_pack_end(box, efl_added));
+   c = efl_add(EFL_UI_CHECK_CLASS, box);
+   efl_ui_widget_style_set(c, "toggle");
+   efl_text_set(c, "Prev Block");
+   efl_ui_check_selected_set(c, prev);
+   efl_event_callback_add(c, EFL_UI_CHECK_EVENT_SELECTED_CHANGED,
+                          prev_block_check_cb, pager);
+   efl_pack_end(box, c);
+
+   c = efl_add(EFL_UI_CHECK_CLASS, box);
+   efl_ui_widget_style_set(c, "toggle");
+   efl_text_set(c, "Next Block");
+   efl_ui_check_selected_set(c, next);
+   efl_event_callback_add(c, EFL_UI_CHECK_EVENT_SELECTED_CHANGED,
+                          next_block_check_cb, pager);
+   efl_pack_end(box, c);
 }
 
 static void loop_cb(void *data EINA_UNUSED,
@@ -825,31 +825,30 @@ static void loop_cb(void *data EINA_UNUSED,
                  efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED,
                                         back_btn_cb, navi));
 
-   box = efl_add(EFL_UI_BOX_CLASS, navi,
+   box = efl_add(EFL_UI_RADIO_BOX_CLASS, navi,
                  efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE),
                 elm_naviframe_item_push(navi, "Loop", btn, NULL,
                                          efl_added, NULL));
 
-   rd = efl_add(EFL_UI_RADIO_CLASS, box,
-                efl_ui_radio_state_value_set(efl_added, EFL_UI_PAGER_LOOP_DISABLED),
-                efl_text_set(efl_added, "Disabled"),
-                efl_gfx_hint_weight_set(efl_added, 1, 0),
-                efl_event_callback_add(efl_added, EFL_UI_RADIO_EVENT_CHANGED,
-                                       loop_radio_cb, pager),
-                efl_pack(box, efl_added));
-
-   rd = efl_add(EFL_UI_RADIO_CLASS, box,
-                efl_ui_radio_state_value_set(efl_added, EFL_UI_PAGER_LOOP_ENABLED),
-                efl_ui_radio_group_add(efl_added, rd),
-                efl_text_set(efl_added, "Enabled"),
-                efl_gfx_hint_weight_set(efl_added, 1, 0),
-                efl_event_callback_add(efl_added, EFL_UI_RADIO_EVENT_CHANGED,
-                                       loop_radio_cb, pager),
-                efl_pack(box, efl_added));
+   rd = efl_add(EFL_UI_RADIO_CLASS, box);
+   efl_ui_radio_state_value_set(rd, EFL_UI_PAGER_LOOP_DISABLED);
+   efl_text_set(rd, "Disabled");
+   efl_gfx_hint_weight_set(rd, 1, 0);
+   efl_event_callback_add(rd, EFL_UI_CHECK_EVENT_SELECTED_CHANGED,
+                          loop_radio_cb, pager);
+   efl_pack(box, rd);
+
+   rd = efl_add(EFL_UI_RADIO_CLASS, box);
+   efl_ui_radio_state_value_set(rd, EFL_UI_PAGER_LOOP_ENABLED);
+   efl_text_set(rd, "Enabled");
+   efl_gfx_hint_weight_set(rd, 1, 0);
+   efl_event_callback_add(rd, EFL_UI_CHECK_EVENT_SELECTED_CHANGED,
+                          loop_radio_cb, pager);
+   efl_pack(box, rd);
 
    loop = efl_ui_pager_loop_mode_get(pager);
 
-   efl_ui_radio_group_value_set(rd, loop);
+   efl_ui_radio_group_selected_value_set(efl_ui_radio_box_group_get(box), loop);
 
    if (loop == EFL_UI_PAGER_LOOP_DISABLED)
      {
index f8bbd0b..91adb22 100644 (file)
@@ -111,17 +111,17 @@ test_ui_panel2(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
    box = efl_add(EFL_UI_BOX_CLASS, win,
                  efl_content_set(win, efl_added));
 
-   efl_add(EFL_UI_CHECK_CLASS, box,
-           efl_ui_check_selected_set(efl_added, elm_config_scroll_thumbscroll_enabled_get()),
-           efl_text_set(efl_added, "Enable thumb scroll (temporarily"),
-           efl_event_callback_add(efl_added, EFL_UI_NSTATE_EVENT_CHANGED, _check_changed, NULL),
-           efl_gfx_hint_weight_set(efl_added, EVAS_HINT_EXPAND, 0),
-           efl_pack(box, efl_added));
-
-   check = efl_add(EFL_UI_CHECK_CLASS, box,
-                   efl_text_set(efl_added, "Reset content on toggle"),
-                   efl_gfx_hint_weight_set(efl_added, EVAS_HINT_EXPAND, 0),
-                   efl_pack(box, efl_added));
+   check = efl_add(EFL_UI_CHECK_CLASS, box);
+   efl_ui_check_selected_set(check, elm_config_scroll_thumbscroll_enabled_get());
+   efl_text_set(check, "Enable thumb scroll (temporarily");
+   efl_event_callback_add(check, EFL_UI_NSTATE_EVENT_CHANGED, _check_changed, NULL);
+   efl_gfx_hint_weight_set(check, EVAS_HINT_EXPAND, 0);
+   efl_pack(box, check);
+
+   check = efl_add(EFL_UI_CHECK_CLASS, box);
+   efl_text_set(check, "Reset content on toggle");
+   efl_gfx_hint_weight_set(check, EVAS_HINT_EXPAND, 0);
+   efl_pack(box, check);
 
    btn = efl_add(EFL_UI_BUTTON_CLASS, box,
                  efl_text_set(efl_added, "toggle"),
index 006e241..5bb6f02 100644 (file)
@@ -533,15 +533,15 @@ _tab_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
                  efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE),
                  elm_naviframe_item_push(navi, "Tab", btn, NULL, efl_added, NULL));
 
-   label_check = efl_add(EFL_UI_CHECK_CLASS, box,
-                         efl_text_set(efl_added, "Tab Label + Page"),
-                         efl_ui_check_selected_set(efl_added, EINA_FALSE),
-                         efl_pack_end(box, efl_added));
-
-   icon_check = efl_add(EFL_UI_CHECK_CLASS, box,
-                        efl_text_set(efl_added, "Tab Icon"),
-                        efl_ui_check_selected_set(efl_added, EINA_FALSE),
-                        efl_pack_end(box, efl_added));
+   label_check = efl_add(EFL_UI_CHECK_CLASS, box);
+   efl_text_set(label_check, "Tab Label + Page");
+   efl_ui_check_selected_set(label_check, EINA_FALSE);
+   efl_pack_end(box, label_check);
+
+   icon_check = efl_add(EFL_UI_CHECK_CLASS, box);
+   efl_text_set(icon_check, "Tab Icon");
+   efl_ui_check_selected_set(icon_check, EINA_FALSE);
+   efl_pack_end(box, icon_check);
 
    tcd->tab_pager = tab_pager;
    tcd->label_check = label_check;
index bcaf015..34991f6 100644 (file)
@@ -20,12 +20,12 @@ typedef enum {
 } Weight_Mode;
 
 static void
-weights_cb(void *data, const Efl_Event *event)
+weights_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
 {
    EFL_OPS_DEFINE(custom_layout_ops,
                   EFL_OBJECT_OP_FUNC(efl_pack_layout_update, _custom_layout_update));
 
-   Weight_Mode mode = elm_radio_state_value_get(event->object);
+   Weight_Mode mode = elm_radio_state_value_get(obj);
    Eo *table = data;
 
    if (mode != CUSTOM)
@@ -232,7 +232,7 @@ test_ui_table(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_
 
    chk = o = elm_radio_add(win);
    elm_object_text_set(o, "No weight");
-   efl_event_callback_add(o, EFL_UI_RADIO_EVENT_CHANGED, weights_cb, table);
+   evas_object_smart_callback_add(o, "changed", weights_cb, table);
    efl_gfx_hint_align_set(o, 0, 0.5);
    elm_radio_state_value_set(o, NONE);
    efl_pack(bx, o);
@@ -240,7 +240,7 @@ test_ui_table(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_
 
    o = elm_radio_add(win);
    elm_object_text_set(o, "No weight + table fill");
-   efl_event_callback_add(o, EFL_UI_RADIO_EVENT_CHANGED, weights_cb, table);
+   evas_object_smart_callback_add(o, "changed", weights_cb, table);
    efl_gfx_hint_align_set(o, 0, 0.5);
    elm_radio_state_value_set(o, NONE_BUT_FILL);
    elm_radio_group_add(o, chk);
@@ -249,7 +249,7 @@ test_ui_table(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_
 
    o = elm_radio_add(win);
    elm_object_text_set(o, "Equal weights");
-   efl_event_callback_add(o, EFL_UI_RADIO_EVENT_CHANGED, weights_cb, table);
+   evas_object_smart_callback_add(o, "changed", weights_cb, table);
    efl_gfx_hint_align_set(o, 0, 0.5);
    elm_radio_state_value_set(o, EQUAL);
    elm_radio_group_add(o, chk);
@@ -258,7 +258,7 @@ test_ui_table(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_
 
    o = elm_radio_add(win);
    elm_object_text_set(o, "One weight only");
-   efl_event_callback_add(o, EFL_UI_RADIO_EVENT_CHANGED, weights_cb, table);
+   evas_object_smart_callback_add(o, "changed", weights_cb, table);
    efl_gfx_hint_align_set(o, 0, 0.5);
    elm_radio_state_value_set(o, ONE);
    elm_radio_group_add(o, chk);
@@ -267,7 +267,7 @@ test_ui_table(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_
 
    o = elm_radio_add(win);
    elm_object_text_set(o, "Two weights");
-   efl_event_callback_add(o, EFL_UI_RADIO_EVENT_CHANGED, weights_cb, table);
+   evas_object_smart_callback_add(o, "changed", weights_cb, table);
    efl_gfx_hint_align_set(o, 0, 0.5);
    elm_radio_state_value_set(o, TWO);
    elm_radio_group_add(o, chk);
@@ -276,7 +276,7 @@ test_ui_table(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_
 
    o = elm_radio_add(win);
    elm_object_text_set(o, "Custom layout");
-   efl_event_callback_add(o, EFL_UI_RADIO_EVENT_CHANGED, weights_cb, table);
+   evas_object_smart_callback_add(o, "changed", weights_cb, table);
    efl_gfx_hint_align_set(o, 0, 0.5);
    elm_radio_state_value_set(o, CUSTOM);
    elm_radio_group_add(o, chk);
index 0042f2b..e475699 100644 (file)
@@ -120,23 +120,23 @@ test_ui_textpath(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *eve
    efl_gfx_entity_visible_set(hbox, EINA_TRUE);
    elm_box_pack_end(box, hbox);
 
-   chk = elm_check_add(win);
-   elm_object_text_set(chk, "Ellipsis");
+   chk = efl_add(EFL_UI_CHECK_CLASS, win);
+   efl_text_set(chk, "Ellipsis");
    elm_check_state_set(chk, efl_ui_textpath_ellipsis_get(txtpath));
-   efl_event_callback_add(chk, EFL_UI_CHECK_EVENT_CHANGED, _ellipsis_changed_cb, txtpath);
+   efl_event_callback_add(chk, EFL_UI_CHECK_EVENT_SELECTED_CHANGED, _ellipsis_changed_cb, txtpath);
    elm_box_pack_end(hbox, chk);
    efl_gfx_entity_visible_set(chk, EINA_TRUE);
 
-   chk = elm_check_add(win);
-   elm_object_text_set(chk, "Clockwise");
-   efl_event_callback_add(chk, EFL_UI_CHECK_EVENT_CHANGED, _direction_changed_cb, txtpath);
+   chk = efl_add(EFL_UI_CHECK_CLASS, win);
+   efl_text_set(chk, "Clockwise");
+   efl_event_callback_add(chk, EFL_UI_CHECK_EVENT_SELECTED_CHANGED, _direction_changed_cb, txtpath);
    elm_box_pack_end(hbox, chk);
    efl_gfx_entity_visible_set(chk, EINA_TRUE);
    dir_chk = chk;
 
-   chk = elm_check_add(win);
-   elm_object_text_set(chk, "Short text");
-   efl_event_callback_add(chk, EFL_UI_CHECK_EVENT_CHANGED, _short_text_changed_cb, txtpath);
+   chk = efl_add(EFL_UI_CHECK_CLASS, win);
+   efl_text_set(chk, "Short text");
+   efl_event_callback_add(chk, EFL_UI_CHECK_EVENT_SELECTED_CHANGED, _short_text_changed_cb, txtpath);
    elm_box_pack_end(hbox, chk);
    efl_gfx_entity_visible_set(chk, EINA_TRUE);
 
index 135b8a2..7c3b1e5 100644 (file)
@@ -70,13 +70,13 @@ static void
 _select_radio_changed(void *data, const Efl_Event *ev)
 {
   Eo *list = data;
-  efl_ui_select_mode_set(list, efl_ui_radio_state_value_get(ev->object));
+  efl_ui_select_mode_set(list, efl_ui_radio_group_selected_value_get(ev->object));
 }
 
 static void
-_anim_radio_changed(void *data EINA_UNUSED, const Efl_Event *ev)
+_anim_radio_changed(void *data, const Efl_Event *ev EINA_UNUSED)
 {
-  priv_d.anim = efl_ui_radio_state_value_get(ev->object);
+  priv_d.anim = efl_ui_radio_group_selected_value_get(data);
 }
 
 static void
@@ -102,7 +102,7 @@ elm_main(int argc EINA_UNUSED, char **argv)
    Eo *win, *list;
    Eo *wbox, *ibox, *bbox, *rbox;
    Eo *item, *check, *txt;
-   Eo *radio, *select_radio, *anim_radio;
+   Eo *radio;
    Eo *slider, *scrl_btn;
    int i;
    char buf[256];
@@ -229,34 +229,28 @@ elm_main(int argc EINA_UNUSED, char **argv)
    efl_text_set(txt, "Select Mode");
    efl_pack_end(wbox, txt);
 
-   bbox  = efl_add(EFL_UI_BOX_CLASS, wbox);
+   bbox  = efl_add(EFL_UI_RADIO_BOX_CLASS, wbox);
    efl_ui_layout_orientation_set(bbox, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL);
    efl_gfx_hint_weight_set(bbox, EFL_GFX_HINT_EXPAND, 0.05);
 
-   select_radio  = radio = efl_add(EFL_UI_RADIO_CLASS, wbox);
+   radio = efl_add(EFL_UI_RADIO_CLASS, wbox);
    efl_text_set(radio, "SINGLE");
    efl_ui_radio_state_value_set(radio, EFL_UI_SELECT_MODE_SINGLE);
-   efl_event_callback_add(radio, EFL_UI_RADIO_EVENT_CHANGED, _select_radio_changed, list);
    efl_pack_end(bbox, radio);
    radio = efl_add(EFL_UI_RADIO_CLASS, wbox);
    efl_text_set(radio, "SINGLE_ALWAYS");
    efl_ui_radio_state_value_set(radio, EFL_UI_SELECT_MODE_SINGLE_ALWAYS);
-   efl_ui_radio_group_add(radio, select_radio);
-   efl_event_callback_add(radio, EFL_UI_RADIO_EVENT_CHANGED, _select_radio_changed, list);
    efl_pack_end(bbox, radio);
    radio = efl_add(EFL_UI_RADIO_CLASS, wbox);
    efl_text_set(radio, "MULTI");
    efl_ui_radio_state_value_set(radio, EFL_UI_SELECT_MODE_MULTI);
-   efl_ui_radio_group_add(radio, select_radio);
-   efl_event_callback_add(radio, EFL_UI_RADIO_EVENT_CHANGED, _select_radio_changed, list);
    efl_pack_end(bbox, radio);
    radio = efl_add(EFL_UI_RADIO_CLASS, wbox);
    efl_text_set(radio, "NONE");
    efl_ui_radio_state_value_set(radio, EFL_UI_SELECT_MODE_NONE);
-   efl_ui_radio_group_add(radio, select_radio);
-   efl_event_callback_add(radio, EFL_UI_RADIO_EVENT_CHANGED, _select_radio_changed, list);
    efl_pack_end(bbox, radio);
    efl_pack_end(wbox, bbox);
+   efl_event_callback_add(bbox, EFL_UI_RADIO_GROUP_EVENT_VALUE_CHANGED, _select_radio_changed, list);
 
   /* scroll mode */
    txt = efl_add(EFL_UI_TEXT_CLASS, wbox);
@@ -278,23 +272,21 @@ elm_main(int argc EINA_UNUSED, char **argv)
    efl_ui_layout_orientation_set(bbox, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL);
    efl_gfx_hint_weight_set(bbox, EFL_GFX_HINT_EXPAND, 0.05);
 
-   rbox  = efl_add(EFL_UI_BOX_CLASS, bbox);
+   rbox  = efl_add(EFL_UI_RADIO_BOX_CLASS, bbox);
    efl_ui_layout_orientation_set(rbox, EFL_UI_LAYOUT_ORIENTATION_VERTICAL);
 
-   anim_radio  = radio = efl_add(EFL_UI_RADIO_CLASS, rbox);
+   radio = efl_add(EFL_UI_RADIO_CLASS, rbox);
    efl_gfx_hint_align_set(radio, 0.5, 0.5);
    efl_text_set(radio, "ANIMATION OFF");
    efl_ui_radio_state_value_set(radio, 0);
-   efl_event_callback_add(radio, EFL_UI_RADIO_EVENT_CHANGED, _anim_radio_changed, NULL);
    efl_pack_end(rbox, radio);
    radio = efl_add(EFL_UI_RADIO_CLASS, rbox);
    efl_gfx_hint_align_set(radio, 0.5, 0.5);
    efl_text_set(radio, "ANIMATION ON");
    efl_ui_radio_state_value_set(radio, 1);
-   efl_ui_radio_group_add(radio, anim_radio);
-   efl_event_callback_add(radio, EFL_UI_RADIO_EVENT_CHANGED, _anim_radio_changed, NULL);
    efl_pack_end(rbox, radio);
    efl_pack_end(bbox, rbox);
+   efl_event_callback_add(rbox, EFL_UI_RADIO_GROUP_EVENT_VALUE_CHANGED, _anim_radio_changed, rbox);
 
    rbox  = efl_add(EFL_UI_BOX_CLASS, bbox);
    efl_ui_layout_orientation_set(rbox, EFL_UI_LAYOUT_ORIENTATION_VERTICAL);
index c6d5146..1b6c659 100644 (file)
@@ -16,7 +16,7 @@ efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
    win.text_set("Radio Example");
    win.autohide_set(true);
 
-   efl::ui::Box bx(instantiate, win);
+   efl::ui::Radio_Box bx(instantiate, win);
    bx.orientation_set(EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL);
    win.content_set(bx);
 
@@ -30,15 +30,14 @@ efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
    radio.content_set(ic);
    bx.pack_end(radio);
 
-   auto cb_val = std::bind([] (efl::ui::Radio &obj)
-   { std::cout << "val is now: " << obj.group_value_get() << std::endl; },
+   auto cb_val = std::bind([bx] (efl::ui::Radio &obj EINA_UNUSED)
+   { std::cout << "val is now: " << bx.selected_value_get() << std::endl; },
          std::placeholders::_1);
    efl::eolian::event_add(efl::ui::Nstate::changed_event, radio, cb_val);
 
    efl::ui::Radio radio2(instantiate, win);
    radio2.text_set("Radio 2");
    radio2.state_value_set(2);
-   radio2.group_add(group);
 
    efl::ui::Image ic2(instantiate, win);
    ic2.icon_set("file");
@@ -49,14 +48,12 @@ efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
    efl::ui::Radio radio3(instantiate, win);
    radio3.text_set("Radio 3");
    radio3.state_value_set(3);
-   radio3.group_add(group);
    bx.pack_end(radio3);
    efl::eolian::event_add(efl::ui::Nstate::changed_event, radio3, cb_val);
 
    efl::ui::Radio radio4(instantiate, win);
    radio4.text_set("Radio 4");
    radio4.state_value_set(4);
-   radio4.group_add(group);
    bx.pack_end(radio4);
    efl::eolian::event_add(efl::ui::Nstate::changed_event, radio4, cb_val);
 }
index f6539a6..48d576a 100644 (file)
@@ -4,10 +4,6 @@
 #include <Efl_Config.h>
 #include <Elementary_Options.h>
 
-/* FIXME: wtf? */
-#ifndef EFL_UI_RADIO_EVENT_CHANGED
-# define EFL_UI_RADIO_EVENT_CHANGED EFL_UI_NSTATE_EVENT_CHANGED
-#endif
 /* Standard headers for standard system calls etc. */
 #include <stdio.h>
 #include <stdlib.h>
index 3e58e65..cd4d08b 100644 (file)
@@ -153,10 +153,6 @@ EAPI extern Elm_Version *elm_version;
 #include <elm_focus.h>
 
 #include <Efl.h>
-/* FIXME: wtf? */
-#ifndef EFL_UI_RADIO_EVENT_CHANGED
-# define EFL_UI_RADIO_EVENT_CHANGED EFL_UI_NSTATE_EVENT_CHANGED
-#endif
 # include <efl_ui.eot.h>
 //define focus manager earlier since focus object and manager is circular
 typedef Eo Efl_Ui_Focus_Manager;
index 6470527..a157caa 100644 (file)
@@ -123,21 +123,27 @@ _activate(Evas_Object *obj)
 {
    ELM_RADIO_DATA_GET(obj, sd);
 
-   if (sd->group->value == sd->value) return;
-
-   if ((!_elm_config->access_mode) ||
-       (_elm_access_2nd_click_timeout(obj)))
+   if (elm_widget_is_legacy(obj))
      {
-        sd->group->value = sd->value;
-        if (sd->group->valuep) *(sd->group->valuep) = sd->group->value;
+        //in legacy, group is handeled by the widget
+        if (sd->group->value == sd->value) return;
 
-        _state_set_all(sd, EINA_TRUE);
+        if ((!_elm_config->access_mode) ||
+            (_elm_access_2nd_click_timeout(obj)))
+          {
+             sd->group->value = sd->value;
+             if (sd->group->valuep) *(sd->group->valuep) = sd->group->value;
 
-        if (_elm_config->access_mode)
-          _elm_access_say(E_("State: On"));
-        efl_event_callback_legacy_call
-          (obj, EFL_UI_RADIO_EVENT_CHANGED, NULL);
+             _state_set_all(sd, EINA_TRUE);
 
+             if (_elm_config->access_mode)
+               _elm_access_say(E_("State: On"));
+         }
+     }
+   else
+     {
+        //in new API, we just toggle the state of the widget, rest will be automatically handled
+        efl_ui_check_selected_set(obj, !efl_ui_check_selected_get(obj));
      }
 }
 
@@ -221,8 +227,11 @@ _efl_ui_radio_efl_object_constructor(Eo *obj, Efl_Ui_Radio_Data *pd)
      elm_layout_signal_callback_add
         (obj, "efl,action,radio,toggle", "*", _radio_on_cb, obj);
 
-   pd->group = calloc(1, sizeof(Group));
-   pd->group->radios = eina_list_append(pd->group->radios, obj);
+   if (elm_widget_is_legacy(obj))
+     {
+        pd->group = calloc(1, sizeof(Group));
+        pd->group->radios = eina_list_append(pd->group->radios, obj);
+     }
 
    elm_layout_sizing_eval(obj);
 
@@ -240,43 +249,24 @@ _efl_ui_radio_efl_object_constructor(Eo *obj, Efl_Ui_Radio_Data *pd)
 EOLIAN static void
 _efl_ui_radio_efl_object_destructor(Eo *obj EINA_UNUSED, Efl_Ui_Radio_Data *pd)
 {
-   pd->group->radios = eina_list_remove(pd->group->radios, obj);
-   if (!pd->group->radios) free(pd->group);
-
-   efl_destructor(efl_super(obj, MY_CLASS));
-}
-
-EOLIAN static void
-_efl_ui_radio_group_add(Eo *obj, Efl_Ui_Radio_Data *sd, Evas_Object *group)
-{
-   ELM_RADIO_DATA_GET(group, sdg);
-
-   if (!sdg)
-     {
-        if (eina_list_count(sd->group->radios) == 1) return;
-        sd->group->radios = eina_list_remove(sd->group->radios, obj);
-        sd->group = calloc(1, sizeof(Group));
-        sd->group->radios = eina_list_append(sd->group->radios, obj);
-     }
-   else if (sd->group == sdg->group)
-     return;
-   else
+   if (elm_widget_is_legacy(obj))
      {
-        sd->group->radios = eina_list_remove(sd->group->radios, obj);
-        if (!sd->group->radios) free(sd->group);
-        sd->group = sdg->group;
-        sd->group->radios = eina_list_append(sd->group->radios, obj);
+        pd->group->radios = eina_list_remove(pd->group->radios, obj);
+        if (!pd->group->radios) free(pd->group);
      }
-   if (sd->value == sd->group->value) efl_ui_check_selected_set(obj, EINA_TRUE);
-   else efl_ui_check_selected_set(obj, EINA_FALSE);
+
+   efl_destructor(efl_super(obj, MY_CLASS));
 }
 
 EOLIAN static void
 _efl_ui_radio_state_value_set(Eo *obj, Efl_Ui_Radio_Data *sd, int value)
 {
    sd->value = value;
-   if (sd->value == sd->group->value) efl_ui_check_selected_set(obj, EINA_TRUE);
-   else efl_ui_check_selected_set(obj, EINA_FALSE);
+   if (elm_widget_is_legacy(obj))
+     {
+        if (sd->value == sd->group->value) efl_ui_check_selected_set(obj, EINA_TRUE);
+        else efl_ui_check_selected_set(obj, EINA_FALSE);
+     }
 }
 
 EOLIAN static int
@@ -285,52 +275,6 @@ _efl_ui_radio_state_value_get(const Eo *obj EINA_UNUSED, Efl_Ui_Radio_Data *sd)
    return sd->value;
 }
 
-EOLIAN static void
-_efl_ui_radio_group_value_set(Eo *obj EINA_UNUSED, Efl_Ui_Radio_Data *sd, int value)
-{
-   if (value == sd->group->value) return;
-   sd->group->value = value;
-   if (sd->group->valuep) *(sd->group->valuep) = sd->group->value;
-   _state_set_all(sd, EINA_FALSE);
-}
-
-EOLIAN static int
-_efl_ui_radio_group_value_get(const Eo *obj EINA_UNUSED, Efl_Ui_Radio_Data *sd)
-{
-   return sd->group->value;
-}
-
-EOLIAN static void
-_efl_ui_radio_value_pointer_set(Eo *obj EINA_UNUSED, Efl_Ui_Radio_Data *sd, int *valuep)
-{
-   if (valuep)
-     {
-        sd->group->valuep = valuep;
-        if (*(sd->group->valuep) != sd->group->value)
-          {
-             sd->group->value = *(sd->group->valuep);
-             _state_set_all(sd, EINA_FALSE);
-          }
-     }
-   else sd->group->valuep = NULL;
-}
-
-EOLIAN static Evas_Object*
-_efl_ui_radio_selected_object_get(const Eo *obj EINA_UNUSED, Efl_Ui_Radio_Data *sd)
-{
-   Eina_List *l;
-   Evas_Object *child;
-
-   EINA_LIST_FOREACH(sd->group->radios, l, child)
-     {
-        ELM_RADIO_DATA_GET(child, sdc);
-
-        if (sdc->value == sd->group->value) return child;
-     }
-
-   return NULL;
-}
-
 EOLIAN static Eina_Bool
 _efl_ui_radio_efl_ui_widget_on_access_activate(Eo *obj, Efl_Ui_Radio_Data *_pd EINA_UNUSED, Efl_Ui_Activate act)
 {
@@ -487,13 +431,86 @@ elm_radio_add(Evas_Object *parent)
 EAPI void
 elm_radio_value_set(Evas_Object *obj, int value)
 {
-   efl_ui_radio_group_value_set(obj, value);
+   EINA_SAFETY_ON_FALSE_RETURN(elm_widget_is_legacy(obj));
+   ELM_RADIO_DATA_GET(obj, sd);
+
+   if (value == sd->group->value) return;
+   sd->group->value = value;
+   if (sd->group->valuep) *(sd->group->valuep) = sd->group->value;
+   _state_set_all(sd, EINA_FALSE);
 }
 
 EAPI int
 elm_radio_value_get(const Evas_Object *obj)
 {
-   return efl_ui_radio_group_value_get(obj);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(elm_widget_is_legacy(obj), 0);
+   ELM_RADIO_DATA_GET(obj, sd);
+   return sd->group->value;
+}
+
+EAPI void
+elm_radio_value_pointer_set(Efl_Ui_Radio *obj, int *valuep)
+{
+   EINA_SAFETY_ON_FALSE_RETURN(elm_widget_is_legacy(obj));
+   ELM_RADIO_DATA_GET(obj, sd);
+
+   if (valuep)
+     {
+        sd->group->valuep = valuep;
+        if (*(sd->group->valuep) != sd->group->value)
+          {
+             sd->group->value = *(sd->group->valuep);
+             _state_set_all(sd, EINA_FALSE);
+          }
+     }
+   else sd->group->valuep = NULL;
+}
+
+EAPI Efl_Canvas_Object *
+elm_radio_selected_object_get(const Efl_Ui_Radio *obj)
+{
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(elm_widget_is_legacy(obj), NULL);
+   ELM_RADIO_DATA_GET(obj, sd);
+
+   Eina_List *l;
+   Evas_Object *child;
+
+   EINA_LIST_FOREACH(sd->group->radios, l, child)
+     {
+        ELM_RADIO_DATA_GET(child, sdc);
+
+        if (sdc->value == sd->group->value) return child;
+     }
+
+   return NULL;
+}
+
+EAPI void
+elm_radio_group_add(Efl_Ui_Radio *obj, Efl_Ui_Radio *group)
+{
+   EINA_SAFETY_ON_FALSE_RETURN(elm_widget_is_legacy(obj));
+   EINA_SAFETY_ON_FALSE_RETURN(elm_widget_is_legacy(group));
+   ELM_RADIO_DATA_GET(group, sdg);
+   ELM_RADIO_DATA_GET(obj, sd);
+
+   if (!sdg)
+     {
+        if (eina_list_count(sd->group->radios) == 1) return;
+        sd->group->radios = eina_list_remove(sd->group->radios, obj);
+        sd->group = calloc(1, sizeof(Group));
+        sd->group->radios = eina_list_append(sd->group->radios, obj);
+     }
+   else if (sd->group == sdg->group)
+     return;
+   else
+     {
+        sd->group->radios = eina_list_remove(sd->group->radios, obj);
+        if (!sd->group->radios) free(sd->group);
+        sd->group = sdg->group;
+        sd->group->radios = eina_list_append(sd->group->radios, obj);
+     }
+   if (sd->value == sd->group->value) efl_ui_check_selected_set(obj, EINA_TRUE);
+   else efl_ui_check_selected_set(obj, EINA_FALSE);
 }
 
 #include "efl_ui_radio_legacy_eo.c"
index 69b2365..8e9a4dd 100644 (file)
@@ -10,21 +10,3 @@ elm_radio_state_value_get(const Efl_Ui_Radio *obj)
 {
    return efl_ui_radio_state_value_get(obj);
 }
-
-EAPI void
-elm_radio_value_pointer_set(Efl_Ui_Radio *obj, int *valuep)
-{
-   efl_ui_radio_value_pointer_set(obj, valuep);
-}
-
-EAPI Efl_Canvas_Object *
-elm_radio_selected_object_get(const Efl_Ui_Radio *obj)
-{
-   return efl_ui_radio_selected_object_get(obj);
-}
-
-EAPI void
-elm_radio_group_add(Efl_Ui_Radio *obj, Efl_Ui_Radio *group)
-{
-   efl_ui_radio_group_add(obj, group);
-}
index 765e91f..63e2698 100644 (file)
@@ -38,8 +38,6 @@ struct _Efl_Ui_Radio_Data
 {
    int                   value;
    Group                *group;
-
-   Eina_Bool             state : 1;
 };
 
 /**
index 492494a..9cddb69 100644 (file)
@@ -58,9 +58,6 @@
  *
  * @{
  */
-
-#define EFL_UI_CHECK_EVENT_CHANGED EFL_UI_NSTATE_EVENT_CHANGED
-
 #ifndef EFL_NOLEGACY_API_SUPPORT
 #include "elm_check_legacy.h"
 #endif
index 781ee0c..d014952 100644 (file)
@@ -204,11 +204,11 @@ _item_signal_emit_cb(void *data,
 }
 
 static void
-_item_clicked_cb(void *data, const Efl_Event *event EINA_UNUSED)
+_item_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
 {
    Elm_Dayselector_Item_Data *it = data;
 
-   efl_event_callback_legacy_call(WIDGET(it), EFL_UI_CHECK_EVENT_CHANGED, (void *)it->day);
+   evas_object_smart_callback_call(WIDGET(it), "changed", event_info);
 }
 
 static Elm_Dayselector_Item_Data *
@@ -295,8 +295,7 @@ _elm_dayselector_content_set(Eo *obj, Elm_Dayselector_Data *sd, const char *item
    snprintf(buf, sizeof(buf), "day%d,visible", _item_location_get(sd, it));
    elm_layout_signal_emit(obj, buf, "elm");
 
-   efl_event_callback_add
-     (VIEW(it), EFL_UI_CHECK_EVENT_CHANGED, _item_clicked_cb, it);
+   evas_object_smart_callback_add(VIEW(it), "changed", _item_clicked_cb, it);
    evas_object_event_callback_add
      (VIEW(it), EVAS_CALLBACK_DEL, _item_del_cb, obj);
 
@@ -342,7 +341,7 @@ _elm_dayselector_content_unset(Eo *obj, Elm_Dayselector_Data *sd, const char *it
    if (!content) return NULL;
 
    sd->items = eina_list_remove(sd->items, it);
-   efl_event_callback_del(content, EFL_UI_CHECK_EVENT_CHANGED, _item_clicked_cb, it);
+   evas_object_smart_callback_del_full(content, "changed", _item_clicked_cb, it);
    evas_object_event_callback_del(content, EVAS_CALLBACK_DEL, _item_del_cb);
 
    elm_object_signal_callback_del
index c191d7d..997bb45 100644 (file)
@@ -7,11 +7,11 @@ static Elm_Prefs_Item_Type supported_types[] =
 };
 
 static void
-_item_changed_cb(void *data, const Efl_Event *event)
+_item_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
 {
     Elm_Prefs_Item_Changed_Cb prefs_it_changed_cb = data;
 
-    prefs_it_changed_cb(event->object);
+    prefs_it_changed_cb(obj);
 }
 
 static Evas_Object *
@@ -23,8 +23,7 @@ elm_prefs_check_add(const Elm_Prefs_Item_Iface *iface EINA_UNUSED,
 {
    Evas_Object *obj = elm_check_add(prefs);
 
-   efl_event_callback_add
-     (obj, EFL_UI_CHECK_EVENT_CHANGED, _item_changed_cb, cb);
+   evas_object_smart_callback_add(obj, "changed", _item_changed_cb, cb);
    elm_check_state_set(obj, spec.b.def);
 
    return obj;