diff --git a/TODO b/TODO index 9ff320e..0584758 100644 --- a/TODO +++ b/TODO @@ -10,8 +10,8 @@ BUGS NEEDED ---------------------------------------------------- -* histo menu pre and post callbacks with evas mouse events on menu item (event object) * fix thumbnailing messages : too much ! +* option to set the thumb size, and no thumb mode * find a way to have the path of a generated thumb, to load it direcly instead of always using e_thumb (delay) diff --git a/data/theme/photo_popi_parts.edc b/data/theme/photo_popi_parts.edc index c5a2c9b..a76d2b4 100644 --- a/data/theme/photo_popi_parts.edc +++ b/data/theme/photo_popi_parts.edc @@ -18,7 +18,7 @@ part image { normal: "popup_info_background.png"; - border: 5 5 5 5; + border: 10 10 10 10; } } } diff --git a/src/module/photo_item.h b/src/module/photo_item.h index 77c407d..9c4f438 100644 --- a/src/module/photo_item.h +++ b/src/module/photo_item.h @@ -48,6 +48,7 @@ struct _Photo_Item Photo_Config_Item *config; E_Config_Dialog *config_dialog; E_Menu *menu; + E_Menu *menu_histo; Ecore_Timer *timer; diff --git a/src/module/photo_menu.c b/src/module/photo_menu.c index 2f8f3ea..ae62406 100644 --- a/src/module/photo_menu.c +++ b/src/module/photo_menu.c @@ -48,11 +48,7 @@ int photo_menu_show(Photo_Item *pi) } e_menu_item_callback_set(mi, _cb_pause_toggle, pi); - mn2 = e_menu_new(); - photo_picture_histo_menu_populate(pi, mn2); - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Historic")); - e_menu_item_submenu_set(mi, mn2); + photo_picture_histo_menu_append(pi, mn); mi = e_menu_item_new(mn); e_menu_item_separator_set(mi, 1); diff --git a/src/module/photo_picture.c b/src/module/photo_picture.c index 4477f37..5b33e67 100644 --- a/src/module/photo_picture.c +++ b/src/module/photo_picture.c @@ -59,6 +59,7 @@ Picture *photo_picture_new(char *path, char *name, int thumb_it, void (*func_don im = e_thumb_icon_add(photo->e_evas); DPICL(("THUMB of %s wanted at %dx%d", picture->path, th_w, th_h)); e_thumb_icon_file_set(im, (char *)picture->path, NULL); + e_thumb_icon_size_set(im, 128, 128); evas_object_smart_callback_add(im, "e_thumb_gen", func_done, picture); picture->picture = im; e_thumb_icon_begin(im); @@ -79,6 +80,7 @@ int photo_picture_free(Picture *p, int force, int force_now) } } + DD(("Picture Free : %s", p->path)); if (p->path) evas_stringshare_del(p->path); if (p->picture) evas_object_del(p->picture); diff --git a/src/module/photo_picture_histo.c b/src/module/photo_picture_histo.c index ef35c05..1588206 100644 --- a/src/module/photo_picture_histo.c +++ b/src/module/photo_picture_histo.c @@ -1,9 +1,11 @@ #include "Photo.h" -static void _cb_menu_deactivate_post(void *data, E_Menu *m); -static void _cb_menu_pre_select(void *data, E_Menu *m, E_Menu_Item *mi); -static void _cb_menu_post_select(void *data, E_Menu *m, E_Menu_Item *mi); +static void _cb_menu_populate(void *data, E_Menu *m, E_Menu_Item *mi); +static void _cb_menu_activate(void *data, E_Menu *m, E_Menu_Item *mi); static void _cb_menu_select(void *data, E_Menu *m, E_Menu_Item *mi); +static void _cb_menu_pre_select(void *data, Evas *evas, Evas_Object *obj, void *event_info); +static void _cb_menu_post_select(void *data, Evas *evas, Evas_Object *obj, void *event_info); +static void _cb_menu_deactivate_post(void *data, E_Menu *m); static void _cb_popi_close(void *data); /* @@ -110,13 +112,38 @@ void photo_picture_histo_picture_del(Picture *picture) evas_list_free(picture->items_histo); } -void photo_picture_histo_menu_populate(Photo_Item *pi, E_Menu *mn) +void photo_picture_histo_menu_append(Photo_Item *pi, E_Menu *mn_main) { - E_Menu_Item *mi; + E_Menu_Item *mi; + + mi = e_menu_item_new(mn_main); + e_menu_item_label_set(mi, _("Historic")); + e_menu_item_submenu_pre_callback_set(mi, + _cb_menu_populate, pi); + e_menu_item_submenu_post_callback_set(mi, + _cb_menu_activate, pi); +} + + +/* + * Private functions + * + */ + +static void +_cb_menu_populate(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Photo_Item *pi; + E_Menu *mn; Picture *p; int pos; + pi = data; + + mn = e_menu_new(); + pi->menu_histo = mn; e_menu_post_deactivate_callback_set(mn, _cb_menu_deactivate_post, pi); + e_menu_item_submenu_set(mi, mn); pos = evas_list_count(pi->histo.list) - 1; while ( (p=evas_list_nth(pi->histo.list, pos)) ) @@ -128,39 +155,68 @@ void photo_picture_histo_menu_populate(Photo_Item *pi, E_Menu *mn) if (pi->histo.pos == pos) e_menu_item_toggle_set(mi, 1); - e_menu_item_submenu_pre_callback_set(mi, _cb_menu_pre_select, pi); - e_menu_item_submenu_post_callback_set(mi, _cb_menu_post_select, pi); e_menu_item_callback_set(mi, _cb_menu_select, pi); + evas_object_event_callback_add(mi->event_object, EVAS_CALLBACK_MOUSE_IN, + _cb_menu_pre_select, mi); + evas_object_event_callback_add(mi->event_object, EVAS_CALLBACK_MOUSE_OUT, + _cb_menu_post_select, mi); pos--; } } - -/* - * Private functions - * - */ - static void -_cb_menu_deactivate_post(void *data, E_Menu *m) +_cb_menu_activate(void *data, E_Menu *m, E_Menu_Item *mi) { - e_object_del(E_OBJECT(m)); + Photo_Item *pi; + E_Menu *mn; + Evas_List *l; + + pi = data; + mn = pi->menu_histo; + + for (l=mn->items; l; l=evas_list_next(l)) + { + E_Menu_Item *mi; + + mi = evas_list_data(l); + if (mi->separator) continue; + evas_object_event_callback_add(mi->event_object, EVAS_CALLBACK_MOUSE_IN, + _cb_menu_pre_select, mi); + evas_object_event_callback_add(mi->event_object, EVAS_CALLBACK_MOUSE_OUT, + _cb_menu_post_select, mi); + } } static void -_cb_menu_pre_select(void *data, E_Menu *m, E_Menu_Item *mi) +_cb_menu_select(void *data, E_Menu *m, E_Menu_Item *mi) { - Picture *p; Photo_Item *pi; - char *text; - int number; + int no; pi = data; + no = e_menu_item_num_get(mi); + photo_item_action_change(pi, + pi->histo.pos - + (evas_list_count(pi->histo.list) - (no+1))); +} + +static void +_cb_menu_pre_select(void *data, Evas *evas, Evas_Object *obj, void *event_info) +{ + E_Menu_Item *mi; + Photo_Item *pi; + Picture *p; + char *text; + int number; + + mi = data; + pi = mi->cb.data; + number = (evas_list_count(pi->histo.list) - (e_menu_item_num_get(mi)+1)); - DPIC(("Select %d in histo list", number)); + DPIC(("Histo menu : Select %d in histo list", number)); p = evas_list_nth(pi->histo.list, number); if (!p) return; @@ -179,11 +235,13 @@ _cb_menu_pre_select(void *data, E_Menu *m, E_Menu_Item *mi) } static void -_cb_menu_post_select(void *data, E_Menu *m, E_Menu_Item *mi) +_cb_menu_post_select(void *data, Evas *evas, Evas_Object *obj, void *event_info) { + E_Menu_Item *mi; Photo_Item *pi; - pi = data; + mi = data; + pi = mi->cb.data; DPIC(("Histo menu : Post select callback")); @@ -192,19 +250,19 @@ _cb_menu_post_select(void *data, E_Menu *m, E_Menu_Item *mi) pi->histo.popi = NULL; } - static void -_cb_menu_select(void *data, E_Menu *m, E_Menu_Item *mi) +_cb_menu_deactivate_post(void *data, E_Menu *m) { - Photo_Item *pi; - int no; + /* + Photo_Item *pi; - pi = data; + pi = data; + pi->menu_histo = NULL; + */ + + DD(("deactivate cb post")); - no = e_menu_item_num_get(mi); - photo_item_action_change(pi, - pi->histo.pos - - (evas_list_count(pi->histo.list) - (no+1))); + e_object_del(E_OBJECT(m)); } static void diff --git a/src/module/photo_picture_histo.h b/src/module/photo_picture_histo.h index e32fab0..690bbdf 100644 --- a/src/module/photo_picture_histo.h +++ b/src/module/photo_picture_histo.h @@ -20,7 +20,7 @@ Picture *photo_picture_histo_change(Photo_Item *pi, int offset); void photo_picture_histo_picture_del(Picture *picture); -void photo_picture_histo_menu_populate(Photo_Item *pi, E_Menu *mn); +void photo_picture_histo_menu_append(Photo_Item *pi, E_Menu *mn_main); #endif #endif diff --git a/src/module/photo_picture_local.c b/src/module/photo_picture_local.c index 43445c8..495676f 100644 --- a/src/module/photo_picture_local.c +++ b/src/module/photo_picture_local.c @@ -531,7 +531,6 @@ _thumb_generate_cb(void *data, Evas_Object *obj, void *event_info) picture->thumb = PICTURE_THUMB_READY; pl->thumb.nb--; - pl->pictures = evas_list_append(pl->pictures, picture); /* popups about thumbnailing */