rimmed pushed a commit to branch master.

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

commit fc5ccde74f2177560942fbc7742a4511d4f0786a
Author: Andrii Kroitor <[email protected]>
Date:   Fri May 27 11:19:41 2016 +0300

    property_group: add group_data top-level item
---
 src/bin/ui/property/property_group.c   | 41 ++++++++++++++++++++++++++++++++++
 src/bin/ui/property/property_private.h |  2 ++
 2 files changed, 43 insertions(+)

diff --git a/src/bin/ui/property/property_group.c 
b/src/bin/ui/property/property_group.c
index e300e2f..c5b798d 100644
--- a/src/bin/ui/property/property_group.c
+++ b/src/bin/ui/property/property_group.c
@@ -63,6 +63,7 @@ struct _Property_Group_Data {
    Group *group;
    Part *part;
    Program *program;
+   Resource *group_data;
 
    Resource_Name_Validator *part_name_validator;
 
@@ -220,6 +221,7 @@ _on_part_selected(void *data,
 
    DBG("selected part \"%s\"", PART_ARGS);
    group_pd.program = NULL;
+   group_pd.group_data = NULL;
    resource_name_validator_resource_set(group_pd.part_name_validator, 
(Resource *)group_pd.part);
 
    GENLIST_FILTER_APPLY(pd->genlist);
@@ -282,6 +284,7 @@ _on_program_selected(void *data,
 
    DBG("selected program \"%s\"", group_pd.program->name);
    group_pd.part = NULL;
+   group_pd.group_data = NULL;
 
    GENLIST_FILTER_APPLY(pd->genlist);
    
property_item_update_recursively(&group_pd.items[PROPERTY_GROUP_ITEM_PROGRAM_TITLE]);
@@ -295,6 +298,25 @@ _on_program_selected(void *data,
 }
 
 static void
+_on_group_data_selected(void *data,
+                        Evas_Object *obj __UNUSED__,
+                        void *event_info)
+{
+   Property_Data *pd = data;
+   group_pd.group_data = event_info;
+
+   assert(pd != NULL);
+   assert(group_pd.group_data != NULL);
+
+   DBG("selected group_data \"%s\"", group_pd.group_data->name);
+   group_pd.part = NULL;
+   group_pd.program = NULL;
+
+   GENLIST_FILTER_APPLY(pd->genlist);
+   
property_item_update_recursively(&group_pd.items[PROPERTY_GROUP_ITEM_GROUP_DATA_TITLE]);
+}
+
+static void
 _on_group_changed(void *data,
                   Evas_Object *obj __UNUSED__,
                   void *event_info)
@@ -307,6 +329,7 @@ _on_group_changed(void *data,
    DBG("group changed to \"%s\"", group_pd.group ? group_pd.group->name : 
NULL);
    group_pd.part = group_pd.group ? group_pd.group->current_part : NULL;
    group_pd.program = group_pd.group ? group_pd.group->current_program : NULL;
+   group_pd.group_data = group_pd.group ? group_pd.group->current_group_data : 
NULL;
    resource_name_validator_list_set(group_pd.part_name_validator, 
&group_pd.group->parts, false);
 
    GENLIST_FILTER_APPLY(pd->genlist);
@@ -314,6 +337,9 @@ _on_group_changed(void *data,
    if (group_pd.group)
      
property_item_update_recursively(&group_pd.items[PROPERTY_GROUP_ITEM_GROUP_TITLE]);
 
+   if (group_pd.group_data)
+     
property_item_update_recursively(&group_pd.items[PROPERTY_GROUP_ITEM_GROUP_DATA_TITLE]);
+
    if (group_pd.part)
      {
         
property_item_update_recursively(&group_pd.items[PROPERTY_GROUP_ITEM_PART_TITLE]);
@@ -371,6 +397,9 @@ _filter_cb(Property_Attribute *pa)
       case PROPERTY_GROUP_ITEM_PROGRAM_TITLE:
          return group_pd.program != NULL;
 
+      case PROPERTY_GROUP_ITEM_GROUP_DATA_TITLE:
+         return group_pd.group_data != NULL;
+
       default:
          if (group_pd.part)
            return !!(pa->filter_data.part_types & 
PART_MASK(group_pd.part->type));
@@ -598,6 +627,8 @@ _subitems_get(Property_Attribute *pa)
          APPEND(PROPERTY_GROUP_ITEM_PART_ITEM_PADDING_H);
          APPEND(PROPERTY_GROUP_ITEM_PART_ITEM_PADDING_V);
          break;
+      case PROPERTY_GROUP_ITEM_GROUP_DATA_TITLE:
+         break;
       default:
          CRIT("items callback not found for %s", pa->name);
          abort();
@@ -4593,6 +4624,14 @@ _init_items()
               IT.expand_cb = _afters_get;
               break;
 
+              /* group_data block */
+           case PROPERTY_GROUP_ITEM_GROUP_DATA_TITLE:
+              IT.name = "group data";
+              IT.expandable = true;
+              IT.expanded = true;
+              IT.expand_cb = _subitems_get;
+              break;
+
            case PROPERTY_GROUP_ITEM_LAST:
               break;
           }
@@ -4614,6 +4653,7 @@ property_group_init(Property_Data *pd)
    evas_object_smart_callback_add(ap.win, SIGNAL_GROUP_NAVIGATOR_UNSELECTED, 
_on_group_navigator_unselected, pd);
    evas_object_smart_callback_add(ap.win, SIGNAL_PART_STATE_SELECTED, 
_on_part_state_selected, pd);
    evas_object_smart_callback_add(ap.win, SIGNAL_PROGRAM_SELECTED, 
_on_program_selected, pd);
+   evas_object_smart_callback_add(ap.win, SIGNAL_GROUP_DATA_SELECTED, 
_on_group_data_selected, pd);
    evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_ATTRIBUTE_CHANGED, 
_on_editor_attribute_changed, pd);
 
    group_pd.part_name_validator = resource_name_validator_new(PART_NAME_REGEX, 
NULL);
@@ -4629,6 +4669,7 @@ property_group_items_get()
    items = eina_list_append(items, 
&group_pd.items[PROPERTY_GROUP_ITEM_STATE_TITLE]);
    items = eina_list_append(items, 
&group_pd.items[PROPERTY_GROUP_ITEM_PART_ITEM_TITLE]);
    items = eina_list_append(items, 
&group_pd.items[PROPERTY_GROUP_ITEM_PROGRAM_TITLE]);
+   items = eina_list_append(items, 
&group_pd.items[PROPERTY_GROUP_ITEM_GROUP_DATA_TITLE]);
 
    return items;
 }
diff --git a/src/bin/ui/property/property_private.h 
b/src/bin/ui/property/property_private.h
index 7d25494..9f5df69 100644
--- a/src/bin/ui/property/property_private.h
+++ b/src/bin/ui/property/property_private.h
@@ -321,6 +321,8 @@ typedef enum {
    PROPERTY_GROUP_ITEM_PROGRAM_ACTION_TARGET,
    PROPERTY_GROUP_ITEM_PROGRAM_AFTER,
 
+   PROPERTY_GROUP_ITEM_GROUP_DATA_TITLE,
+
    PROPERTY_GROUP_ITEM_LAST
 } Property_Group_Item;
 

-- 


Reply via email to