diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am index 166f2457e7..e2957f185f 100644 --- a/src/Makefile_Elementary.am +++ b/src/Makefile_Elementary.am @@ -1962,6 +1962,7 @@ tests_elementary_efl_ui_suite_SOURCES = \ tests/elementary/efl_ui_test_layout.c \ tests/elementary/efl_ui_test_widget.c \ tests/elementary/efl_ui_test_active_view.c \ + tests/elementary/efl_ui_test_check.c \ tests/elementary/efl_ui_suite.h \ tests/elementary/efl_ui_model.c diff --git a/src/bin/elementary/test_bg.c b/src/bin/elementary/test_bg.c index 25e54ff3aa..5c74caf53e 100644 --- a/src/bin/elementary/test_bg.c +++ b/src/bin/elementary/test_bg.c @@ -473,7 +473,7 @@ test_bg_scale_type(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *e 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_nstate_value_set(rdg, EFL_GFX_IMAGE_SCALE_TYPE_FILL); + 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"), diff --git a/src/bin/elementary/test_part_bg.c b/src/bin/elementary/test_part_bg.c index 6285947f01..6ab0d6ecc4 100644 --- a/src/bin/elementary/test_part_bg.c +++ b/src/bin/elementary/test_part_bg.c @@ -110,7 +110,7 @@ _create_box_contents(Evas_Object *box) evas_object_data_set(radio, "data", content); } - efl_ui_nstate_value_set(radio_group, 0); + efl_ui_radio_group_value_set(radio_group, 0); return radio_group; } diff --git a/src/bin/elementary/test_photocam.c b/src/bin/elementary/test_photocam.c index 4e79fecf81..bbbbb1fe88 100644 --- a/src/bin/elementary/test_photocam.c +++ b/src/bin/elementary/test_photocam.c @@ -654,7 +654,7 @@ static const struct { static void _radio_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) { - unsigned char index = efl_ui_nstate_value_get(obj); + unsigned char index = elm_radio_value_get(obj); efl_ui_image_icon_set(data, photocam_icons[index].name); printf("icon is %s\n", efl_ui_image_icon_get(data)); } diff --git a/src/bin/elementary/test_ui_pager_scroll.c b/src/bin/elementary/test_ui_pager_scroll.c index 740a8fc3d8..e25132d37b 100644 --- a/src/bin/elementary/test_ui_pager_scroll.c +++ b/src/bin/elementary/test_ui_pager_scroll.c @@ -339,7 +339,7 @@ static void prev_block_check_cb(void *data, const Efl_Event *ev) Eo *pager = data; Eina_Bool prev, next; - prev = efl_ui_nstate_value_get(ev->object); + prev = efl_ui_check_selected_get(ev->object); efl_ui_pager_scroll_block_get(pager, NULL, &next); efl_ui_pager_scroll_block_set(pager, prev, next); @@ -350,7 +350,7 @@ static void next_block_check_cb(void *data, const Efl_Event *ev) Eo *pager = data; Eina_Bool prev, next; - next = efl_ui_nstate_value_get(ev->object); + next = efl_ui_check_selected_get(ev->object); efl_ui_pager_scroll_block_get(pager, &prev, NULL); efl_ui_pager_scroll_block_set(pager, prev, next); @@ -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_nstate_value_get(ev->object); + int state = efl_ui_radio_group_value_get(ev->object); efl_ui_pager_loop_mode_set(pager, state); } @@ -796,7 +796,7 @@ static void scroll_block_cb(void *data, efl_add(EFL_UI_CHECK_CLASS, box, efl_ui_widget_style_set(efl_added, "toggle"), efl_text_set(efl_added, "Prev Block"), - efl_ui_nstate_value_set(efl_added, prev), + 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)); @@ -804,7 +804,7 @@ static void scroll_block_cb(void *data, efl_add(EFL_UI_CHECK_CLASS, box, efl_ui_widget_style_set(efl_added, "toggle"), efl_text_set(efl_added, "Next Block"), - efl_ui_nstate_value_set(efl_added, next), + 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)); @@ -849,7 +849,7 @@ static void loop_cb(void *data EINA_UNUSED, loop = efl_ui_pager_loop_mode_get(pager); - efl_ui_nstate_value_set(rd, loop); + efl_ui_radio_group_value_set(rd, loop); if (loop == EFL_UI_PAGER_LOOP_DISABLED) { diff --git a/src/bin/elementary/test_ui_panel.c b/src/bin/elementary/test_ui_panel.c index a9c3cafbf8..f8bbd0bd78 100644 --- a/src/bin/elementary/test_ui_panel.c +++ b/src/bin/elementary/test_ui_panel.c @@ -67,7 +67,7 @@ test_ui_panel(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_ static void _check_changed(void *data EINA_UNUSED, const Efl_Event *ev) { - elm_config_scroll_thumbscroll_enabled_set(efl_ui_nstate_value_get(ev->object)); + elm_config_scroll_thumbscroll_enabled_set(efl_ui_check_selected_get(ev->object)); } static void @@ -76,7 +76,7 @@ _panel_toggled(void *data, const Efl_Event *ev) Evas_Object *list; int i; - if (!efl_ui_nstate_value_get(data)) return; + if (!efl_ui_check_selected_get(data)) return; list = efl_content_get(ev->object); evas_object_del(list); diff --git a/src/bin/elementary/test_ui_tab_pager.c b/src/bin/elementary/test_ui_tab_pager.c index 0b70c86c12..d2c0e6b7cd 100644 --- a/src/bin/elementary/test_ui_tab_pager.c +++ b/src/bin/elementary/test_ui_tab_pager.c @@ -491,7 +491,7 @@ _change_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED) cur = efl_ui_active_view_active_index_get(tcd->tab_pager); tab_page = efl_pack_content_get(tcd->tab_pager, cur); - if (efl_ui_nstate_value_get(tcd->label_check)) + if (efl_ui_check_selected_get(tcd->label_check)) { label = tab_label_get(); efl_text_set(efl_part(tab_page, "tab"), label); @@ -499,7 +499,7 @@ _change_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED) efl_content_set(tab_page, content); } - if (efl_ui_nstate_value_get(tcd->icon_check)) + if (efl_ui_check_selected_get(tcd->icon_check)) { icon = tab_icon_get(); efl_ui_tab_page_part_tab_icon_set(efl_part(tab_page, "tab"), icon); @@ -534,12 +534,12 @@ _tab_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) label_check = efl_add(EFL_UI_CHECK_CLASS, box, efl_text_set(efl_added, "Tab Label + Page"), - efl_ui_nstate_value_set(efl_added, EINA_FALSE), + 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_nstate_value_set(efl_added, EINA_FALSE), + efl_ui_check_selected_set(efl_added, EINA_FALSE), efl_pack_end(box, efl_added)); tcd->tab_pager = tab_pager; diff --git a/src/examples/elementary/radio_cxx_example_01.cc b/src/examples/elementary/radio_cxx_example_01.cc index 4a6e58330b..c6d5146655 100644 --- a/src/examples/elementary/radio_cxx_example_01.cc +++ b/src/examples/elementary/radio_cxx_example_01.cc @@ -31,7 +31,7 @@ efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED) bx.pack_end(radio); auto cb_val = std::bind([] (efl::ui::Radio &obj) - { std::cout << "val is now: " << obj.value_get() << std::endl; }, + { std::cout << "val is now: " << obj.group_value_get() << std::endl; }, std::placeholders::_1); efl::eolian::event_add(efl::ui::Nstate::changed_event, radio, cb_val); diff --git a/src/lib/elementary/efl_ui_check.c b/src/lib/elementary/efl_ui_check.c index e13577a407..a0f643870a 100644 --- a/src/lib/elementary/efl_ui_check.c +++ b/src/lib/elementary/efl_ui_check.c @@ -10,9 +10,7 @@ #include #include "elm_priv.h" -#include "efl_ui_nstate.eo.h" #include "efl_ui_check_private.h" -#include "efl_ui_nstate_private.h" #include "elm_part_helper.h" #define MY_CLASS EFL_UI_CHECK_CLASS @@ -28,6 +26,12 @@ static const Elm_Layout_Part_Alias_Description _text_aliases[] = {NULL, NULL} }; +static const Elm_Layout_Part_Alias_Description _content_aliases[] = +{ + {"icon", "elm.swallow.content"}, + {NULL, NULL} +}; + static const char SIG_CHANGED[] = "changed"; /* smart callbacks coming from elm check objects: */ @@ -50,26 +54,21 @@ static const Elm_Action key_actions[] = { static void _activate(Evas_Object *obj) { - EFL_UI_CHECK_DATA_GET(obj, sd); - - if (sd->statep) *sd->statep = !efl_ui_nstate_value_get(obj); - - // state will be changed to 1 by efl_ui_nstate_activate(obj) - if (efl_ui_nstate_value_get(obj) == 0) + // state will be changed by the later call to the selected_set call + if (!efl_ui_check_selected_get(obj)) { // FIXME: to do animation during state change , we need different signal // so that we can distinguish between state change by user or state change // by calling state_change() api. Keep both the signal for backward compatibility // and remove "elm,state,check,on" signal emission when we can break ABI. + // efl_ui_check_selected_set below will emit "elm,state,check,*" or "efl,state,check,*" if (elm_widget_is_legacy(obj)) { elm_layout_signal_emit(obj, "elm,activate,check,on", "elm"); - elm_layout_signal_emit(obj, "elm,state,check,on", "elm"); } else { elm_layout_signal_emit(obj, "efl,activate,check,on", "efl"); - elm_layout_signal_emit(obj, "efl,state,check,on", "efl"); } if (_elm_config->access_mode != ELM_ACCESS_MODE_OFF) @@ -81,27 +80,28 @@ _activate(Evas_Object *obj) // so that we can distinguish between state change by user or state change // by calling state_change() api. Keep both the signal for backward compatibility // and remove "elm,state,check,off" signal emission when we can break ABI. + // efl_ui_check_selected_set below will emit "elm,state,check,*" or "efl,state,check,*" if (elm_widget_is_legacy(obj)) { elm_layout_signal_emit(obj, "elm,activate,check,off", "elm"); - elm_layout_signal_emit(obj, "elm,state,check,off", "elm"); } else { elm_layout_signal_emit(obj, "efl,activate,check,off", "efl"); - elm_layout_signal_emit(obj, "efl,state,check,off", "efl"); } if (_elm_config->access_mode != ELM_ACCESS_MODE_OFF) _elm_access_say(E_("State: Off")); } - - efl_ui_nstate_activate(obj); + //This commit will update the theme with the correct signals + // "elm,state,check,on" or "elm,state,check,off" for legacy + // "efl,state,check,on" or "efl,state,check,off" for eo-api + efl_ui_check_selected_set(obj, !efl_ui_check_selected_get(obj)); if (_elm_config->atspi_mode) efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_TYPE_CHECKED, - efl_ui_nstate_value_get(obj)); + efl_ui_check_selected_get(obj)); } EOLIAN static Efl_Access_State_Set @@ -147,14 +147,14 @@ _efl_ui_check_efl_ui_widget_theme_apply(Eo *obj, Efl_Ui_Check_Data *sd EINA_UNUS if (elm_widget_is_legacy(obj)) { - if (efl_ui_nstate_value_get(obj) == 0) + if (!efl_ui_check_selected_get(obj)) elm_layout_signal_emit(obj, "elm,state,check,off", "elm"); else elm_layout_signal_emit(obj, "elm,state,check,on", "elm"); } else { - if (efl_ui_nstate_value_get(obj) == 0) + if (!efl_ui_check_selected_get(obj)) elm_layout_signal_emit(obj, "efl,state,check,off", "efl"); else elm_layout_signal_emit(obj, "efl,state,check,on", "efl"); @@ -185,7 +185,7 @@ _access_state_cb(void *data, Evas_Object *obj) if (elm_widget_disabled_get(obj)) return strdup(E_("State: Disabled")); - if (efl_ui_nstate_value_get(obj)) + if (efl_ui_check_selected_get(obj)) { on_text = elm_layout_text_get(data, "on"); @@ -212,6 +212,17 @@ _access_state_cb(void *data, Evas_Object *obj) return strdup(E_("State: Off")); } +static void +_flush_selected(Eo *obj, Eina_Bool sel) +{ + efl_ui_check_selected_set(obj, sel); + + if (_elm_config->atspi_mode) + efl_access_state_changed_signal_emit(obj, + EFL_ACCESS_STATE_TYPE_CHECKED, + efl_ui_check_selected_get(obj)); +} + static void _on_check_off(void *data, Evas_Object *o EINA_UNUSED, @@ -220,21 +231,7 @@ _on_check_off(void *data, { Evas_Object *obj = data; - EFL_UI_CHECK_DATA_GET(obj, sd); - - if (sd->statep) *sd->statep = 0; - - if (elm_widget_is_legacy(obj)) - elm_layout_signal_emit(obj, "elm,state,check,off", "elm"); - else - elm_layout_signal_emit(obj, "efl,state,check,off", "efl"); - - efl_ui_nstate_value_set(obj, 0); - - if (_elm_config->atspi_mode) - efl_access_state_changed_signal_emit(data, - EFL_ACCESS_STATE_TYPE_CHECKED, - efl_ui_nstate_value_get(obj)); + _flush_selected(obj, EINA_FALSE); } static void @@ -245,21 +242,7 @@ _on_check_on(void *data, { Evas_Object *obj = data; - EFL_UI_CHECK_DATA_GET(obj, sd); - - if (sd->statep) *sd->statep = 1; - - if (elm_widget_is_legacy(obj)) - elm_layout_signal_emit(obj, "elm,state,check,on", "elm"); - else - elm_layout_signal_emit(obj, "efl,state,check,on", "efl"); - - efl_ui_nstate_value_set(obj, 1); - - if (_elm_config->atspi_mode) - efl_access_state_changed_signal_emit(data, - EFL_ACCESS_STATE_TYPE_CHECKED, - efl_ui_nstate_value_get(obj)); + _flush_selected(obj, EINA_TRUE); } static void @@ -272,17 +255,23 @@ _on_check_toggle(void *data, } EOLIAN static Eina_Bool -_efl_ui_check_selected_get(const Eo *obj, Efl_Ui_Check_Data *pd EINA_UNUSED) +_efl_ui_check_selected_get(const Eo *obj EINA_UNUSED, Efl_Ui_Check_Data *pd EINA_UNUSED) { - return !!efl_ui_nstate_value_get(obj); + return pd->selected; } EOLIAN static void -_efl_ui_check_selected_set(Eo *obj, Efl_Ui_Check_Data *sd, Eina_Bool value) +_efl_ui_check_selected_set(Eo *obj, Efl_Ui_Check_Data *pd, Eina_Bool value) { ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); - if (sd->statep) *sd->statep = value; + if (pd->selected == value) return; + + if (elm_widget_is_legacy(obj)) + { + if (pd->statep) + *pd->statep = value; + } if (elm_widget_is_legacy(obj)) { @@ -301,16 +290,12 @@ _efl_ui_check_selected_set(Eo *obj, Efl_Ui_Check_Data *sd, Eina_Bool value) edje_object_message_signal_process(wd->resize_obj); - efl_ui_nstate_value_set(obj, value); -} + pd->selected = value; -EOLIAN static void -_efl_ui_check_efl_ui_nstate_value_set(Eo *obj, Efl_Ui_Check_Data *pd EINA_UNUSED, int state) -{ - Eina_Bool _state = !!state; - if (_state == efl_ui_nstate_value_get(obj)) return; - - efl_ui_nstate_value_set(efl_super(obj, MY_CLASS), _state); + if (elm_widget_is_legacy(obj)) + evas_object_smart_callback_call(obj, "changed", NULL); + else + efl_event_callback_call(obj, EFL_UI_CHECK_EVENT_SELECTED_CHANGED, &pd->selected); } EOLIAN static Eo * @@ -360,43 +345,21 @@ EAPI void elm_check_state_set(Evas_Object *obj, Eina_Bool state) { ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); - EFL_UI_NSTATE_DATA_GET_OR_RETURN(obj, nd); EFL_UI_CHECK_DATA_GET_OR_RETURN(obj, sd); - if (state != nd->state) - { - nd->state = state; - if (sd->statep) *sd->statep = state; - - if (elm_widget_is_legacy(obj)) - { - if (state == 1) - elm_layout_signal_emit(obj, "elm,state,check,on", "elm"); - else - elm_layout_signal_emit(obj, "elm,state,check,off", "elm"); - } - else - { - if (state == 1) - elm_layout_signal_emit(obj, "efl,state,check,on", "efl"); - else - elm_layout_signal_emit(obj, "efl,state,check,off", "efl"); - } - edje_object_message_signal_process(wd->resize_obj); - } + efl_ui_check_selected_set(obj, state); } EAPI Eina_Bool elm_check_state_get(const Evas_Object *obj) { - return !!efl_ui_nstate_value_get(obj); + return !!efl_ui_check_selected_get(obj); } EAPI void elm_check_state_pointer_set(Eo *obj, Eina_Bool *statep) { EFL_UI_CHECK_DATA_GET_OR_RETURN(obj, sd); - EFL_UI_NSTATE_DATA_GET_OR_RETURN(obj, nd); if (!statep) { @@ -405,24 +368,9 @@ elm_check_state_pointer_set(Eo *obj, Eina_Bool *statep) } sd->statep = statep; - if (*sd->statep != nd->state) + if (*sd->statep != sd->selected) { - nd->state = *sd->statep; - - if (elm_widget_is_legacy(obj)) - { - if (nd->state == 1) - elm_layout_signal_emit(obj, "elm,state,check,on", "elm"); - else - elm_layout_signal_emit(obj, "elm,state,check,off", "elm"); - } - else - { - if (nd->state == 1) - elm_layout_signal_emit(obj, "efl,state,check,on", "efl"); - else - elm_layout_signal_emit(obj, "efl,state,check,off", "efl"); - } + efl_ui_check_selected_set(obj, *sd->statep); } } @@ -439,14 +387,19 @@ _efl_ui_check_efl_access_widget_action_elm_actions_get(const Eo *obj EINA_UNUSED /* Standard widget overrides */ ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(efl_ui_check, Efl_Ui_Check_Data) +ELM_PART_TEXT_DEFAULT_IMPLEMENT(efl_ui_check, Efl_Ui_Check_Data) +ELM_PART_CONTENT_DEFAULT_IMPLEMENT(efl_ui_check, Efl_Ui_Check_Data) +ELM_LAYOUT_CONTENT_ALIASES_IMPLEMENT(MY_CLASS_PFX) /* Internal EO APIs and hidden overrides */ ELM_LAYOUT_TEXT_ALIASES_IMPLEMENT(MY_CLASS_PFX) #define EFL_UI_CHECK_EXTRA_OPS \ + ELM_LAYOUT_CONTENT_ALIASES_OPS(MY_CLASS_PFX), \ ELM_LAYOUT_TEXT_ALIASES_OPS(MY_CLASS_PFX) + #include "efl_ui_check.eo.c" #include "efl_ui_check_eo.legacy.c" diff --git a/src/lib/elementary/efl_ui_check.eo b/src/lib/elementary/efl_ui_check.eo index 5bd3d187e1..95d1635054 100644 --- a/src/lib/elementary/efl_ui_check.eo +++ b/src/lib/elementary/efl_ui_check.eo @@ -1,4 +1,4 @@ -class @beta Efl.Ui.Check extends Efl.Ui.Nstate implements Efl.Access.Widget.Action +class @beta Efl.Ui.Check extends Efl.Ui.Layout_Base implements Efl.Access.Widget.Action, Efl.Text, Efl.Content { [[Check widget @@ -24,8 +24,14 @@ class @beta Efl.Ui.Check extends Efl.Ui.Nstate implements Efl.Access.Widget.Acti Efl.Ui.Widget.on_access_activate; Efl.Ui.Widget.theme_apply; Efl.Ui.Widget.widget_input_event_handler; - Efl.Ui.Nstate.value { set; } Efl.Access.Object.state_set { get; } Efl.Access.Widget.Action.elm_actions { get; } + Efl.Content.content { get; set; } + Efl.Content.content_unset; + Efl.Text.text { get; set; } + Efl.Ui.L10n.l10n_text { get; set; } + } + events { + selected,changed : bool; [[Emitted each time selected has changed]] } } diff --git a/src/lib/elementary/efl_ui_check_private.h b/src/lib/elementary/efl_ui_check_private.h index e44c6035e4..82031b28fe 100644 --- a/src/lib/elementary/efl_ui_check_private.h +++ b/src/lib/elementary/efl_ui_check_private.h @@ -27,6 +27,7 @@ typedef struct _Efl_Ui_Check_Data Efl_Ui_Check_Data; struct _Efl_Ui_Check_Data { Eina_Bool *statep; + Eina_Bool selected; }; /** diff --git a/src/lib/elementary/efl_ui_radio.c b/src/lib/elementary/efl_ui_radio.c index 565a80e13c..a25a9b6007 100644 --- a/src/lib/elementary/efl_ui_radio.c +++ b/src/lib/elementary/efl_ui_radio.c @@ -286,7 +286,7 @@ _efl_ui_radio_state_value_get(const Eo *obj EINA_UNUSED, Efl_Ui_Radio_Data *sd) } EOLIAN static void -_efl_ui_radio_efl_ui_nstate_value_set(Eo *obj EINA_UNUSED, Efl_Ui_Radio_Data *sd, int value) +_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; @@ -295,7 +295,7 @@ _efl_ui_radio_efl_ui_nstate_value_set(Eo *obj EINA_UNUSED, Efl_Ui_Radio_Data *sd } EOLIAN static int -_efl_ui_radio_efl_ui_nstate_value_get(const Eo *obj EINA_UNUSED, Efl_Ui_Radio_Data *sd) +_efl_ui_radio_group_value_get(const Eo *obj EINA_UNUSED, Efl_Ui_Radio_Data *sd) { return sd->group->value; } @@ -486,13 +486,13 @@ elm_radio_add(Evas_Object *parent) EAPI void elm_radio_value_set(Evas_Object *obj, int value) { - efl_ui_nstate_value_set(obj, value); + efl_ui_radio_group_value_set(obj, value); } EAPI int elm_radio_value_get(const Evas_Object *obj) { - return efl_ui_nstate_value_get(obj); + return efl_ui_radio_group_value_get(obj); } #include "efl_ui_radio_legacy_eo.c" diff --git a/src/lib/elementary/efl_ui_radio.eo b/src/lib/elementary/efl_ui_radio.eo index 8dabfc7cfc..a833f39e09 100644 --- a/src/lib/elementary/efl_ui_radio.eo +++ b/src/lib/elementary/efl_ui_radio.eo @@ -1,4 +1,4 @@ -class @beta Efl.Ui.Radio extends Efl.Ui.Check implements Efl.Access.Widget.Action, Efl.Content +class @beta Efl.Ui.Radio extends Efl.Ui.Check implements Efl.Access.Widget.Action { [[Elementary radio class]] methods { @@ -56,6 +56,15 @@ class @beta Efl.Ui.Radio extends Efl.Ui.Check implements Efl.Access.Widget.Actio to join.]] } } + @property group_value { + [[Change the value of the group. + + This will enable the radio button in the group that is assosiated with this value. A value which is not assosiated with any radio button will result in every radio button beeing disabled. + ]] + values { + value : int; [[The value of the radio button in the group which should be enabled.]] + } + } } implements { Efl.Object.constructor; @@ -65,6 +74,5 @@ class @beta Efl.Ui.Radio extends Efl.Ui.Check implements Efl.Access.Widget.Actio Efl.Ui.Widget.widget_input_event_handler; Efl.Access.Object.state_set { get; } Efl.Access.Widget.Action.elm_actions { get; } - Efl.Ui.Nstate.value { set; get; } } } diff --git a/src/tests/elementary/efl_ui_suite.c b/src/tests/elementary/efl_ui_suite.c index 8a8fc123d1..6fab5d7003 100644 --- a/src/tests/elementary/efl_ui_suite.c +++ b/src/tests/elementary/efl_ui_suite.c @@ -26,6 +26,7 @@ static const Efl_Test_Case etc[] = { { "Efl_Ui_Model", efl_ui_model }, { "efl_ui_widget", efl_ui_test_widget }, { "efl_ui_active_view", efl_ui_test_active_view}, + { "efl_ui_check", efl_ui_test_check }, { NULL, NULL } }; diff --git a/src/tests/elementary/efl_ui_suite.h b/src/tests/elementary/efl_ui_suite.h index 004a2a3a52..472493818a 100644 --- a/src/tests/elementary/efl_ui_suite.h +++ b/src/tests/elementary/efl_ui_suite.h @@ -30,13 +30,12 @@ void efl_ui_test_image_zoomable(TCase *tc); void efl_ui_test_layout(TCase *tc); void efl_ui_test_image(TCase *tc); void efl_ui_test_callback(TCase *tc); - void efl_ui_test_focus(TCase *tc); void efl_ui_test_focus_sub(TCase *tc); - void efl_ui_model(TCase *tc); void efl_ui_test_widget(TCase *tc); void efl_ui_test_active_view(TCase *tc); +void efl_ui_test_check(TCase *tc); void loop_timer_interval_set(Eo *obj, double in); diff --git a/src/tests/elementary/efl_ui_test_check.c b/src/tests/elementary/efl_ui_test_check.c new file mode 100644 index 0000000000..bd38aa1e8e --- /dev/null +++ b/src/tests/elementary/efl_ui_test_check.c @@ -0,0 +1,80 @@ +#ifdef HAVE_CONFIG_H +# include "elementary_config.h" +#endif + +#include +#include "efl_ui_suite.h" + +static Eo *win, *check; + +static void +check_setup() +{ + win = win_add(); + + check = efl_add(EFL_UI_CHECK_CLASS, win); +} + +EFL_START_TEST(check_content) +{ + Eo *t = efl_add(EFL_UI_BUTTON_CLASS, win, + efl_text_set(efl_added, "asdf") + ); + efl_content_set(check, t); + ck_assert_ptr_eq(efl_content_get(check), t); + //TODO verify that signals can be emitted +} +EFL_END_TEST + +EFL_START_TEST(check_text) +{ + efl_text_set(check, "Test the Rest"); + ck_assert_str_eq(efl_text_get(check), "Test the Rest"); + //TODO verify that signals can be emitted +} +EFL_END_TEST + +EFL_START_TEST(check_selection_state) +{ + efl_ui_check_selected_set(check, EINA_TRUE); + ck_assert_int_eq(efl_ui_check_selected_get(check), EINA_TRUE); + efl_ui_check_selected_set(check, EINA_TRUE); + ck_assert_int_eq(efl_ui_check_selected_get(check), EINA_TRUE); + //TODO verify that signals can be emitted + + efl_ui_check_selected_set(check, EINA_FALSE); + ck_assert_int_eq(efl_ui_check_selected_get(check), EINA_FALSE); + efl_ui_check_selected_set(check, EINA_FALSE); + ck_assert_int_eq(efl_ui_check_selected_get(check), EINA_FALSE); + //TODO verify that signals can be emitted +} +EFL_END_TEST + +static void +_check(void *data, const Efl_Event *ev) +{ + Eina_Bool *flag = data; + + *flag = *((Eina_Bool*)ev->info); +} + +EFL_START_TEST(check_selection_events) +{ + Eina_Bool bool_event_info = EINA_FALSE; + + efl_event_callback_add(check, EFL_UI_CHECK_EVENT_SELECTED_CHANGED, _check, &bool_event_info); + efl_ui_check_selected_set(check, EINA_TRUE); + ck_assert_int_eq(bool_event_info, EINA_TRUE); + efl_ui_check_selected_set(check, EINA_FALSE); + ck_assert_int_eq(bool_event_info, EINA_FALSE); +} +EFL_END_TEST + +void efl_ui_test_check(TCase *tc) +{ + tcase_add_checked_fixture(tc, check_setup, NULL); + tcase_add_test(tc, check_selection_state); + tcase_add_test(tc, check_text); + tcase_add_test(tc, check_content); + tcase_add_test(tc, check_selection_events); +} diff --git a/src/tests/elementary/meson.build b/src/tests/elementary/meson.build index 31ce270f4b..735ba0a829 100644 --- a/src/tests/elementary/meson.build +++ b/src/tests/elementary/meson.build @@ -139,6 +139,7 @@ efl_ui_suite_src = [ 'efl_ui_model.c', 'efl_ui_test_widget.c', 'efl_ui_test_active_view.c', + 'efl_ui_test_check.c', ] efl_ui_suite = executable('efl_ui_suite',