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

-- 


Reply via email to