old menu: http://watchwolf.fr/menu1.ogv new menu: http://watchwolf.fr/menu2.ogv
2011/2/21 Enlightenment SVN <no-re...@enlightenment.org> > Log: > enki: replace elm_menu by a edje menu (better for touch screen and small > screen) > > > > Author: watchwolf > Date: 2011-02-21 11:39:26 -0800 (Mon, 21 Feb 2011) > New Revision: 57226 > Trac: http://trac.enlightenment.org/e/changeset/57226 > > Added: > trunk/enki/data/themes/default/photo_menu_parts.edc > Modified: > trunk/enki/data/themes/default/Makefile.am > trunk/enki/data/themes/default/album_header.edc > trunk/enki/data/themes/default/default.edc > trunk/enki/data/themes/default/main_page.edc > trunk/enki/data/themes/default/main_panel.edc > trunk/enki/data/themes/default/win_photo_delete.edc > trunk/enki/data/themes/default/win_preferences.edc > trunk/enki/src/bin/flickr_menu.c trunk/enki/src/bin/inwin.c > trunk/enki/src/bin/list_photo.c trunk/enki/src/bin/main.c > trunk/enki/src/bin/map.c trunk/enki/src/bin/objects.h > trunk/enki/src/bin/photo_menu.c > > Modified: trunk/enki/data/themes/default/Makefile.am > =================================================================== > --- trunk/enki/data/themes/default/Makefile.am 2011-02-21 19:19:12 UTC > (rev 57225) > +++ trunk/enki/data/themes/default/Makefile.am 2011-02-21 19:39:26 UTC > (rev 57226) > @@ -34,7 +34,8 @@ > win_album_tag_new.edc \ > win_album_collection_new.edc \ > win_photo_delete.edc\ > -win_library_delete.edc > +win_library_delete.edc \ > +photo_menu_parts.edc > $(EDJE_CC) $(EDJE_FLAGS) default.edc -id ../images/ > > icondir = $(pkgdatadir)/themes > > Modified: trunk/enki/data/themes/default/album_header.edc > =================================================================== > --- trunk/enki/data/themes/default/album_header.edc 2011-02-21 19:19:12 > UTC (rev 57225) > +++ trunk/enki/data/themes/default/album_header.edc 2011-02-21 19:39:26 > UTC (rev 57226) > @@ -51,7 +51,8 @@ > align: 0.0 1.0; > > rel2.to_x: "background"; > - rel2.relative: 1.0 1.0; > + rel2.relative: 0.6 1.0; > + rel2.offset: 0 -5; > } > } > part { > > Modified: trunk/enki/data/themes/default/default.edc > =================================================================== > --- trunk/enki/data/themes/default/default.edc 2011-02-21 19:19:12 UTC > (rev 57225) > +++ trunk/enki/data/themes/default/default.edc 2011-02-21 19:39:26 UTC > (rev 57226) > @@ -92,6 +92,7 @@ > #include "win_preferences.edc" > #include "win_photo_delete.edc" > #include "win_library_delete.edc" > + > > #include "libraries.edc" > #include "map.edc" > @@ -101,7 +102,6 @@ > #include "list_left.edc" > #include "main_page.edc" > > - > #include "main.edc" > > > > Modified: trunk/enki/data/themes/default/main_page.edc > =================================================================== > --- trunk/enki/data/themes/default/main_page.edc 2011-02-21 19:19:12 > UTC (rev 57225) > +++ trunk/enki/data/themes/default/main_page.edc 2011-02-21 19:39:26 > UTC (rev 57226) > @@ -16,7 +16,17 @@ > // > > // > - alias: "object.photos.swallow" > "panes[right]:object.photos.swallow"; > + alias: "object.photos.swallow" > "panes[right]:object.photos.swallow"; > + alias: "object.photo_menu.tools.reload_thumb" > "panes[right]:object.photo_menu.tools.reload_thumb"; > + alias: "object.photo_menu.tools.reload_exifs" > "panes[right]:object.photo_menu.tools.reload_exifs"; > + alias: "object.photo_menu.tools.reload_iptcs" > "panes[right]:object.photo_menu.tools.reload_iptcs"; > + alias: "object.photo_menu.delete" > "panes[right]:object.photo_menu.delete"; > + alias: "object.photo_menu.album.move" > "panes[right]:object.photo_menu.album.move"; > + alias: "object.photo_menu.library.photo.front" > "panes[right]:object.photo_menu.library.photo.front"; > + alias: "object.photo_menu.library.photo.back" > "panes[right]:object.photo_menu.library.photo.back"; > + alias: "object.photo_menu.wallpaper.application" > "panes[right]:object.photo_menu.wallpaper.application"; > + alias: "object.photo_menu.tags_remove.list" > "panes[right]:object.photo_menu.tags_remove.list"; > + alias: "object.photo_menu.tags_add.list" > "panes[right]:object.photo_menu.tags_add.list"; > // > > //list left > @@ -68,5 +78,10 @@ > transfers_signal("", "list_left,collections,show", "", > "panes", "left") > transfers_signal("", "list_left,tags,show", "", "panes", > "left") > // > + > + //photo menu > + transfers_signal("", "photo,menu,show", "", "panes", > "right") > + transfers_signal("", "photo,menu,hide", "", "panes", > "right") > + // > } > } > \ No newline at end of file > > Modified: trunk/enki/data/themes/default/main_panel.edc > =================================================================== > --- trunk/enki/data/themes/default/main_panel.edc 2011-02-21 19:19:12 > UTC (rev 57225) > +++ trunk/enki/data/themes/default/main_panel.edc 2011-02-21 19:39:26 > UTC (rev 57226) > @@ -170,9 +170,13 @@ > clip_to: "photos_clipper"; > description { > state : "default" 0.0; > + rel1.to_y: "photo_menu"; > + rel1.relative: 0.0 1.0; > } > } > > + > + #include "photo_menu_parts.edc" > } > programs { > program { > > Modified: trunk/enki/data/themes/default/win_photo_delete.edc > =================================================================== > --- trunk/enki/data/themes/default/win_photo_delete.edc 2011-02-21 19:19:12 > UTC (rev 57225) > +++ trunk/enki/data/themes/default/win_photo_delete.edc 2011-02-21 19:39:26 > UTC (rev 57226) > @@ -30,7 +30,7 @@ > rel2.relative: 0.0 0.0; > align: 0.0 0.0; > params { > - string: "label" "Are you sure you > wish to delete these photo(s) ? "; > + string: "label" "Are you sure you > wish to delete these photos ? "; > } > } > } > @@ -81,7 +81,7 @@ > rel2.to_y: "object.win.photo.delete.name"; > rel2.relative: 1.0 1.0; > align: 1.0 1.0; > - fixed: 1 0; > + fixed: 1 1; > params { > string: "label" "Apply"; > } > > Modified: trunk/enki/data/themes/default/win_preferences.edc > =================================================================== > --- trunk/enki/data/themes/default/win_preferences.edc 2011-02-21 19:19:12 > UTC (rev 57225) > +++ trunk/enki/data/themes/default/win_preferences.edc 2011-02-21 19:39:26 > UTC (rev 57226) > @@ -10,7 +10,8 @@ > state: "default" 0.0; > align: 0.0 0.0; > rel1.offset: 5 5; > - rel2.offset: -20 0; > + rel2.relative: 0.0 0.0; > + rel2.offset: 0 0; > params { > string: "label" > "<title>Preferences.</title>"; > } > @@ -47,7 +48,98 @@ > } > } > } > + > + //libary > part { > + name: "library_title"; > + type: EXTERNAL; > + source: "elm/label"; > + description { > + state: "default" 0.0; > + align: 0.0 0.0; > + rel1.to_y: > "object.win.preferences.video_software"; > + rel1.relative: 0.0 1.0; > + rel1.offset: 5 25; > + rel2.relative: 0.0 0.0; > + rel2.offset: -20 0; > + params { > + string: "label" "<title>Preferences > of the library : </title>"; > + } > + } > + } > + part { > + name: "object.win.preferences.library.name"; > + type: EXTERNAL; > + source: "elm/label"; > + description { > + state: "default" 0.0; > + align: 0.0 0.5; > + rel1.to: "library_title"; > + rel1.relative: 1.0 0.0; > + rel1.offset: 5 0; > + rel2.to_y: "library_title"; > + params { > + string: "label" "No library > selected"; > + } > + } > + } > + part { > + name: "lbl_netsync"; > + type: EXTERNAL; > + source: "elm/label"; > + description { > + state: "default" 0.0; > + rel1.to_y: "library_title"; > + rel1.relative: 0.0 1.0; > + rel1.offset: 20 10; > + rel2.offset: -20 0; > + align: 0.5 0.0; > + params { > + string: "label" "Network > synchronisation account : "; > + } > + } > + } > + part { > + name: > "object.win.preferences.library.netsync.account"; > + type: EXTERNAL; > + source: "elm/scrolled_entry"; > + description { > + state: "default" 0.0; > + rel1.to_y: "lbl_netsync"; > + rel1.offset: 0 5; > + rel1.relative: 0.05 1.0; > + align: 0.5 0.0; > + params { > + bool: "single line" 1; > + } > + } > + } > + > + part { > + name: "library_no_selected"; > + type: RECT; > + description { > + state: "default" 0.0; > + rel1.to_y: "library_title"; > + rel1.relative: 0.0 1.0; > + rel1.offset: 0 5; > + rel2.to_y: > "object.win.preferences.library.netsync.account"; > + rel2.relative: 1.0 1.0; > + rel2.offset: 0 5; > + color: 0 0 0 0; > + visible: 0; > + } > + description { > + state: "visible" 0.0; > + inherit: "default" 0.0; > + color: 0 0 0 150; > + visible: 1; > + } > + } > + // > + > + > + part { > name: "object.win.preferences.cancel"; > type: EXTERNAL; > source: "elm/button"; > @@ -82,4 +174,18 @@ > } > } > } > + programs { > + program { > + name: "library_selected"; > + signal: "win,preference,library,selected"; > + action: STATE_SET "default" 0.0; > + target: "library_no_selected"; > + } > + program { > + name: "library_no_selected"; > + signal: "win,preference,library,no,selected"; > + action: STATE_SET "visible" 0.0; > + target: "library_no_selected"; > + } > + } > } > > Modified: trunk/enki/src/bin/flickr_menu.c > =================================================================== > --- trunk/enki/src/bin/flickr_menu.c 2011-02-21 19:19:12 UTC (rev 57225) > +++ trunk/enki/src/bin/flickr_menu.c 2011-02-21 19:39:26 UTC (rev 57226) > @@ -44,14 +44,14 @@ > if(menu) evas_object_del(menu); > > menu = elm_menu_add(enlil_data->win->win); > - if(!enlil_library_flickr_account_get(enlil_data->library)) > + if(!enlil_library_netsync_account_get(enlil_data->library)) > { > elm_menu_item_add(menu, NULL, NULL, D_("Set the Flickr account"), > _account_set_cb, NULL); > } > else > { > snprintf(buf, PATH_MAX, D_("Flickr account : %s"), > - enlil_library_flickr_account_get(enlil_data->library)); > + enlil_library_netsync_account_get(enlil_data->library)); > elm_menu_item_add(menu, NULL, NULL, buf, NULL, NULL); > elm_menu_item_add(menu, NULL, NULL, D_("Change the Flickr > account"), _account_set_cb, NULL); > } > @@ -188,7 +188,7 @@ > { > if(enlil_data->library) > { > - enlil_library_flickr_account_set(enlil_data->library, > elm_entry_entry_get(data)); > + enlil_library_netsync_account_set(enlil_data->library, > elm_entry_entry_get(data)); > enlil_library_flickr_auth_token_set(enlil_data->library, NULL); > enlil_flickr_job_reinit_prepend(enlil_data->library); > } > > Modified: trunk/enki/src/bin/inwin.c > =================================================================== > --- trunk/enki/src/bin/inwin.c 2011-02-21 19:19:12 UTC (rev 57225) > +++ trunk/enki/src/bin/inwin.c 2011-02-21 19:39:26 UTC (rev 57226) > @@ -609,7 +609,7 @@ > > Inwin *inwin_preferences_new() > { > - Evas_Object *bt, *ly; > + Evas_Object *bt, *ly, *lbl; > > Inwin *inwin = calloc(1, sizeof(Inwin)); > inwin->type = INWIN_PREFERENCES; > @@ -627,6 +627,23 @@ > inwin->entry = edje_object_part_external_object_get(edje, > "object.win.preferences.video_software"); > elm_scrolled_entry_entry_set(inwin->entry, media_player); > > + > + //library > + if(enlil_data->library) > + { > + edje_object_signal_emit(edje, > "win,preference,library,selected", ""); > + > + lbl = edje_object_part_external_object_get(edje, " > object.win.preferences.library.name"); > + elm_label_label_set(lbl, > enlil_library_path_get(enlil_data->library)); > + > + inwin->entry2 = edje_object_part_external_object_get(edje, > "object.win.preferences.library.netsync.account"); > + elm_scrolled_entry_entry_set(inwin->entry2, > enlil_library_netsync_account_get(enlil_data->library)); > + } > + else > + edje_object_signal_emit(edje, > "win,preference,library,no,selected", ""); > + // > + > + > bt = edje_object_part_external_object_get(edje, > "object.win.preferences.cancel"); > evas_object_smart_callback_add(bt, "clicked", > _bt_preferences_cancel_cb, inwin); > > @@ -772,6 +789,13 @@ > eina_stringshare_del(string.string); > } > > + if(enlil_data->library) > + { > + s = elm_scrolled_entry_entry_get(inwin->entry2); > + enlil_library_netsync_account_set(enlil_data->library, s); > + > enlil_netsync_account_set(enlil_library_netsync_account_get(enlil_data->library)); > + } > + > inwin_free(inwin); > } > > > Modified: trunk/enki/src/bin/list_photo.c > =================================================================== > --- trunk/enki/src/bin/list_photo.c 2011-02-21 19:19:12 UTC (rev 57225) > +++ trunk/enki/src/bin/list_photo.c 2011-02-21 19:39:26 UTC (rev 57226) > @@ -24,11 +24,16 @@ > static void _album_sync_flickr_cb(void *data, Evas *e, Evas_Object *obj, > void *event_info); > static void _photo_sync_flickr_cb(void *data, Evas *e, Evas_Object *obj, > void *event_info); > > +static Evas_Object *_edje; > + > + > List_Photo *list_photo_new(Evas_Object *edje) > { > Evas_Object *bx, *sl, *bx2, *lbl, *bt, *tg; > List_Photo *enlil_photo = calloc(1, sizeof(List_Photo)); > > + _edje = edje; > + > enlil_photo->photo_w = DEFAULT_W; > enlil_photo->photo_h = DEFAULT_H; > > @@ -362,25 +367,10 @@ > > static void _right_click(void *data, Evas_Object *obj, void *event_info) > { > - int x, y; > - Enlil_Photo *photo = event_info; > - PL_Child_Item *child; > - Eina_List *l, *photos = NULL; > - Enlil_Photo_Data *photo_data = enlil_photo_user_data_get(photo); > - > - > EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_data->list_photo->o_list), > l, child) > - photos = eina_list_append(photos, > photos_list_object_item_data_get(child)); > - > - evas_pointer_output_xy_get(evas_object_evas_get(obj), &x, &y); > - Photo_Menu *photo_menu = > photo_menu_new(photo_data->enlil_data->win->win, photo, photos); > - elm_menu_move(photo_menu->menu, x, y); > - > - Evas_Object *menu = edje_object_part_external_object_get(global_object, > "object.photo.menu"); > - printf("%p\n", menu); > - evas_object_show(menu); > + photo_menu_init(enlil_data->list_photo, _edje); > + edje_object_signal_emit(_edje, "photo,menu,show", ""); > } > > - > static void _collection_cb(void *data, Evas_Object *obj, void *event_info) > { > Enlil_Album *album = data; > > Modified: trunk/enki/src/bin/main.c > =================================================================== > --- trunk/enki/src/bin/main.c 2011-02-21 19:19:12 UTC (rev 57225) > +++ trunk/enki/src/bin/main.c 2011-02-21 19:39:26 UTC (rev 57226) > @@ -166,6 +166,10 @@ > enlil_load_run(load); > // > > + //netsync > + > enlil_netsync_account_set(enlil_library_netsync_account_get(library)); > + // > + > //the background > Enlil_String *s; > Eet_Data_Descriptor *edd; > > Modified: trunk/enki/src/bin/map.c > =================================================================== > --- trunk/enki/src/bin/map.c 2011-02-21 19:19:12 UTC (rev 57225) > +++ trunk/enki/src/bin/map.c 2011-02-21 19:39:26 UTC (rev 57226) > @@ -351,16 +351,16 @@ > > static void _menu(void *data, Evas_Object *obj, void *event_info) > { > - int x, y; > - Enlil_Photo *photo = data; > - Eina_List *photos = NULL; > - Enlil_Photo_Data *photo_data = enlil_photo_user_data_get(photo); > - > - photos = eina_list_append(photos, photo); > - > - evas_pointer_output_xy_get(evas_object_evas_get(obj), &x, &y); > - Photo_Menu *photo_menu = > photo_menu_new(photo_data->enlil_data->win->win, photo, photos); > - elm_menu_move(photo_menu->menu, x, y); > +// int x, y; > +// Enlil_Photo *photo = data; > +// Eina_List *photos = NULL; > +// Enlil_Photo_Data *photo_data = enlil_photo_user_data_get(photo); > +// > +// photos = eina_list_append(photos, photo); > +// > +// evas_pointer_output_xy_get(evas_object_evas_get(obj), &x, &y); > +// Photo_Menu *photo_menu = > photo_menu_new(photo_data->enlil_data->win->win, photo, photos); > +// elm_menu_move(photo_menu->menu, x, y); > } > > static void _tg_geocaching_changed_cb(void *data, Evas_Object *obj, void > *event_info) > > Modified: trunk/enki/src/bin/objects.h > =================================================================== > --- trunk/enki/src/bin/objects.h 2011-02-21 19:19:12 UTC (rev 57225) > +++ trunk/enki/src/bin/objects.h 2011-02-21 19:39:26 UTC (rev 57226) > @@ -218,6 +218,7 @@ > > Evas_Object *gl; > Evas_Object *entry; > + Evas_Object *entry2; > Evas_Object *bt_apply; > Evas_Object *check; > > @@ -248,6 +249,7 @@ > > Photo_Menu *photo_tag_menu_new(Evas_Object *parent, Enlil_Photo *photo); > Photo_Menu *photo_menu_new(Evas_Object *parent, Enlil_Photo *photo, > Eina_List *photos); > +void photo_menu_init(List_Photo *enlil_photo, Evas_Object *edje); > void photo_menu_free(Photo_Menu *photo_menu); > > > > Modified: trunk/enki/src/bin/photo_menu.c > =================================================================== > --- trunk/enki/src/bin/photo_menu.c 2011-02-21 19:19:12 UTC (rev 57225) > +++ trunk/enki/src/bin/photo_menu.c 2011-02-21 19:39:26 UTC (rev 57226) > @@ -1,6 +1,6 @@ > #include "main.h" > +#include "objects.h" > > -static void _menu_dismiss_cb(void *data, Evas_Object *obj, void > *event_info); > static void _tag_photo_add_cb(void *data, Evas_Object *obj, void > *event_info); > static void _tag_photo_remove_cb(void *data, Evas_Object *obj, void > *event_info); > static void _tag_new_cb(void *data, Evas_Object *obj, void *event_info); > @@ -15,279 +15,324 @@ > static void _library_photo2_set_cb(void *data, Evas_Object *obj, void > *event_info); > static void _inwin_del_cb(void *data); > > -Photo_Menu *photo_menu_new(Evas_Object *parent, Enlil_Photo *photo, > Eina_List *photos) > -{ > - Evas_Object *menu; > - Elm_Menu_Item *mi = NULL; > - const Eina_List *l, *_l; > - const Enlil_Tag *tag; > - Enlil_Photo *_photo; > - Eina_Bool empty = EINA_TRUE; > - Photo_Menu * am = calloc(1, sizeof(Photo_Menu)); > - am->photo = photo; > - am->photos = photos; > +Evas_Object *_edje; > > - menu = elm_menu_add(parent); > - evas_object_smart_callback_add(menu, "clicked", _menu_dismiss_cb, am); > - am->menu = menu; > +static Eina_Bool _init = EINA_FALSE; > > - mi = elm_menu_item_add(menu, NULL, NULL, D_("Remove the tag"), NULL, > NULL); > +void photo_menu_init(List_Photo *enlil_photo, Evas_Object *edje) > +{ > + Evas_Object *bt; > + Eina_List *photos = NULL, *l, *_l; > + PL_Child_Item *child; > + Enlil_Photo *photo, *_photo; > + Enlil_Tag *tag; > + Elm_List_Item *item; > + Eina_Bool empty; > > - Enlil_Album *album = enlil_photo_album_get(eina_list_data_get(photos)); > - > EINA_LIST_FOREACH(enlil_library_tags_get(enlil_album_library_get(album)),l, > tag) > - { > - Eina_Bool find = EINA_FALSE; > - EINA_LIST_FOREACH(photos, _l, _photo) > - { > - if(eina_list_data_find(enlil_tag_photos_get(tag), _photo)) > - { > - find = EINA_TRUE; > - break; > - } > - } > - if(find) > - { > - elm_menu_item_add(menu, mi, NULL, enlil_tag_name_get(tag), > _tag_photo_remove_cb, am); > - empty = EINA_FALSE; > - } > - } > + _edje = edje; > > - if(empty) > - elm_menu_item_add(menu, mi, NULL, D_("Empty"), NULL, NULL); > + //build the list of selected photos > + > EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l, > child) > + { > + photo = photos_list_object_item_data_get(child); > + photos = eina_list_append(photos, photo); > + } > + // > > - mi = elm_menu_item_add(menu, NULL, NULL, D_("Add the tag"), NULL, > NULL); > - elm_menu_item_add(menu, mi, NULL, D_("New tag"), _tag_new_cb, am); > - elm_menu_item_separator_add(menu, mi); > + if(!_init) > + { > + _init = EINA_TRUE; > + bt = edje_object_part_external_object_get(edje, > "object.photo_menu.tools.reload_thumb"); > + evas_object_smart_callback_add(bt, "clicked", > _photo_thumb_reload_cb, enlil_photo); > > - > EINA_LIST_FOREACH(enlil_library_tags_get(enlil_album_library_get(album)), l, > tag) > - { > - Eina_Bool find = EINA_TRUE; > - EINA_LIST_FOREACH(photos, _l, _photo) > - { > - if(!eina_list_data_find(enlil_tag_photos_get(tag), _photo)) > - { > - find = EINA_FALSE; > - break; > - } > - } > - if(!find) > - elm_menu_item_add(menu, mi, NULL, enlil_tag_name_get(tag), > _tag_photo_add_cb, am); > - } > + bt = edje_object_part_external_object_get(edje, > "object.photo_menu.tools.reload_exifs"); > + evas_object_smart_callback_add(bt, "clicked", > _photo_exif_reload_cb, enlil_photo); > > - if(enlil_photo_type_get(photo) == ENLIL_PHOTO_TYPE_PHOTO) > - { > - elm_menu_item_separator_add(menu, NULL); > - mi = elm_menu_item_add(menu, NULL, NULL, D_("Set as wallpaper"), > NULL, NULL); > - elm_menu_item_add(menu, mi, NULL, D_("To the application"), > _wall_app_set_cb, am); > + bt = edje_object_part_external_object_get(edje, > "object.photo_menu.tools.reload_iptcs"); > + evas_object_smart_callback_add(bt, "clicked", > _photo_iptc_reload_cb, enlil_photo); > > + bt = edje_object_part_external_object_get(edje, > "object.photo_menu.wallpaper.application"); > + evas_object_smart_callback_add(bt, "clicked", > _wall_app_set_cb, enlil_photo); > > - mi = elm_menu_item_add(menu, NULL, NULL, D_("Set as library's > photo"), NULL, NULL); > - elm_menu_item_add(menu, mi, NULL, D_("Front photo"), > _library_photo1_set_cb, am); > - elm_menu_item_add(menu, mi, NULL, D_("Back photo"), > _library_photo2_set_cb, am); > - } > + bt = edje_object_part_external_object_get(edje, > "object.photo_menu.delete"); > + evas_object_smart_callback_add(bt, "clicked", > _photo_delete_cb, enlil_photo); > > + bt = edje_object_part_external_object_get(edje, > "object.photo_menu.album.move"); > + evas_object_smart_callback_add(bt, "clicked", > _photo_move_album_list_cb, enlil_photo); > > - elm_menu_item_separator_add(menu, NULL); > - mi = elm_menu_item_add(menu, NULL, NULL, D_("Move to the album"), NULL, > NULL); > + bt = edje_object_part_external_object_get(edje, > "object.photo_menu.library.photo.front"); > + evas_object_smart_callback_add(bt, "clicked", > _library_photo1_set_cb, enlil_photo); > > - int i= 0; > - > EINA_LIST_FOREACH(enlil_library_albums_get(enlil_album_library_get(enlil_photo_album_get(photo))), > l, album) > - { > - Elm_Menu_Item *mi2; > - if(album != enlil_photo_album_get(photo)) > - mi2 = elm_menu_item_add(menu, mi, NULL, > enlil_album_name_get(album), _photo_move_album_cb, am); > - if(++i>15) > - { > - mi2 = elm_menu_item_add(menu, mi, NULL, D_("..."), > _photo_move_album_list_cb, am); > - break; > - } > - } > + bt = edje_object_part_external_object_get(edje, > "object.photo_menu.library.photo.back"); > + evas_object_smart_callback_add(bt, "clicked", > _library_photo2_set_cb, enlil_photo); > + } > > + //tags to remove > + bt = edje_object_part_external_object_get(edje, > "object.photo_menu.tags_remove.list"); > + elm_list_clear(bt); > + Enlil_Album *album = > enlil_photo_album_get(eina_list_data_get(photos)); > + empty = EINA_TRUE; > + > EINA_LIST_FOREACH(enlil_library_tags_get(enlil_album_library_get(album)),l, > tag) > + { > + Eina_Bool find = EINA_FALSE; > + EINA_LIST_FOREACH(photos, _l, _photo) > + { > + if(eina_list_data_find(enlil_tag_photos_get(tag), > _photo)) > + { > + find = EINA_TRUE; > + break; > + } > + } > + if(find) > + { > + elm_list_item_append(bt, enlil_tag_name_get(tag), > NULL, NULL, _tag_photo_remove_cb, enlil_photo); > + empty = EINA_FALSE; > + } > + } > + if(empty) > + elm_list_item_append(bt, D_("No tags"), NULL, NULL, NULL, > NULL); > + elm_list_go(bt); > + // > > - elm_menu_item_separator_add(menu, NULL); > - mi = elm_menu_item_add(menu, NULL, NULL, D_("Recreate the thumbnail"), > _photo_thumb_reload_cb, am); > - elm_menu_item_add(menu, NULL, NULL, D_("Reload the exifs data"), > _photo_exif_reload_cb, am); > - elm_menu_item_add(menu, NULL, NULL, D_("Reload the IPTC data"), > _photo_iptc_reload_cb, am); > + //add tags > + bt = edje_object_part_external_object_get(edje, > "object.photo_menu.tags_add.list"); > + elm_list_clear(bt); > + elm_list_item_append(bt, D_("New tag"), NULL, NULL, _tag_new_cb, > enlil_photo); > > - elm_menu_item_separator_add(menu, NULL); > - if(enlil_photo_type_get(photo) == ENLIL_PHOTO_TYPE_PHOTO) > - mi = elm_menu_item_add(menu, NULL, NULL, D_("Delete the photo"), > _photo_delete_cb, am); > - else > - mi = elm_menu_item_add(menu, NULL, NULL, D_("Delete the video"), > _photo_delete_cb, am); > + > EINA_LIST_FOREACH(enlil_library_tags_get(enlil_album_library_get(album)), l, > tag) > + { > + Eina_Bool find = EINA_TRUE; > + EINA_LIST_FOREACH(photos, _l, _photo) > + { > + if(!eina_list_data_find(enlil_tag_photos_get(tag), > _photo)) > + { > + find = EINA_FALSE; > + break; > + } > + } > + if(!find) > + elm_list_item_append(bt, enlil_tag_name_get(tag), > NULL, NULL, _tag_photo_add_cb, enlil_photo); > + } > + elm_list_go(bt); > + // > > - evas_object_show(menu); > - return am; > + eina_list_free(photos); > } > > -static void _menu_dismiss_cb(void *data, Evas_Object *obj, void > *event_info) > -{ > - Photo_Menu *menu = data; > - photo_menu_free(menu); > -} > > static void _tag_photo_add_cb(void *data, Evas_Object *obj, void > *event_info) > { > - Photo_Menu *am = data; > - Elm_Menu_Item *mi = event_info; > - Eina_List *l; > - Enlil_Photo *photo; > + List_Photo *enlil_photo = data; > + Eina_List *l; > + PL_Child_Item *child; > + Enlil_Photo *photo; > > - EINA_LIST_FOREACH(am->photos, l, photo) > - enlil_photo_tag_add(photo, elm_menu_item_label_get(mi)); > + //build the list of selected photos > + > EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l, > child) > + { > + photo = photos_list_object_item_data_get(child); > + enlil_photo_tag_add(photo, > elm_list_item_label_get(elm_list_selected_item_get(obj))); > + } > > - photo_menu_free(am); > + photo_menu_init(enlil_photo, _edje); > } > > static void _tag_photo_remove_cb(void *data, Evas_Object *obj, void > *event_info) > { > - Photo_Menu *am = data; > - Elm_Menu_Item *mi = event_info; > - const Eina_List *l, *l2; > - Enlil_Photo_Tag *tag_col; > - Enlil_Photo *photo; > + List_Photo *enlil_photo = data; > + const Eina_List *l, *l2; > + Enlil_Photo_Tag *tag_col; > + PL_Child_Item *child; > + Enlil_Photo *photo; > > - EINA_LIST_FOREACH(am->photos, l, photo) > - { > - EINA_LIST_FOREACH(enlil_photo_tags_get(photo), l2, tag_col) > - { > - if(tag_col->name == elm_menu_item_label_get(mi)) > - break; > - } > - if(tag_col) > - enlil_photo_tag_remove(photo, tag_col); > - } > + > EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l, > child) > + { > + photo = photos_list_object_item_data_get(child); > + EINA_LIST_FOREACH(enlil_photo_tags_get(photo), l2, tag_col) > + { > + if(tag_col->name == > elm_list_item_label_get(elm_list_selected_item_get(obj))) > + break; > + } > + if(tag_col) > + enlil_photo_tag_remove(photo, tag_col); > + } > > - photo_menu_free(am); > + photo_menu_init(enlil_photo, _edje); > } > > static void _tag_new_cb(void *data, Evas_Object *obj, void *event_info) > { > - Photo_Menu *photo_menu = data; > - inwin_tag_new_new(_inwin_del_cb, photo_menu, photo_menu->photos); > + List_Photo *enlil_photo = data; > + Eina_List *photos = NULL, *l; > + PL_Child_Item *child; > + Enlil_Photo *photo; > + > + //build the list of selected photos > + > EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l, > child) > + { > + photo = photos_list_object_item_data_get(child); > + photos = eina_list_append(photos, photo); > + } > + // > + inwin_tag_new_new(_inwin_del_cb, photos, photos); > } > > static void _photo_move_album_list_cb(void *data, Evas_Object *obj, void > *event_info) > { > - Photo_Menu *photo_menu = data; > - inwin_photo_move_album_new(_inwin_del_cb, photo_menu, > photo_menu->photos); > + List_Photo *enlil_photo = data; > + Eina_List *photos = NULL, *l; > + PL_Child_Item *child; > + Enlil_Photo *photo; > + > + //build the list of selected photos > + > EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l, > child) > + { > + photo = photos_list_object_item_data_get(child); > + photos = eina_list_append(photos, photo); > + } > + // > + inwin_photo_move_album_new(_inwin_del_cb, photos, photos); > } > > -static void _photo_move_album_cb(void *data, Evas_Object *obj, void > *event_info) > -{ > - Photo_Menu *photo_menu = data; > - Elm_Menu_Item *mi = event_info; > - char buf[PATH_MAX], buf2[PATH_MAX]; > - Eina_List *l; > - Enlil_Photo *photo; > > - EINA_LIST_FOREACH(photo_menu->photos, l, photo) > - { > - Enlil_Album *album = > enlil_library_album_search_name(enlil_album_library_get(enlil_photo_album_get(photo)), > - elm_menu_item_label_get(mi)); > - ASSERT_RETURN_VOID(album != NULL); > - > - snprintf(buf, PATH_MAX, "%s/%s", enlil_photo_path_get(photo), > - enlil_photo_file_name_get(photo)); > - > - snprintf(buf2, PATH_MAX, "%s/%s/%s", enlil_album_path_get(album), > enlil_album_file_name_get(album), > - enlil_photo_file_name_get(photo)); > - > - ecore_file_mv(buf, buf2); > - } > -} > - > static void _photo_delete_cb(void *data, Evas_Object *obj, void > *event_info) > { > - Photo_Menu *photo_menu = data; > - inwin_photo_delete_new(enlil_data->win->win, _inwin_del_cb, photo_menu, > photo_menu->photos); > + List_Photo *enlil_photo = data; > + Eina_List *photos = NULL, *l; > + PL_Child_Item *child; > + Enlil_Photo *photo; > + > + //build the list of selected photos > + > EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l, > child) > + { > + photo = photos_list_object_item_data_get(child); > + photos = eina_list_append(photos, photo); > + } > + // > + inwin_photo_delete_new(enlil_data->win->win, _inwin_del_cb, photos, > photos); > } > > static void _photo_thumb_reload_cb(void *data, Evas_Object *obj, void > *event_info) > { > - Photo_Menu *photo_menu = data; > - Eina_List *l; > - Enlil_Photo_Data *photo_data; > - Enlil_Photo *photo; > + List_Photo *enlil_photo = data; > + PL_Child_Item *child; > + Eina_List *l; > > - EINA_LIST_FOREACH(photo_menu->photos, l, photo) > - { > - photo_data = enlil_photo_user_data_get(photo); > - enlil_photo_thumb_fdo_normal_set(photo, NULL); > - enlil_photo_thumb_fdo_large_set(photo, NULL); > - photos_list_object_item_update(photo_data->list_photo_item); > - map_photo_update(enlil_data->map, photo); > - } > + Enlil_Photo_Data *photo_data; > + Enlil_Photo *photo; > + > + > EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l, > child) > + { > + photo = photos_list_object_item_data_get(child); > + photo_data = enlil_photo_user_data_get(photo); > + enlil_photo_thumb_fdo_normal_set(photo, NULL); > + enlil_photo_thumb_fdo_large_set(photo, NULL); > + > photos_list_object_item_update(photo_data->list_photo_item); > + map_photo_update(enlil_data->map, photo); > + } > } > > static void _photo_exif_reload_cb(void *data, Evas_Object *obj, void > *event_info) > { > - Photo_Menu *photo_menu = data; > - Eina_List *l; > - Enlil_Photo *photo; > + List_Photo *enlil_photo = data; > + Eina_List *l; > + Enlil_Photo *photo; > + PL_Child_Item *child; > > - EINA_LIST_FOREACH(photo_menu->photos, l, photo) > - { > - enlil_exif_job_prepend(photo, exif_load_done, photo); > - } > + > EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l, > child) > + { > + photo = photos_list_object_item_data_get(child); > + enlil_exif_job_prepend(photo, exif_load_done, photo); > + } > } > > static void _photo_iptc_reload_cb(void *data, Evas_Object *obj, void > *event_info) > { > - Photo_Menu *photo_menu = data; > - Eina_List *l; > - Enlil_Photo *photo; > + List_Photo *enlil_photo = data; > + Eina_List *l; > + Enlil_Photo *photo; > + PL_Child_Item *child; > > - EINA_LIST_FOREACH(photo_menu->photos, l, photo) > - { > - enlil_iptc_job_prepend(photo, iptc_load_done, photo); > - } > + > EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l, > child) > + { > + photo = photos_list_object_item_data_get(child); > + enlil_iptc_job_prepend(photo, iptc_load_done, photo); > + } > } > > static void _wall_app_set_cb(void *data, Evas_Object *obj, void > *event_info) > { > - Photo_Menu *photo_menu = data; > - char buf[PATH_MAX]; > - Enlil_String s; > - Eet_Data_Descriptor *edd; > + char buf[PATH_MAX]; > + Enlil_String s; > + Eet_Data_Descriptor *edd; > + List_Photo *enlil_photo = data; > + Eina_List *l; > + Enlil_Photo *photo; > + PL_Child_Item *child; > > - snprintf(buf, PATH_MAX, "%s/%s", > enlil_photo_path_get(photo_menu->photo), > - enlil_photo_file_name_get(photo_menu->photo)); > - enlil_win_bg_set(enlil_data->win, buf); > + > EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l, > child) > + { > + photo = photos_list_object_item_data_get(child); > + snprintf(buf, PATH_MAX, "%s/%s", > enlil_photo_path_get(photo), > + enlil_photo_file_name_get(photo)); > + enlil_win_bg_set(enlil_data->win, buf); > > - s.string = eina_stringshare_add(buf); > - edd = enlil_string_edd_new(); > + s.string = eina_stringshare_add(buf); > + edd = enlil_string_edd_new(); > > - snprintf(buf, PATH_MAX, "%s %s", APP_NAME" background", > enlil_library_path_get(enlil_data->library)); > - enlil_eet_app_data_save(edd, buf, &s); > - eet_data_descriptor_free(edd); > - eina_stringshare_del(s.string); > + snprintf(buf, PATH_MAX, "%s %s", APP_NAME" background", > enlil_library_path_get(enlil_data->library)); > + enlil_eet_app_data_save(edd, buf, &s); > + eet_data_descriptor_free(edd); > + eina_stringshare_del(s.string); > + break; > + } > } > > static void _library_photo1_set_cb(void *data, Evas_Object *obj, void > *event_info) > { > - Photo_Menu *photo_menu = data; > - enlil_library_photo_set(enlil_data->library, photo_menu->photo, 1); > - main_menu_update_libraries_list(); > + List_Photo *enlil_photo = data; > + Eina_List *l; > + Enlil_Photo *photo; > + PL_Child_Item *child; > + > + > EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l, > child) > + { > + photo = photos_list_object_item_data_get(child); > + enlil_library_photo_set(enlil_data->library, photo, 1); > + break; > + } > + main_menu_update_libraries_list(); > } > > static void _library_photo2_set_cb(void *data, Evas_Object *obj, void > *event_info) > { > - Photo_Menu *photo_menu = data; > - enlil_library_photo_set(enlil_data->library, photo_menu->photo, 2); > - main_menu_update_libraries_list(); > + List_Photo *enlil_photo = data; > + Eina_List *l; > + Enlil_Photo *photo; > + PL_Child_Item *child; > + > + > EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l, > child) > + { > + photo = photos_list_object_item_data_get(child); > + enlil_library_photo_set(enlil_data->library, photo, 2); > + break; > + } > + main_menu_update_libraries_list(); > } > > void photo_menu_free(Photo_Menu *photo_menu) > { > - ASSERT_RETURN_VOID(photo_menu != NULL); > + ASSERT_RETURN_VOID(photo_menu != NULL); > > - if(photo_menu->photos) > - eina_list_free(photo_menu->photos); > - evas_object_del(photo_menu->menu); > + if(photo_menu->photos) > + eina_list_free(photo_menu->photos); > + evas_object_del(photo_menu->menu); > } > > static void _inwin_del_cb(void *data) > { > - photo_menu_free(data); > + Eina_List *photos = data; > + eina_list_free(photos); > + photo_menu_init(enlil_data->list_photo, _edje); > } > > > > > ------------------------------------------------------------------------------ > The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE: > Pinpoint memory and threading errors before they happen. > Find and fix more than 250 security defects in the development cycle. > Locate bottlenecks in serial and parallel code that limit performance. > http://p.sf.net/sfu/intel-dev2devfeb > _______________________________________________ > enlightenment-svn mailing list > enlightenment-...@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-svn > -- Regards. ------------------------------------------------------------------------------ The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE: Pinpoint memory and threading errors before they happen. Find and fix more than 250 security defects in the development cycle. Locate bottlenecks in serial and parallel code that limit performance. http://p.sf.net/sfu/intel-dev2devfeb _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel