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

Reply via email to