rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=43b65f707033694c7e9cc2b2dfb5b071ec3faf06
commit 43b65f707033694c7e9cc2b2dfb5b071ec3faf06 Author: Vitalii Vorobiov <vi.vorob...@samsung.com> Date: Wed Jan 13 14:05:56 2016 +0000 live_radio: text,swallow set and signal sending --- src/bin/ui/demo_group.h | 1 + src/bin/ui/live_view/elementary/live_radio.c | 77 +++++++++++++++++++++------- 2 files changed, 60 insertions(+), 18 deletions(-) diff --git a/src/bin/ui/demo_group.h b/src/bin/ui/demo_group.h index 5110200..e1248cb 100644 --- a/src/bin/ui/demo_group.h +++ b/src/bin/ui/demo_group.h @@ -72,6 +72,7 @@ struct Demo_Part_ Eina_Stringshare *text_content; /**< text in demo (for TEXT parts) */ Evas_Object *object; /**< object content in demo (for SWALLOW parts) */ + Eina_List *objects; /**< for demos containing several widgets to show (like radio) */ int swallow_content; /**< type of content (picture, rectangle or widget) */ int r, g, b, a; /**< color of content */ int widget; /**< number of widget to be set up */ diff --git a/src/bin/ui/live_view/elementary/live_radio.c b/src/bin/ui/live_view/elementary/live_radio.c index 61554aa..16b645f 100644 --- a/src/bin/ui/live_view/elementary/live_radio.c +++ b/src/bin/ui/live_view/elementary/live_radio.c @@ -24,8 +24,47 @@ _on_radio_swallow_check(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *ei __UNUSED__) { - TODO("Remake on_swallow_check, so that would be used everywhere.") - ERR(N_("Complex widgets are not implemented yet.")) + Demo_Part *part = (Demo_Part *)ei; + Evas_Object *object = (Evas_Object *) data; + Eina_List* radio_list = elm_box_children_get(object); + Evas_Object *content, *radio_obj; + + int content_type = part->swallow_content; + + EINA_LIST_FREE(radio_list, radio_obj) + { + content = elm_object_part_content_unset(radio_obj, part->name); + if (part->change) + { + part->objects = eina_list_remove(part->objects, content); + evas_object_del(content); + content = NULL; + + /* if NONE - delete object */ + if (content_type != CONTENT_NONE) + { + content = object_generate(part, object); + part->objects = eina_list_append(part->objects, content); + elm_object_part_content_set(radio_obj, part->name, content); + } + } + + if (content) + { + evas_object_color_set(content, + part->r, + part->g, + part->b, + part->a); + + evas_object_size_hint_min_set(content, + part->min_w, + part->min_h); + evas_object_size_hint_max_set(content, + part->max_w, + part->max_h); + } + } } static void @@ -33,29 +72,31 @@ _on_radio_text_check(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *ei __UNUSED__) { - TODO("Remake on_text_check, so that would be used everywhere.") - ERR(N_("Complex widgets are not implemented yet.")) + Demo_Part *part = (Demo_Part *)ei; + Evas_Object *object = (Evas_Object *) data; + Eina_List* radio_list = elm_box_children_get(object); + Evas_Object *radio_obj; + + EINA_LIST_FREE(radio_list, radio_obj) + elm_object_part_text_set(radio_obj, part->name, part->text_content); } static void _radio_send_signal(void *data, - Evas_Object *obj, + Evas_Object *obj __UNUSED__, void *ei __UNUSED__) { + Demo_Signal *sig = (Demo_Signal *)ei; + Evas_Object *object = (Evas_Object *)data; + Eina_List* radio_list = elm_box_children_get(object); Evas_Object *radio_obj = NULL; - assert(data != NULL); - - Eina_List* radio_list = elm_box_children_get(data); - - const char *name = evas_object_data_get(obj, SIGNAL_NAME); - const char *source = evas_object_data_get(obj, SIGNAL_SOURCE); - - assert(name != NULL); - assert(source != NULL); + assert(sig != NULL); + assert(sig->sig_name != NULL); + assert(sig->source_name != NULL); EINA_LIST_FREE(radio_list, radio_obj) - elm_layout_signal_emit(radio_obj, name, source); + elm_layout_signal_emit(radio_obj, sig->sig_name, sig->source_name); } Evas_Object * @@ -85,9 +126,9 @@ widget_radio_create(Evas_Object *parent, const Group *group) elm_radio_value_set(rdg, 2); - evas_object_data_set(object, SWALLOW_FUNC, _on_radio_swallow_check); - evas_object_data_set(object, TEXT_FUNC, _on_radio_text_check); - evas_object_data_set(object, SIGNAL_FUNC, _radio_send_signal); + evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_SWALLOW_SET, _on_radio_swallow_check, object); + evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_TEXT_SET, _on_radio_text_check, object); + evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_SIGNAL_SEND, _radio_send_signal, object); return object; } --