rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=639f6250ba99bcddbbd96a05060b787809c9c6cf
commit 639f6250ba99bcddbbd96a05060b787809c9c6cf Author: Vitalii Vorobiov <vi.vorob...@samsung.com> Date: Wed Jan 6 14:23:05 2016 +0000 demo: list of signals available to send into demo object --- src/bin/ui/demo_group.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++-- src/bin/ui/demo_group.h | 13 ++++++++ 2 files changed, 96 insertions(+), 2 deletions(-) diff --git a/src/bin/ui/demo_group.c b/src/bin/ui/demo_group.c index 876f53b..04111ee 100644 --- a/src/bin/ui/demo_group.c +++ b/src/bin/ui/demo_group.c @@ -35,6 +35,7 @@ typedef struct Eina_List *swallow_list; Eina_List *text_list; + Eina_List *signal_list; } Part_Demo_List; static Elm_Genlist_Item_Class *itc_group; @@ -63,6 +64,18 @@ _part_label_get(void *data, return strdup(part->name); } +static char * +_sig_label_get(void *data, + Evas_Object *obj __UNUSED__, + const char *pr __UNUSED__) +{ + Demo_Signal *prog = data; + + assert(prog != NULL); + assert(prog->prog_name != NULL); + + return strdup(prog->prog_name); +} static void _on_clicked_double(void *data __UNUSED__, @@ -107,6 +120,7 @@ _expanded_cb(void *data, Part_Demo_List *pl = data; Eina_List *l; Demo_Part *part; + Demo_Signal *sig; TODO("remove this hack after https://phab.enlightenment.org/D2965 will be accepted"); assert(pl != NULL); @@ -138,6 +152,20 @@ _expanded_cb(void *data, NULL); } } + + if (glit == pl->it_signal) + { + EINA_LIST_FOREACH(pl->signal_list, l, sig) + { + elm_genlist_item_append(pl->genlist, + itc_signals, + sig, + pl->it_signal, + ELM_GENLIST_ITEM_NONE, + NULL, + NULL); + } + } } static void _selected_cb(void *data __UNUSED__, @@ -155,6 +183,30 @@ _selected_cb(void *data __UNUSED__, else /* empty everything */ evas_object_smart_callback_call(ap.win, SIGNAL_DIFFERENT_TAB_CLICKED, NULL); } +static void +_clicked_cb(void *data, + Evas_Object *o __UNUSED__, + void *event_info __UNUSED__) +{ + Demo_Signal *signal = (Demo_Signal *)data; + evas_object_smart_callback_call(ap.win, SIGNAL_DEMO_SIGNAL_SEND, signal); +} + +static Evas_Object * +_content_get(void *data __UNUSED__, + Evas_Object *obj, + const char *part) +{ + Evas_Object *button = NULL, *ic = NULL; + if (!strcmp(part, "elm.swallow.end")) + { + BUTTON_ADD(obj, button, NULL); + ICON_STANDARD_ADD(button, ic, false, "impuls_in"); + elm_object_part_content_set(button, NULL, ic); + evas_object_smart_callback_add(button, "clicked", _clicked_cb, data); + } + return button; +} Evas_Object * demo_group_add(Group *group) @@ -162,6 +214,7 @@ demo_group_add(Group *group) Part *part; Eina_List *l; Demo_Part *demo_part; + Demo_Signal *demo_sig; assert(group != NULL); assert(ap.win != NULL); @@ -196,8 +249,9 @@ demo_group_add(Group *group) if (!itc_signals) { itc_signals = elm_genlist_item_class_new(); - itc_signals->item_style = "item"; - itc_signals->func.text_get = _group_label_get; + itc_signals->item_style = "signal"; + itc_signals->func.text_get = _sig_label_get; + itc_signals->func.content_get = _content_get; } /* filling genlist */ @@ -255,6 +309,24 @@ demo_group_add(Group *group) } } + Resource *prog_name; + Eina_Stringshare *sig_name, *source_name; + EINA_LIST_FOREACH(pl->group->programs, l, prog_name) + { + sig_name = edje_edit_program_signal_get(pl->group->edit_object, prog_name->name); + source_name = edje_edit_program_source_get(pl->group->edit_object, prog_name->name); + if (!source_name) source_name = eina_stringshare_add(""); + if ((sig_name) && (strcmp(sig_name, "drag") != 0) && + (strncmp(sig_name, "mouse", strlen("mouse")) != 0)) + { + demo_sig = mem_calloc(1, sizeof(Demo_Part)); + demo_sig->prog_name = eina_stringshare_add(prog_name->name); + demo_sig->sig_name = eina_stringshare_add(sig_name); + demo_sig->source_name = eina_stringshare_add(source_name); + pl->signal_list = eina_list_append(pl->signal_list, demo_sig); + } + } + elm_object_text_set(pl->layout, pl->group->name); return pl->layout; @@ -265,6 +337,7 @@ demo_group_del(Evas_Object *demo) { Part_Demo_List *pl = evas_object_data_get(demo, DEMO_GROUP_DATA); Demo_Part *demo_part; + Demo_Signal *demo_sig; TODO("probably call for some content del? to remove content from demo?"); /* WILL DO IN ANOTHER COMMIT */ @@ -282,5 +355,13 @@ demo_group_del(Evas_Object *demo) free(demo_part); } + EINA_LIST_FREE(pl->signal_list, demo_sig) + { + eina_stringshare_del(demo_sig->prog_name); + eina_stringshare_del(demo_sig->sig_name); + eina_stringshare_del(demo_sig->source_name); + free(demo_sig); + } + free(pl); } diff --git a/src/bin/ui/demo_group.h b/src/bin/ui/demo_group.h index 242e361..5110200 100644 --- a/src/bin/ui/demo_group.h +++ b/src/bin/ui/demo_group.h @@ -59,6 +59,12 @@ typedef enum _Swallow_Content_Widget_Type */ typedef struct Demo_Part_ Demo_Part; +/** + * @typedef Demo_Signal_ + * @ingroup DemoGroup + */ +typedef struct Demo_Signal_ Demo_Signal; + struct Demo_Part_ { Eina_Stringshare *name; /**< part name */ @@ -75,6 +81,13 @@ struct Demo_Part_ demo need to create new one */ }; +struct Demo_Signal_ +{ + Eina_Stringshare *prog_name; + Eina_Stringshare *sig_name; + Eina_Stringshare *source_name; +}; + /** * @ingroup DemoGroup */ --