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