rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=f4672f5e3793053c46a9a6d66fee8bd01877611a
commit f4672f5e3793053c46a9a6d66fee8bd01877611a Author: Vitalii Vorobiov <vi.vorob...@samsung.com> Date: Fri Nov 27 20:12:43 2015 +0200 popup: multiple image add implementation and use it in tweens --- src/bin/ui/popup.c | 28 ++++++++++++++++++---------- src/bin/ui/property_group.c | 30 +++++++++++++++--------------- 2 files changed, 33 insertions(+), 25 deletions(-) diff --git a/src/bin/ui/popup.c b/src/bin/ui/popup.c index b56536c..66b981e 100644 --- a/src/bin/ui/popup.c +++ b/src/bin/ui/popup.c @@ -22,6 +22,7 @@ static Popup_Button btn_pressed; static Evas_Object *popup; static Evas_Object *helper; +static Evas_Object *gengrid; static Evas_Object *fs; static Helper_Done_Cb dismiss_func; static void* func_data; @@ -383,19 +384,25 @@ popup_fileselector_image_helper(const char *title, Evas_Object *follow_up, const static void _done_image(void *data, - Evas_Object *obj, + Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Eina_Bool res = true; Item *item = NULL; - const Eina_List* sel_list; + const Eina_List *sel_list, *l; + Eina_List *ret_list = NULL; + Elm_Object_Item *item_list; if (dismiss_func) { - TODO("Make multiselect for tweens and remake gengrid because of that?") - sel_list = elm_gengrid_selected_items_get(obj); - item = elm_object_item_data_get(eina_list_data_get(sel_list)); - res = ((Helper_Done_Cb)dismiss_func)(func_data, obj, (char *)item->image_name); + sel_list = elm_gengrid_selected_items_get(gengrid); + EINA_LIST_FOREACH(sel_list, l, item_list) + { + item = elm_object_item_data_get(item_list); + ret_list = eina_list_append(ret_list, eina_stringshare_add(item->image_name)); + } + res = ((Helper_Done_Cb)dismiss_func)(func_data, obj, ret_list); + eina_list_free(ret_list); } if (res) @@ -421,7 +428,7 @@ _grid_del(void *data, } Eina_Bool -_image_gengrid_init(Evas_Object *gengrid) +_image_gengrid_init() { Eina_List *l = NULL; Item *it = NULL; @@ -507,7 +514,7 @@ popup_gengrid_image_helper(const char *title, Evas_Object *follow_up, Helper_Done_Cb func, void *data, Eina_Bool multi) { - Evas_Object *gengrid, *entry, *icon, *button; + Evas_Object *entry, *icon, *button; dismiss_func = func; func_data = data; @@ -529,6 +536,7 @@ popup_gengrid_image_helper(const char *title, Evas_Object *follow_up, BUTTON_ADD(fs, button, _("Ok")) elm_object_part_content_set(helper, "elm.swallow.ok", button); + evas_object_smart_callback_add(button, "clicked", _done_image, follow_up); evas_object_show(button); } else @@ -536,13 +544,13 @@ popup_gengrid_image_helper(const char *title, Evas_Object *follow_up, elm_gengrid_multi_select_set(gengrid, false); elm_gengrid_multi_select_mode_set(gengrid, ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL); + evas_object_smart_callback_add(gengrid, "clicked,double", _done_image, follow_up); } elm_gengrid_item_size_set(gengrid, ITEM_WIDTH, ITEM_HEIGHT); elm_gengrid_align_set(gengrid, 0.0, 0.0); elm_scroller_policy_set(gengrid, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF); elm_object_part_content_set(fs, "eflete.swallow.genlist", gengrid); - evas_object_smart_callback_add(gengrid, "clicked,double", _done_image, follow_up); if (!gic) { @@ -553,7 +561,7 @@ popup_gengrid_image_helper(const char *title, Evas_Object *follow_up, gic->func.del = _grid_del; } - _image_gengrid_init(gengrid); + _image_gengrid_init(); ENTRY_ADD(fs, entry, true); elm_object_part_text_set(entry, "guide", _("Search")); diff --git a/src/bin/ui/property_group.c b/src/bin/ui/property_group.c index c497dae..b606c7b 100644 --- a/src/bin/ui/property_group.c +++ b/src/bin/ui/property_group.c @@ -2850,14 +2850,17 @@ _on_image_editor_done(void *data, Evas_Object *obj __UNUSED__, void *event_info) { - Group_Prop_Data *pd = (Group_Prop_Data *)data; - const char *value; - const char *selected = (const char *)event_info; + Eina_List *list_selected = (Eina_List *)event_info; + const char *selected; - if (!selected) return false; + Group_Prop_Data *pd = (Group_Prop_Data *)data; + + if (!list_selected) return false; value = elm_entry_entry_get(pd->attributes.state_image.image); + selected = eina_list_data_get(list_selected); + if (strcmp(value, selected) == 0) return false; elm_entry_entry_set(pd->attributes.state_image.image, selected); @@ -2920,30 +2923,27 @@ _on_image_editor_tween_done(void *data, void *event_info) { Evas_Object *tween_list = (Evas_Object *)data; - const char *selected = (const char *)event_info; -// Eina_List *selected = (Eina_List *)ei; -// Eina_List *l = NULL; -// const char *name = NULL; + Eina_List *selected = (Eina_List *)event_info; + Eina_List *l = NULL; + const char *name = NULL; Group_Prop_Data *pd = evas_object_data_get(tween_list, GROUP_PROP_DATA); assert(pd != NULL); if (!selected) return false; -// EINA_LIST_FOREACH(selected, l, name) -// { + EINA_LIST_FOREACH(selected, l, name) + { if (edje_edit_state_tween_add(pd->group->edit_object, pd->part->name, pd->part->current_state->parsed_name, - pd->part->current_state->parsed_val, selected)) + pd->part->current_state->parsed_val, name)) { elm_gengrid_item_append(tween_list, _itc_tween, - eina_stringshare_add(selected), NULL, NULL); + eina_stringshare_add(name), NULL, NULL); //project_changed(false); } -// } - elm_frame_collapse_go(pd->attributes.state_image.tween, false); + } return true; -// edje_edit_string_list_free(selected); } static void --