rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=ab0977f075839b9ff994b93e002f8791f2e72c99
commit ab0977f075839b9ff994b93e002f8791f2e72c99 Author: Vitalii Vorobiov <vi.vorob...@samsung.com> Date: Wed Dec 16 16:22:36 2015 +0200 demo_group: switch between navigators and show property in workspace --- src/bin/ui/demo_group.c | 92 ++++++++++++++++++++++++---------------- src/bin/ui/workspace/workspace.c | 24 +++++++++++ 2 files changed, 80 insertions(+), 36 deletions(-) diff --git a/src/bin/ui/demo_group.c b/src/bin/ui/demo_group.c index 399dd2f..9243761 100644 --- a/src/bin/ui/demo_group.c +++ b/src/bin/ui/demo_group.c @@ -33,6 +33,7 @@ typedef struct Evas_Object *genlist; Elm_Object_Item *selected_part_item; + Elm_Object_Item *it_swallow, *it_text, *it_signal; } Part_Demo_List; static Elm_Genlist_Item_Class *itc_group; @@ -97,6 +98,46 @@ _contracted_cb(void *data __UNUSED__, elm_genlist_item_subitems_clear(glit); } static void +_expanded_cb(void *data, + Evas_Object *o __UNUSED__, + void *event_info) +{ + Elm_Object_Item *glit = event_info; + Part_Demo_List *pl = data; + Eina_List *l; + Part_ *part; + + TODO("remove this hack after https://phab.enlightenment.org/D2965 will be accepted"); + assert(pl != NULL); + + EINA_LIST_FOREACH(pl->group->parts, l, part) + { + if ((glit == pl->it_text) && + ((part->type == EDJE_PART_TYPE_TEXT) || + (part->type == EDJE_PART_TYPE_TEXTBLOCK))) + { + elm_genlist_item_append(pl->genlist, + itc_part, + part, + pl->it_text, + ELM_GENLIST_ITEM_NONE, + NULL, + NULL); + } + else if ((glit == pl->it_swallow) && + (part->type == EDJE_PART_TYPE_SWALLOW)) + { + elm_genlist_item_append(pl->genlist, + itc_part, + part, + pl->it_swallow, + ELM_GENLIST_ITEM_NONE, + NULL, + NULL); + } + } +} +static void _selected_cb(void *data __UNUSED__, Evas_Object *o __UNUSED__, void *event_info __UNUSED__) @@ -106,10 +147,6 @@ _selected_cb(void *data __UNUSED__, Evas_Object * demo_group_add(Group *group) { - Elm_Object_Item *it_swallow, *it_text; - Eina_List *l; - Part_ *part; - assert(group != NULL); assert(ap.win != NULL); @@ -120,6 +157,7 @@ demo_group_add(Group *group) evas_object_data_set(pl->layout, DEMO_GROUP_DATA, pl); + pl->group = group; /* add some genlists */ if (!itc_group) { @@ -127,12 +165,14 @@ demo_group_add(Group *group) itc_group->item_style = "part"; itc_group->func.text_get = _group_label_get; } - if (!itc_part) { itc_part = elm_genlist_item_class_new(); itc_part->item_style = "state"; itc_part->func.text_get = _part_label_get; + } + if (!itc_part_selected) + { itc_part_selected = elm_genlist_item_class_new(); itc_part_selected->item_style = "state_selected"; itc_part_selected->func.text_get = _part_label_get; @@ -143,6 +183,7 @@ demo_group_add(Group *group) itc_signals->item_style = "item"; itc_signals->func.text_get = _group_label_get; } + /* filling genlist */ pl->genlist = elm_genlist_add(pl->layout); elm_genlist_homogeneous_set(pl->layout, true); @@ -152,56 +193,35 @@ demo_group_add(Group *group) evas_object_smart_callback_add(pl->genlist, "clicked,double", _on_clicked_double, pl); evas_object_smart_callback_add(pl->genlist, "expand,request", _expand_request_cb, pl); evas_object_smart_callback_add(pl->genlist, "contract,request", _contract_request_cb, pl); + evas_object_smart_callback_add(pl->genlist, "expanded", _expanded_cb, pl); evas_object_smart_callback_add(pl->genlist, "contracted", _contracted_cb, pl); evas_object_smart_callback_add(pl->genlist, "selected", _selected_cb, pl); evas_object_data_set(pl->genlist, DEMO_GROUP_DATA, pl); - it_swallow = elm_genlist_item_append(pl->genlist, + pl->it_swallow = elm_genlist_item_append(pl->genlist, itc_group, eina_stringshare_add("Swallows"), NULL, ELM_GENLIST_ITEM_TREE, NULL, NULL); - it_text = elm_genlist_item_append(pl->genlist, + pl->it_text = elm_genlist_item_append(pl->genlist, itc_group, eina_stringshare_add("Text"), NULL, ELM_GENLIST_ITEM_TREE, NULL, NULL); - elm_genlist_item_append(pl->genlist, - itc_group, - eina_stringshare_add("Signals"), - NULL, - ELM_GENLIST_ITEM_TREE, - NULL, - NULL); - - EINA_LIST_FOREACH(group->parts, l, part) - { - if ((part->type == EDJE_PART_TYPE_TEXT) || (part->type == EDJE_PART_TYPE_TEXTBLOCK)) - elm_genlist_item_append(pl->genlist, - itc_part, - part, - it_text, - ELM_GENLIST_ITEM_NONE, - NULL, - NULL); - else if (part->type == EDJE_PART_TYPE_SWALLOW) - elm_genlist_item_append(pl->genlist, - itc_part, - part, - it_swallow, - ELM_GENLIST_ITEM_NONE, - NULL, - NULL); - } + pl->it_signal = elm_genlist_item_append(pl->genlist, + itc_group, + eina_stringshare_add("Signals"), + NULL, + ELM_GENLIST_ITEM_TREE, + NULL, + NULL); elm_object_text_set(pl->layout, pl->group->name); - pl->group = group; - return pl->layout; } diff --git a/src/bin/ui/workspace/workspace.c b/src/bin/ui/workspace/workspace.c index fe66014..657a190 100644 --- a/src/bin/ui/workspace/workspace.c +++ b/src/bin/ui/workspace/workspace.c @@ -28,6 +28,7 @@ #include "new_history.h" #include "editor.h" #include "demo.h" +#include "demo_group.h" struct _Ws_Menu { @@ -130,6 +131,7 @@ struct _Ws_Smart_Data Evas_Object *panes; Evas_Object *group_navigator; + Evas_Object *demo_group; struct { Evas_Object *highlight; /**< A highlight object */ @@ -982,6 +984,7 @@ _mode_changed(void *data, evas_object_del(sd->active_mode_object); mode = elm_radio_state_value_get(obj); + switch (mode) { case MODE_NORMAL: @@ -1006,10 +1009,26 @@ _mode_changed(void *data, sd->active_mode_object = demo_add(sd->scroller, sd->group); 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); + elm_object_part_content_set(sd->panes, "right", sd->demo_group); + evas_object_show(sd->demo_group); + break; } default: break; } + + /* 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); + elm_object_part_content_set(sd->panes, "right", sd->group_navigator); + evas_object_show(sd->group_navigator); + } + sd->active_mode = mode; } @@ -1546,6 +1565,11 @@ workspace_add(Evas_Object *parent, Group *group) evas_object_smart_callback_add(sd->group_navigator, SIGNAL_GROUP_NAVIGATOR_PART_VISIBLE_CHANGED, _on_group_navigator_part_visible_changed, obj); + sd->demo_group = demo_group_add(group); + evas_object_size_hint_weight_set(sd->demo_group, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(sd->demo_group, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_smart_member_add(sd->demo_group, obj); + evas_object_hide(sd->demo_group); /* create conteiner with handlers */ sd->container.obj = container_add(sd->scroller); --