rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=d2cdef13acd255cc28377b4e32e806159dd27ad5

commit d2cdef13acd255cc28377b4e32e806159dd27ad5
Author: Andrii Kroitor <[email protected]>
Date:   Fri May 27 12:02:49 2016 +0300

    workspace: add group_data rename support
---
 src/bin/ui/tabs.c                      | 18 ++++++++++++++
 src/bin/ui/workspace/group_navigator.c | 45 ++++++++++++++++++++++++++++++++++
 src/bin/ui/workspace/group_navigator.h |  2 ++
 src/bin/ui/workspace/workspace.c       | 10 ++++++++
 src/bin/ui/workspace/workspace.h       | 11 +++++++++
 5 files changed, 86 insertions(+)

diff --git a/src/bin/ui/tabs.c b/src/bin/ui/tabs.c
index 25c9340..cad534a 100644
--- a/src/bin/ui/tabs.c
+++ b/src/bin/ui/tabs.c
@@ -410,6 +410,23 @@ _part_renamed(void *data __UNUSED__,
 }
 
 static void
+_group_data_renamed(void *data __UNUSED__,
+              Evas_Object *obj __UNUSED__,
+              void *ei)
+{
+   Rename *ren = ei;
+   Resource *group_data;
+
+   assert(tabs.current_group != NULL);
+   assert(tabs.current_workspace != NULL);
+   assert(ren != NULL);
+
+   group_data = pm_resource_get(tabs.current_group->data_items, ren->old_name);
+   gm_group_data_rename(ap.project, tabs.current_group, group_data, 
ren->new_name);
+   workspace_group_navigator_update_group_data(tabs.current_workspace, 
group_data);
+}
+
+static void
 _editor_saved(void *data __UNUSED__,
               Evas_Object *obj __UNUSED__,
               void *ei __UNUSED__)
@@ -940,6 +957,7 @@ tabs_add(void)
    evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_SIGNAL_SEND, 
_demo_send_signal, NULL);
 
    evas_object_smart_callback_add(ap.win, SIGNAL_PART_RENAMED, _part_renamed, 
NULL);
+   evas_object_smart_callback_add(ap.win, SIGNAL_GROUP_DATA_RENAMED, 
_group_data_renamed, NULL);
    evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_SAVED, _editor_saved, 
NULL);
    evas_object_smart_callback_add(ap.win, SIGNAL_PROJECT_OPENED, 
_project_opened, NULL);
    evas_object_smart_callback_add(ap.win, SIGNAL_PROJECT_CLOSED, 
_project_closed, NULL);
diff --git a/src/bin/ui/workspace/group_navigator.c 
b/src/bin/ui/workspace/group_navigator.c
index d0b2532..3292d70 100644
--- a/src/bin/ui/workspace/group_navigator.c
+++ b/src/bin/ui/workspace/group_navigator.c
@@ -1563,6 +1563,33 @@ _part_item_find(Part_List *pl, Part *part)
    return part_item;
 }
 
+static Elm_Object_Item *
+_group_data_item_find(Part_List *pl, Resource *group_data)
+{
+   Elm_Object_Item *group_data_item;
+   const Eina_List *group_data_items;
+   Resource *pr;
+
+   assert(pl != NULL);
+   assert(group_data != NULL);
+
+   elm_genlist_item_expanded_set(pl->data_caption_item, true);
+   group_data_items = elm_genlist_item_subitems_get(pl->data_caption_item);
+
+   group_data_item = eina_list_data_get(group_data_items);
+   pr = elm_object_item_data_get(group_data_item);
+   while (pr != group_data)
+     {
+        group_data_items = eina_list_next(group_data_items);
+        group_data_item = eina_list_data_get(group_data_items);
+        pr = elm_object_item_data_get(group_data_item);
+
+        assert(pr != NULL);
+     }
+   assert(group_data_item != NULL);
+   return group_data_item;
+}
+
 static void
 _select_next_part(Part_List *pl, Eina_Bool reverse)
 {
@@ -2185,6 +2212,24 @@ group_navigator_part_update(Evas_Object *obj, Part *part)
 }
 
 void
+group_navigator_group_data_update(Evas_Object *obj, Resource *group_data)
+{
+   Elm_Object_Item *group_data_item;
+   Part_List *pl = evas_object_data_get(obj, GROUP_NAVIGATOR_DATA);
+
+   assert(pl != NULL);
+   assert(group_data != NULL);
+
+   if (elm_genlist_item_expanded_get(pl->data_caption_item))
+     {
+        group_data_item = _group_data_item_find(pl, group_data);
+        assert(group_data_item != NULL);
+
+        elm_genlist_item_update(group_data_item);
+     }
+}
+
+void
 group_navigator_add_part_request(Evas_Object *obj)
 {
    _on_menu_add_part_clicked(NULL, obj, NULL);
diff --git a/src/bin/ui/workspace/group_navigator.h 
b/src/bin/ui/workspace/group_navigator.h
index a1381af..cdfbea3 100644
--- a/src/bin/ui/workspace/group_navigator.h
+++ b/src/bin/ui/workspace/group_navigator.h
@@ -65,6 +65,8 @@ group_navigator_part_select(Evas_Object *obj, Part *part);
 void
 group_navigator_part_update(Evas_Object *obj, Part *part);
 
+void
+group_navigator_group_data_update(Evas_Object *obj, Resource *group_data);
 
 void
 group_navigator_part_state_select(Evas_Object *obj, State *state);
diff --git a/src/bin/ui/workspace/workspace.c b/src/bin/ui/workspace/workspace.c
index 633125a..e39e018 100644
--- a/src/bin/ui/workspace/workspace.c
+++ b/src/bin/ui/workspace/workspace.c
@@ -1211,6 +1211,16 @@ workspace_group_navigator_update_part(Evas_Object *obj, 
Part *part)
    group_navigator_part_update(wd->group_navi, part);
 }
 
+void
+workspace_group_navigator_update_group_data(Evas_Object *obj, Resource 
*group_data)
+{
+   WS_DATA_GET(obj);
+
+   assert(group_data != NULL);
+
+   group_navigator_group_data_update(wd->group_navi, group_data);
+}
+
 Eina_Bool
 workspace_edit_object_recalc(Evas_Object *obj __UNUSED__)
 {
diff --git a/src/bin/ui/workspace/workspace.h b/src/bin/ui/workspace/workspace.h
index a010759..145c75b 100644
--- a/src/bin/ui/workspace/workspace.h
+++ b/src/bin/ui/workspace/workspace.h
@@ -70,6 +70,17 @@ void
 workspace_group_navigator_update_part(Evas_Object *obj, Part *part);
 
 /**
+ * Update group_data info in group_data list
+ *
+ * @param obj The workspace object.
+ * @param group_data Resource to be updated.
+ *
+ * @ingroup Workspace
+ */
+void
+workspace_group_navigator_update_group_data(Evas_Object *obj, Resource 
*group_data);
+
+/**
  * Update the parts attributes, with recalculation.
  *
  * @paramaram obj The workspace object.

-- 


Reply via email to