rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=b7005ba837b649d90d382f46646bd5256200812c
commit b7005ba837b649d90d382f46646bd5256200812c Author: Vitalii Vorobiov <vi.vorob...@samsung.com> Date: Mon Dec 21 15:41:48 2015 +0200 demo: use custom layout if no widgets are created --- src/bin/common/signals.h | 16 +++ src/bin/ui/live_view/demo.c | 26 +--- .../ui/live_view/elementary/live_custom_layout.c | 141 +++------------------ .../live_view/elementary/live_elementary_widgets.h | 4 +- .../ui/live_view/elementary/live_widget_common.c | 44 +------ src/bin/ui/live_view/live_view.c | 2 +- 6 files changed, 45 insertions(+), 188 deletions(-) diff --git a/src/bin/common/signals.h b/src/bin/common/signals.h index 5132975..816b93b 100644 --- a/src/bin/common/signals.h +++ b/src/bin/common/signals.h @@ -354,4 +354,20 @@ typedef struct { */ #define SIGNAL_DEMO_TEXT_SET "SIGNAL_DEMO_TEXT_SET" +/** + * emited when part swallow is set with data in demo. + * eventinfo - part which contain important information like text, name, content. + * + * @ingroup Window + */ +#define SIGNAL_DEMO_SWALLOW_SET "SIGNAL_DEMO_SWALLOW_SET" + +/** + * emited when program's signal is sent into demo. + * eventinfo - NULL. + * + * @ingroup Window + */ +#define SIGNAL_DEMO_SIGNAL_SEND "SIGNAL_DEMO_SIGNAL_SEND" + #endif /* SIGNALS_H*/ diff --git a/src/bin/ui/live_view/demo.c b/src/bin/ui/live_view/demo.c index 2ee526f..d0ef53c 100644 --- a/src/bin/ui/live_view/demo.c +++ b/src/bin/ui/live_view/demo.c @@ -20,19 +20,6 @@ #include "live_view.h" #include "live_view_prop.h" -#include "signals.h" - -static void -_set_text(void *data, - Evas_Object *obj __UNUSED__, - void *event_info) -{ - Part_ *part = (Part_ *) event_info; - Evas_Object *object = (Evas_Object *) data; - - elm_object_part_text_set(object, part->name, part->content); -} - Evas_Object * demo_add(Evas_Object *parent, Group *group) { @@ -53,18 +40,13 @@ demo_add(Evas_Object *parent, Group *group) } } /* if widget is not created, need use the layout */ - obj = elm_layout_add(parent); - if (!elm_layout_file_set(obj, ap.project->dev, group->name)) + if (!obj) { - ERR(N_("Could not load group '%s' from mapped file '%s'."), group->name, ap.project->dev) - evas_object_del(obj); - obj = NULL; - TODO("Add frame to container with info that need this state is unstable" - "and need to restart Eflete."); + ERR(N_("Widget live view isn't implemented yet. Using fallback to layout")) + obj = layout_custom_create(parent, group); } - - evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_TEXT_SET, _set_text, obj); + assert(obj != NULL); return obj; } diff --git a/src/bin/ui/live_view/elementary/live_custom_layout.c b/src/bin/ui/live_view/elementary/live_custom_layout.c index d06bb51..23899ea 100644 --- a/src/bin/ui/live_view/elementary/live_custom_layout.c +++ b/src/bin/ui/live_view/elementary/live_custom_layout.c @@ -19,135 +19,26 @@ #include "live_view_prop.h" -void -on_layout_swallow_check(void *data, - Evas_Object *obj, - void *ei __UNUSED__) -{ - Evas_Object *rect = NULL, *check = NULL, *ch; - Eina_List *item_list = NULL; - Eina_Bool all_checks = true; - - Prop_Data *pd = (Prop_Data *)data; - - assert(pd != NULL); - - Evas_Object *object = pd->live_object; - const char *part_name = elm_object_part_text_get(obj, NULL); - check = elm_object_part_content_get(pd->prop_swallow.frame, "elm.swallow.check"); - - if (elm_check_state_get(obj)) - { - if (edje_object_part_swallow_get(object, part_name)) - return; - rect = evas_object_rectangle_add(object); - evas_object_color_set(rect, RECT_COLOR); - edje_object_part_swallow(object, part_name, rect); - item_list = elm_box_children_get(pd->prop_swallow.swallows); - EINA_LIST_FREE(item_list, ch) - { - if (elm_check_state_get(ch) == false) - all_checks = false; - } - if (all_checks) - elm_check_state_set(check, true); - } - else - { - rect = edje_object_part_swallow_get(object, part_name); - if (!rect) return; - edje_object_part_unswallow(object, rect); - evas_object_del(rect); - if (elm_check_state_get(check)) elm_check_state_set(check, false); - } -} - -void -on_layout_text_check(void *data, - Evas_Object *obj, - void *ei __UNUSED__) -{ - Evas_Object *check = NULL, *ch; - Eina_List *item_list = NULL; - Eina_Bool all_checks = true; - const char *default_text; - - Prop_Data *pd = (Prop_Data *)data; - - assert(pd != NULL); - - Evas_Object *object = pd->live_object; - const char *part_name = elm_object_part_text_get(obj, NULL); - check = elm_object_part_content_get(pd->prop_text.frame, "elm.swallow.check"); - - if (elm_check_state_get(obj)) - { - default_text = edje_object_part_text_get(object, part_name); - if (default_text) - eina_hash_add(pd->prop_text.default_text, part_name, eina_stringshare_add(default_text)); - edje_object_part_text_set(object, part_name, - _("Look at it! This is absolutely and totally text")); - item_list = elm_box_children_get(pd->prop_text.texts); - - EINA_LIST_FREE(item_list, ch) - { - if (elm_check_state_get(ch) == false) - all_checks = false; - } - if (all_checks) - elm_check_state_set(check, true); - } - else - { - default_text = eina_hash_find(pd->prop_text.default_text, part_name); - eina_hash_del(pd->prop_text.default_text, part_name, NULL); - edje_object_part_text_set(object, part_name, default_text); - if (elm_check_state_get(check)) elm_check_state_set(check, false); - } -} - -void -send_layout_signal(void *data, - Evas_Object *obj, - void *ei __UNUSED__) -{ - Evas_Object *object = (Evas_Object *)data; - - assert(object != NULL); - - 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); - - edje_object_signal_emit(object, name, source); -} - -static void -_on_swallow_clean(const char *part_name, Evas_Object *object) -{ - Evas_Object *rect = NULL; - - assert(part_name != NULL); - assert(object != NULL); - - rect = edje_object_part_swallow_get(object, part_name); - edje_object_part_unswallow(object, rect); - evas_object_del(rect); -} - Evas_Object * -layout_custom_create(Evas_Object *parent) +layout_custom_create(Evas_Object *parent, const Group *group) { assert(parent != NULL); - Evas_Object *object = edje_object_add(evas_object_evas_get(parent)); + Evas_Object *obj = elm_layout_add(parent); + if (!elm_layout_file_set(obj, ap.project->dev, group->name)) + { + ERR(N_("Could not load group '%s' from mapped file '%s'."), group->name, ap.project->dev) + evas_object_del(obj); + obj = NULL; + TODO("Add frame to container with info that need this state is unstable" + "and need to restart Eflete."); + return NULL; + } - evas_object_data_set(object, SWALLOW_FUNC, on_layout_swallow_check); - evas_object_data_set(object, SWALLOW_CLEAN_FUNC, _on_swallow_clean); - evas_object_data_set(object, TEXT_FUNC, on_layout_text_check); - evas_object_data_set(object, SIGNAL_FUNC, send_layout_signal); + TODO("DO swallow after text and signal (means free => SWALLOW_CLEAN_FUNC)") + evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_SWALLOW_SET, on_swallow_check, obj); + evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_TEXT_SET, on_text_check, obj); + evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_SIGNAL_SEND, send_signal, obj); - return object; + return obj; } diff --git a/src/bin/ui/live_view/elementary/live_elementary_widgets.h b/src/bin/ui/live_view/elementary/live_elementary_widgets.h index dcf8216..1ac49e5 100644 --- a/src/bin/ui/live_view/elementary/live_elementary_widgets.h +++ b/src/bin/ui/live_view/elementary/live_elementary_widgets.h @@ -30,6 +30,8 @@ #include "live_widgets.h" #include <Elementary.h> +#include "signals.h" + /** * Common Swallow callback that is used in most of simple widgets. * @@ -74,7 +76,7 @@ send_signal(void *data, Evas_Object *obj, void *event_info); * ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! * *****************************************************/ Evas_Object * -layout_custom_create(Evas_Object *parent); +layout_custom_create(Evas_Object *parent, const Group *group); Evas_Object * widget_actionslider_create(Evas_Object *parent, const Group *group); diff --git a/src/bin/ui/live_view/elementary/live_widget_common.c b/src/bin/ui/live_view/elementary/live_widget_common.c index 742e918..ea926c0 100644 --- a/src/bin/ui/live_view/elementary/live_widget_common.c +++ b/src/bin/ui/live_view/elementary/live_widget_common.c @@ -95,47 +95,13 @@ on_swallow_check(void *data, void on_text_check(void *data, - Evas_Object *obj, - void *ei __UNUSED__) + Evas_Object *obj __UNUSED__, + void *ei) { - Evas_Object *check = NULL, *ch; - Eina_List *item_list = NULL, *it; - Eina_Bool all_checks = true; - const char *default_text; - - Prop_Data *pd = (Prop_Data *)data; + Part_ *part = (Part_ *)ei; + Evas_Object *object = (Evas_Object *) data; - assert(pd != NULL); - - Evas_Object *object = pd->live_object; - const char *part_name = elm_object_part_text_get(obj, NULL); - check = elm_object_part_content_get(pd->prop_text.frame, "elm.swallow.check"); - - if (elm_check_state_get(obj)) - { - default_text = elm_object_part_text_get(object, part_name); - if (default_text) - eina_hash_add(pd->prop_text.default_text, part_name, eina_stringshare_add(default_text)); - elm_object_part_text_set(object, part_name, - _("Look at it! This is absolutely and totally text")); - item_list = elm_box_children_get(pd->prop_text.texts); - - EINA_LIST_FOREACH(item_list, it, ch) - { - if (elm_check_state_get(ch) == false) - all_checks = false; - } - if (all_checks) - elm_check_state_set(check, true); - eina_list_free(item_list); - } - else - { - default_text = eina_hash_find(pd->prop_text.default_text, part_name); - eina_hash_del(pd->prop_text.default_text, part_name, NULL); - elm_object_part_text_set(object, part_name, default_text); - if (elm_check_state_get(check)) elm_check_state_set(check, false); - } + elm_object_part_text_set(object, part->name, part->content); } void diff --git a/src/bin/ui/live_view/live_view.c b/src/bin/ui/live_view/live_view.c index aefa522..4e3f19a 100644 --- a/src/bin/ui/live_view/live_view.c +++ b/src/bin/ui/live_view/live_view.c @@ -110,7 +110,7 @@ _live_view_load_object(Live_View *live, Group *group) { if (!live->in_prog_edit) { - live->object = layout_custom_create(live->layout); + live->object = layout_custom_create(live->layout, NULL); } else { --