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;
 }

-- 


Reply via email to