rimmed pushed a commit to branch master.

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

commit 9d3e1d86e76514bee5b71761e878ca37a0ee3830
Author: Andrii Kroitor <an.kroi...@samsung.com>
Date:   Fri Feb 5 13:48:04 2016 +0200

    group_navigator: use states for parts instead of separate item classes
---
 data/themes/default/widgets/genlist.edc | 55 +++++----------------------------
 src/bin/ui/group_navigator.c            | 47 ++++++++++++++++++----------
 2 files changed, 38 insertions(+), 64 deletions(-)

diff --git a/data/themes/default/widgets/genlist.edc 
b/data/themes/default/widgets/genlist.edc
index 4a0f0dd..9ebade3 100644
--- a/data/themes/default/widgets/genlist.edc
+++ b/data/themes/default/widgets/genlist.edc
@@ -629,6 +629,7 @@ group { name: "elm/genlist/tree/part/default";
       item: "contents" "elm.swallow.icon elm.swallow.end elm.swallow.penult";
       item: "stacking" "above";
       item: "selectraise" "on";
+      item: "states" "selected unselected";
    }
    parts {
       part { name: "bg";
@@ -816,16 +817,16 @@ group { name: "elm/genlist/tree/part/default";
       }
    }
    programs {
-      program { name: "selected";
-         signal: "elm,state,selected";
+      program { name: "state,selected";
+         signal: "elm,state,selected,active";
          source: "elm";
-         action: STATE_SET "selected" 0.00;
+         action: STATE_SET "selected" 0.0;
          target: "bg";
       }
-      program { name: "unselected";
-         signal: "elm,state,unselected";
+      program { name: "state,unselected";
+         signal: "elm,state,unselected,active";
          source: "elm";
-         action: STATE_SET "default" 0.00;
+         action: STATE_SET "default" 0.0;
          target: "bg";
       }
       program { name: "item_hide";
@@ -841,24 +842,6 @@ group { name: "elm/genlist/tree/part/default";
          target: "elm.swallow.end";
          target: "disclip";
       }
-      program { name: "unreorder";
-         signal: "elm,state,reorder,disable";
-         source: "elm";
-         action: STATE_SET "selected" 0.00;
-         target: "bg";
-         after: "selected";
-      }
-      program { name: "reorder";
-         signal: "elm,state,reorder,enabled";
-         source: "elm";
-         action: STATE_SET "reordered" 0.00;
-         target: "bg";
-      }
-      program { name: "unreordered";
-         signal: "elm,state,reorder,disabled";
-         source: "elm";
-         after: "go_active";
-      }
       program { name: "expanded_sig";
          signal: "mouse,up,1";
          source: "arrow";
@@ -876,18 +859,6 @@ group { name: "elm/genlist/tree/part/default";
          action: STATE_SET "default" 0.00;
          target: "arrow";
       }
-      program { name: "go_active";
-         signal: "elm,state,selected";
-         source: "elm";
-         action: STATE_SET "selected" 0.00;
-         target: "bg";
-      }
-      program { name: "go_passive";
-         signal: "elm,state,unselected";
-         source: "elm";
-         action: STATE_SET "default" 0.00;
-         target: "bg";
-      }
       program { name: "go_disabled";
          signal: "elm,state,disabled";
          source: "elm";
@@ -903,18 +874,6 @@ group { name: "elm/genlist/tree/part/default";
    }
 }
 
-group { name: "elm/genlist/tree/part_selected/default";
-   inherit: "elm/genlist/tree/part/default";
-   parts {
-      part { name: "bg";
-         description { state: "default" 0.0;
-            color: 255 255 255 255;
-            color_class: "select";
-         }
-      }
-   }
-}
-
 group { name: "elm/genlist/item/state/default";
    inherit: "elm/genlist/item/default/default";
    alias: "elm/genlist/item/item/default";
diff --git a/src/bin/ui/group_navigator.c b/src/bin/ui/group_navigator.c
index 6e148b3..403d6d0 100644
--- a/src/bin/ui/group_navigator.c
+++ b/src/bin/ui/group_navigator.c
@@ -42,7 +42,6 @@ typedef struct
 
    Elm_Genlist_Item_Class *itc_caption;
    Elm_Genlist_Item_Class *itc_part;
-   Elm_Genlist_Item_Class *itc_part_selected;
    Elm_Genlist_Item_Class *itc_state;
    Elm_Genlist_Item_Class *itc_state_selected;
    Elm_Genlist_Item_Class *itc_item_caption;
@@ -232,6 +231,25 @@ _part_content_get(void *data,
    return content;
 }
 
+static Eina_Bool
+_part_state_get(void *data,
+                Evas_Object *obj,
+                const char *state)
+{
+   Part *selected_part, *part = data;
+   Part_List *pl = evas_object_data_get(obj, GROUP_NAVIGATOR_DATA);
+
+   assert(part != NULL);
+   assert(pl != NULL);
+
+   selected_part = elm_object_item_data_get(pl->selected_part_item);
+   if ((selected_part == part) && ((!strcmp(state, "selected"))))
+     return true;
+   if ((selected_part != part) && (!strcmp(state, "unselected")))
+     return true;
+   return false;
+}
+
 static void
 _expand_request_cb(void *data __UNUSED__,
                    Evas_Object *o __UNUSED__,
@@ -342,7 +360,7 @@ _expanded_cb(void *data,
 
    itc = elm_genlist_item_item_class_get(glit);
 
-   if (itc == pl->itc_part_selected)
+   if (itc == pl->itc_part)
      {
         part = elm_object_item_data_get(glit);
         EINA_LIST_FOREACH(part->states, l, state)
@@ -435,6 +453,7 @@ static void
 _unselect_part(Part_List *pl)
 {
    Part *part;
+   Elm_Object_Item *glit_part;
 
    assert(pl != NULL);
    assert(pl->selected_part_item != NULL);
@@ -442,8 +461,9 @@ _unselect_part(Part_List *pl)
    pl->group->current_part->current_item_name = NULL;
    pl->group->current_part = NULL;
    part = elm_object_item_data_get(pl->selected_part_item);
-   elm_genlist_item_item_class_update(pl->selected_part_item, pl->itc_part);
+   glit_part = pl->selected_part_item;
    pl->selected_part_item = NULL;
+   elm_genlist_item_fields_update(glit_part, "unselected", 
ELM_GENLIST_ITEM_FIELD_STATE);
    elm_object_item_disabled_set(pl->add_state_menu_item, true);
    elm_object_item_disabled_set(pl->add_part_item_menu_item, true);
    elm_object_disabled_set(pl->btn_del, true);
@@ -520,9 +540,9 @@ _selected_cb(void *data,
              pl->selected_part_item = glit_part;
              part->current_item_name = item_name;
              pl->group->current_part = part;
+             elm_genlist_item_fields_update(glit_part, "selected", 
ELM_GENLIST_ITEM_FIELD_STATE);
              evas_object_smart_callback_call(pl->layout, 
SIGNAL_GROUP_NAVIGATOR_PART_SELECTED,
                                              (void *)part);
-             elm_genlist_item_item_class_update(glit_part, 
pl->itc_part_selected);
           }
         elm_object_item_disabled_set(pl->add_state_menu_item, false);
         if ((part->type == EDJE_PART_TYPE_BOX) ||
@@ -536,7 +556,7 @@ _selected_cb(void *data,
         else
           elm_object_disabled_set(pl->btn_del, false);
         /* enabling or disabling up and down buttons */
-        if ((itc == pl->itc_part_selected) || (itc == pl->itc_part))
+        if (itc == pl->itc_part)
           {
              items_list = 
elm_genlist_item_subitems_get(pl->parts_caption_item);
              if (glit == eina_list_data_get(items_list))
@@ -1417,7 +1437,7 @@ _on_btn_minus_clicked(void *data,
    assert(glit != NULL);
 
    itc = elm_genlist_item_item_class_get(glit);
-   if (itc == pl->itc_part_selected)
+   if (itc == pl->itc_part)
      _part_del(pl, glit);
    else if ((itc == pl->itc_state_selected) || (itc == pl->itc_state))
      _state_del(pl, glit);
@@ -1503,7 +1523,7 @@ group_navigator_part_restack(Evas_Object *obj, Part 
*part, Part *rel_part)
              assert(rel_glit != NULL);
 
              elm_genlist_item_insert_before(pl->genlist,
-                                            pl->itc_part_selected,
+                                            pl->itc_part,
                                             part,
                                             pl->parts_caption_item,
                                             rel_glit,
@@ -1514,7 +1534,7 @@ group_navigator_part_restack(Evas_Object *obj, Part 
*part, Part *rel_part)
         else
           {
              elm_genlist_item_append(pl->genlist,
-                                     pl->itc_part_selected,
+                                     pl->itc_part,
                                      part,
                                      pl->parts_caption_item,
                                      ELM_GENLIST_ITEM_TREE,
@@ -1620,7 +1640,7 @@ _on_btn_down_clicked(void *data,
    assert(glit != NULL);
 
    itc = elm_genlist_item_item_class_get(glit);
-   if (itc == pl->itc_part_selected)
+   if (itc == pl->itc_part)
      _part_restack(pl, glit, false);
    else if (itc == pl->itc_item)
      _part_item_restack(pl, glit, false);
@@ -1642,7 +1662,7 @@ _on_btn_up_clicked(void *data,
    assert(glit != NULL);
 
    itc = elm_genlist_item_item_class_get(glit);
-   if (itc == pl->itc_part_selected)
+   if (itc == pl->itc_part)
      _part_restack(pl, glit, true);
    else if (itc == pl->itc_item)
      _part_item_restack(pl, glit, true);
@@ -1688,12 +1708,7 @@ group_navigator_add(Group *group)
    pl->itc_part->item_style = "part";
    pl->itc_part->func.text_get = _resource_label_get;
    pl->itc_part->func.content_get = _part_content_get;
-
-   TODO("Get rid of *_selected item classes. Use func.state_get instead")
-   pl->itc_part_selected = elm_genlist_item_class_new();
-   pl->itc_part_selected->item_style = "part_selected";
-   pl->itc_part_selected->func.text_get = _resource_label_get;
-   pl->itc_part_selected->func.content_get = _part_content_get;
+   pl->itc_part->func.state_get = _part_state_get;
 
    pl->itc_state = elm_genlist_item_class_new();
    pl->itc_state->item_style = "state";

-- 


Reply via email to