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

-- 


Reply via email to