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);

-- 


Reply via email to