rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=254b3ad05008b38ca4ad5c8e2668c8a4fd08019c
commit 254b3ad05008b38ca4ad5c8e2668c8a4fd08019c Author: Vitalii Vorobiov <vi.vorob...@samsung.com> Date: Wed Jan 13 17:05:57 2016 +0000 demo_group: add and del parts, and update demo_group with it --- src/bin/ui/demo_group.c | 112 +++++++++++++++++++++++++++++++++++++++ src/bin/ui/demo_group.h | 12 +++++ src/bin/ui/workspace/workspace.c | 18 +++++-- 3 files changed, 138 insertions(+), 4 deletions(-) diff --git a/src/bin/ui/demo_group.c b/src/bin/ui/demo_group.c index 04111ee..1cd262c 100644 --- a/src/bin/ui/demo_group.c +++ b/src/bin/ui/demo_group.c @@ -365,3 +365,115 @@ demo_group_del(Evas_Object *demo) free(pl); } + +void +demo_group_part_add(Evas_Object *demo, Part *part) +{ + Part_Demo_List *pl = evas_object_data_get(demo, DEMO_GROUP_DATA); + Demo_Part *demo_part; + + assert(part->name != NULL); + + if ((part->type == EDJE_PART_TYPE_TEXT) || + (part->type == EDJE_PART_TYPE_TEXTBLOCK)) + { + demo_part = mem_calloc(1, sizeof(Demo_Part)); + demo_part->name = eina_stringshare_add(part->name); + demo_part->type = part->type; + pl->text_list = eina_list_append(pl->text_list, demo_part); + elm_genlist_item_append(pl->genlist, + itc_part, + demo_part, + pl->it_text, + ELM_GENLIST_ITEM_NONE, + NULL, + NULL); + } + else if (part->type == EDJE_PART_TYPE_SWALLOW) + { + demo_part = mem_calloc(1, sizeof(Demo_Part)); + demo_part->name = eina_stringshare_add(part->name); + demo_part->type = part->type; + pl->swallow_list = eina_list_append(pl->swallow_list, demo_part); + elm_genlist_item_append(pl->genlist, + itc_part, + demo_part, + pl->it_swallow, + ELM_GENLIST_ITEM_NONE, + NULL, + NULL); + } +} + +static void +_part_item_del(Elm_Object_Item *pl, Demo_Part *part) +{ + Elm_Object_Item *part_item; + const Eina_List *part_items; + Demo_Part *pr; + + assert(pl != NULL); + assert(part != NULL); + + if (!elm_genlist_item_expanded_get(pl)) return; + + part_items = elm_genlist_item_subitems_get(pl); + + part_item = eina_list_data_get(part_items); + pr = elm_object_item_data_get(part_item); + while (pr->name != part->name) + { + part_items = eina_list_next(part_items); + part_item = eina_list_data_get(part_items); + pr = elm_object_item_data_get(part_item); + + assert(pr != NULL); + } + assert(part_item != NULL); + + elm_object_item_del(part_item); + elm_genlist_item_update(pl); + return; +} + +void +demo_group_part_del(Evas_Object *demo, Part *part) +{ + Part_Demo_List *pl = evas_object_data_get(demo, DEMO_GROUP_DATA); + Demo_Part *demo_part; + Eina_List *l; + + assert(pl); + assert(part->name != NULL); + + if ((part->type == EDJE_PART_TYPE_TEXT) || + (part->type == EDJE_PART_TYPE_TEXTBLOCK)) + { + EINA_LIST_FOREACH(pl->text_list, l, demo_part) + { + if (demo_part->name == part->name) + { + pl->text_list = eina_list_remove(pl->text_list, demo_part); + _part_item_del(pl->it_text, demo_part); + eina_stringshare_del(demo_part->name); + free(demo_part); + return; + } + } + } + else if (part->type == EDJE_PART_TYPE_SWALLOW) + { + EINA_LIST_FOREACH(pl->swallow_list, l, demo_part) + { + if (demo_part->name == part->name) + { + pl->swallow_list = eina_list_remove(pl->swallow_list, demo_part); + _part_item_del(pl->it_swallow, demo_part); + eina_stringshare_del(demo_part->name); + eina_stringshare_del(demo_part->image_path); + free(demo_part); + return; + } + } + } +} diff --git a/src/bin/ui/demo_group.h b/src/bin/ui/demo_group.h index e1248cb..be80f16 100644 --- a/src/bin/ui/demo_group.h +++ b/src/bin/ui/demo_group.h @@ -101,4 +101,16 @@ demo_group_add(Group *group); void demo_group_del(Evas_Object *demo_group); +/** + * @ingroup DemoGroup + */ +void +demo_group_part_add(Evas_Object *demo, Part *part); + +/** + * @ingroup DemoGroup + */ +void +demo_group_part_del(Evas_Object *demo, Part *part); + #endif /* DEMO_GROUP_H */ diff --git a/src/bin/ui/workspace/workspace.c b/src/bin/ui/workspace/workspace.c index 5cdabf4..b13f3ad 100644 --- a/src/bin/ui/workspace/workspace.c +++ b/src/bin/ui/workspace/workspace.c @@ -937,6 +937,14 @@ _workspace_smart_add(Evas_Object *o) _workspace_parent_sc->add(o); } +/* + * It's necessary to avoid warning: implicit declaration of function + * 'elm_widget_sub_object_add' on compilation stage, which occurrs because of + * Elementary.h file isn't contain directly elm_widget.h file (where + * 'elm_widget_sub_object_add' function declared) + */ +Eina_Bool elm_widget_sub_object_add(Evas_Object *obj, Evas_Object *sobj); + static void _mode_changed(void *data, Evas_Object *obj, @@ -984,8 +992,8 @@ _mode_changed(void *data, evas_object_show(sd->active_mode_object); container_content_set(sd->container.obj, sd->active_mode_object); - elm_object_part_content_unset(sd->panes, "right"); - evas_object_hide(sd->group_navigator); + evas_object_hide(elm_object_part_content_unset(sd->panes, "right")); + elm_widget_sub_object_add(sd->panes, sd->group_navigator); evas_object_hide(sd->highlight.highlight); elm_object_part_content_set(sd->panes, "right", sd->demo_group); evas_object_show(sd->demo_group); @@ -1000,8 +1008,8 @@ _mode_changed(void *data, /* if last mode was demo... */ if (sd->active_mode == MODE_DEMO) { - elm_object_part_content_unset(sd->panes, "right"); - evas_object_hide(sd->demo_group); + evas_object_hide(elm_object_part_content_unset(sd->panes, "right")); + elm_widget_sub_object_add(sd->panes, sd->demo_group); elm_object_part_content_set(sd->panes, "right", sd->group_navigator); evas_object_show(sd->group_navigator); evas_object_smart_callback_call(ap.win, SIGNAL_TAB_CHANGED, sd->group); @@ -1789,6 +1797,7 @@ workspace_part_add(Evas_Object *obj, Eina_Stringshare *part_name) part = gm_part_add(ap.project, sd->group, part_name); groupedit_edit_object_part_add(sd->groupedit, part); group_navigator_part_add(sd->group_navigator, part); + demo_group_part_add(sd->demo_group, part); } void @@ -1800,6 +1809,7 @@ workspace_part_del(Evas_Object *obj, Eina_Stringshare *part_name) part = pm_resource_unsorted_get(sd->group->parts, part_name); group_navigator_part_del(sd->group_navigator, part); + demo_group_part_del(sd->demo_group, part); groupedit_edit_object_part_del(sd->groupedit, part); gm_part_del(ap.project, part); } --