rimmed pushed a commit to branch eflete-1.18. http://git.enlightenment.org/tools/eflete.git/commit/?id=e2800ccd5df5f22f8c4be5ed10f3810e11e5c4cb
commit e2800ccd5df5f22f8c4be5ed10f3810e11e5c4cb Author: Vyacheslav Reutskiy <v.reuts...@samsung.com> Date: Wed Feb 22 12:02:16 2017 +0200 project_navigator: add top item 'Groups' This item is a preparetion for extend list of data in project navigator. Now project navi does not show 'data' items, top level data. For feature implement new functional, need to separate groups from other data in project navi. Change-Id: I12a7a38a87f6ee72ecb5bf086079dd0d59bd111d --- src/bin/ui/project_navigator.c | 59 ++++++++++++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/src/bin/ui/project_navigator.c b/src/bin/ui/project_navigator.c index 4eeb91a..86fcfaa 100644 --- a/src/bin/ui/project_navigator.c +++ b/src/bin/ui/project_navigator.c @@ -40,6 +40,7 @@ typedef struct Evas_Object *btn_del; Elm_Genlist_Item_Class *itc_group; Elm_Genlist_Item_Class *itc_folder; + Elm_Object_Item *item_top; } Project_Navigator; typedef struct @@ -196,7 +197,11 @@ _expanded_cb(void *data __UNUSED__, Elm_Object_Item *glit = event_info; Eina_Stringshare *prefix = elm_object_item_data_get(glit); - widget_tree_items_get(ap.project->groups, prefix, &folders, &groups); + if (glit == project_navigator.item_top) + widget_tree_items_get(ap.project->groups, "", &folders, &groups); + else + widget_tree_items_get(ap.project->groups, prefix, &folders, &groups); + EINA_LIST_FREE(folders, prefix) { elm_genlist_item_append(project_navigator.genlist, @@ -299,34 +304,38 @@ _group_add(void *data __UNUSED__, Group *group; Elm_Object_Item *item, *parent = NULL; char **arr; - unsigned int count, i; + unsigned int count, i = 0; Eina_Stringshare *prefix; group = (Group *)event_info; item = elm_genlist_first_item_get(project_navigator.genlist); arr = eina_str_split_full(group->name, "/", 0, &count); - for (i = 0; i < count; i++) + if (count > 1) { - parent = elm_genlist_item_parent_get(item); - item = _find_item(item, arr[i]); - if (!item) break; - if (elm_genlist_item_item_class_get(item) != project_navigator.itc_folder) break; - if (!elm_genlist_item_expanded_get(item)) goto exit; - item = eina_list_data_get(elm_genlist_item_subitems_get(item)); + for (i = 0; i < count; i++) + { + parent = elm_genlist_item_parent_get(item); + item = _find_item(item, arr[i]); + if (!item) break; + if (elm_genlist_item_item_class_get(item) != project_navigator.itc_folder) break; + if (!elm_genlist_item_expanded_get(item)) goto exit; + item = eina_list_data_get(elm_genlist_item_subitems_get(item)); + } } + if (!parent) parent = project_navigator.item_top; - if (i != count - 1) + if ((count > 1) && (i != count - 1)) { prefix = widget_prefix_get(group->name, i, NULL); - elm_genlist_item_sorted_insert(project_navigator.genlist, - project_navigator.itc_folder, - prefix, - parent, - ELM_GENLIST_ITEM_TREE, - _items_compare, - NULL, - NULL); + item = elm_genlist_item_sorted_insert(project_navigator.genlist, + project_navigator.itc_folder, + prefix, + parent, + ELM_GENLIST_ITEM_TREE, + _items_compare, + NULL, + NULL); } else elm_genlist_item_sorted_insert(project_navigator.genlist, @@ -797,12 +806,22 @@ project_navigator_project_set(void) elm_object_text_set(project_navigator.layout, ap.project->name); widget_tree_items_get(ap.project->groups, "", &folders, &groups); + project_navigator.item_top = elm_genlist_item_append(project_navigator.genlist, + project_navigator.itc_folder, + eina_stringshare_add("Groups"), + NULL, + ELM_GENLIST_ITEM_TREE, + NULL, + NULL); + elm_genlist_item_expanded_set(project_navigator.item_top, true); + + EINA_LIST_FREE(folders, prefix) { elm_genlist_item_append(project_navigator.genlist, project_navigator.itc_folder, prefix, - NULL, + project_navigator.item_top, ELM_GENLIST_ITEM_TREE, NULL, NULL); @@ -812,7 +831,7 @@ project_navigator_project_set(void) elm_genlist_item_append(project_navigator.genlist, project_navigator.itc_group, group, - NULL, + project_navigator.item_top, ELM_GENLIST_ITEM_NONE, NULL, NULL); --