rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=30fc1322196b914e3bb1677e84513e5457a744a6
commit 30fc1322196b914e3bb1677e84513e5457a744a6 Author: Vitalii Vorobiov <vi.vorob...@samsung.com> Date: Fri Jan 8 19:05:36 2016 +0000 live_gengrid: callbacks for demo are same as in genlist --- src/bin/ui/live_view/elementary/live_gengrid.c | 96 ++++++++++++++++++-------- 1 file changed, 69 insertions(+), 27 deletions(-) diff --git a/src/bin/ui/live_view/elementary/live_gengrid.c b/src/bin/ui/live_view/elementary/live_gengrid.c index ec85666..cfc4220 100644 --- a/src/bin/ui/live_view/elementary/live_gengrid.c +++ b/src/bin/ui/live_view/elementary/live_gengrid.c @@ -24,8 +24,21 @@ _on_gengrid_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 *part_list = evas_object_data_get(object, SWALLOW_LIST); + + if (!eina_list_data_find(part_list, part->name)) + part_list = eina_list_append(part_list, part); + evas_object_data_set(object, SWALLOW_LIST, part_list); + + Elm_Object_Item *item = NULL; + item = elm_gengrid_first_item_get(object); + while (item) + { + elm_gengrid_item_update(item); + item = elm_gengrid_item_next_get(item); + } } static void @@ -33,30 +46,41 @@ _on_gengrid_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 *part_list = evas_object_data_get(object, TEXT_LIST); + + if (!eina_list_data_find(part_list, part->name)) + part_list = eina_list_append(part_list, part); + evas_object_data_set(object, TEXT_LIST, part_list); + + Elm_Object_Item *item = NULL; + item = elm_gengrid_first_item_get(object); + while (item) + { + elm_gengrid_item_update(item); + item = elm_gengrid_item_next_get(item); + } } static void _gengrid_send_signal(void *data, - Evas_Object *obj, + Evas_Object *obj __UNUSED__, void *ei __UNUSED__) { + Demo_Signal *sig = (Demo_Signal *)ei; Elm_Object_Item *item = NULL; assert(data != NULL); item = elm_gengrid_first_item_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); while (item) { - elm_object_item_signal_emit(item, name, source); + elm_object_item_signal_emit(item, sig->sig_name, sig->source_name); item = elm_gengrid_item_next_get(item); } } @@ -64,19 +88,18 @@ _gengrid_send_signal(void *data, /*********** GEN GRID CREATING FUNCTIONS ****************/ static char * -_grid_text_get(void *data, +_grid_text_get(void *data __UNUSED__, Evas_Object *obj, const char *part) { Eina_List *part_list = evas_object_data_get(obj, TEXT_LIST); + Demo_Part *demo_part; Eina_List *l = NULL; - const char *part_name = NULL; - const char *text = (char *) data; - EINA_LIST_FOREACH(part_list, l, part_name) + EINA_LIST_FOREACH(part_list, l, demo_part) { - if (!strcmp(part_name, part)) - return strdup(text); + if (!strcmp(demo_part->name, part)) + return strdup(demo_part->text_content); } return NULL; @@ -88,16 +111,35 @@ _grid_content_get(void *data __UNUSED__, const char *part) { Eina_List *part_list = evas_object_data_get(obj, SWALLOW_LIST); + Demo_Part *demo_part; Eina_List *l = NULL; - const char *part_name = NULL; - EINA_LIST_FOREACH(part_list, l, part_name) + EINA_LIST_FOREACH(part_list, l, demo_part) { - if (!strcmp(part_name, part)) + if (!strcmp(demo_part->name, part)) { - Evas_Object *rect = evas_object_rectangle_add(obj); - evas_object_color_set(rect, HIGHLIGHT_COLOR); - return rect; + if ((demo_part->swallow_content == CONTENT_NONE) && (demo_part->object)) + demo_part->object = NULL; + else if (demo_part->swallow_content != CONTENT_NONE) + demo_part->object = object_generate(demo_part, obj); + + if (demo_part->object) + { + evas_object_color_set(demo_part->object, + demo_part->r, + demo_part->g, + demo_part->b, + demo_part->a); + + evas_object_size_hint_min_set(demo_part->object, + demo_part->min_w, + demo_part->min_h); + evas_object_size_hint_max_set(demo_part->object, + demo_part->max_w, + demo_part->max_h); + } + + return demo_part->object; } } @@ -167,9 +209,9 @@ widget_gengrid_create(Evas_Object *parent, const Group *group) item_style = strcmp(group->class, "item") == 0; object = _create_gengrid(parent, item_style, group->style); - evas_object_data_set(object, SWALLOW_FUNC, _on_gengrid_swallow_check); - evas_object_data_set(object, TEXT_FUNC, _on_gengrid_text_check); - evas_object_data_set(object, SIGNAL_FUNC, _gengrid_send_signal); + evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_SWALLOW_SET, _on_gengrid_swallow_check, object); + evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_TEXT_SET, _on_gengrid_text_check, object); + evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_SIGNAL_SEND, _gengrid_send_signal, object); evas_object_data_set(object, SWALLOW_LIST, swallow_list); evas_object_data_set(object, TEXT_LIST, text_list); --