From f1497415762edced2629d29345d25616cd5a8750 Mon Sep 17 00:00:00 2001 From: kiwi Date: Tue, 11 Jul 2006 05:52:13 +0000 Subject: [PATCH] update to current E, cleanings and add logo image * use new e_thumb system, wich cause some problems (little delay before actualy getting the thumb, i'll see that later) * don't use e_lib anymore to set the desktop background * add the Photo module logo as default, when you have no pictures to display. Now you know where's the module when you add it in a shelf =) * fix some typos and clean picture system. need indent session SVN revision: 23842 --- TODO | 7 + configure.in | 1 + data/Makefile.am | 2 +- data/images/Makefile.am | 4 + data/images/photo_logo.png | Bin 0 -> 16611 bytes src/module/Photo.h | 1 - src/module/photo_item.c | 28 ++- src/module/photo_picture.c | 211 ++++++++------------ src/module/photo_picture.h | 15 +- src/module/photo_picture_local.c | 329 ++++++++++++------------------- 10 files changed, 237 insertions(+), 361 deletions(-) create mode 100644 data/images/Makefile.am create mode 100644 data/images/photo_logo.png diff --git a/TODO b/TODO index 3b740a9..9ff320e 100644 --- a/TODO +++ b/TODO @@ -10,6 +10,13 @@ BUGS NEEDED ---------------------------------------------------- +* histo menu pre and post callbacks with evas mouse events on menu item (event object) +* fix thumbnailing messages : too much ! + +* find a way to have the path of a generated thumb, to load it direcly + instead of always using e_thumb (delay) + the other solution would be a cache, and its not a good one =) + * add some borders between different item categories in config panels * change item action setbg with diff --git a/configure.in b/configure.in index 667fc5d..0ebd4bf 100644 --- a/configure.in +++ b/configure.in @@ -154,6 +154,7 @@ AC_OUTPUT([ e_modules-photo.spec Makefile data/Makefile +data/images/Makefile data/theme/Makefile src/Makefile src/module/Makefile diff --git a/data/Makefile.am b/data/Makefile.am index c201cf0..9909286 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -1,2 +1,2 @@ MAINTAINERCLEANFILES = Makefile.in -SUBDIRS = theme +SUBDIRS = images theme diff --git a/data/images/Makefile.am b/data/images/Makefile.am new file mode 100644 index 0000000..221b5c8 --- /dev/null +++ b/data/images/Makefile.am @@ -0,0 +1,4 @@ +MAINTAINERCLEANFILES = Makefile.in + +filesdir = $(datadir)/images +files_DATA = photo_logo.png diff --git a/data/images/photo_logo.png b/data/images/photo_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b03a5675eddc522f779ffa146dbc73aaf63e8f25 GIT binary patch literal 16611 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

-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 Dt&tlr literal 0 HcmV?d00001 diff --git a/src/module/Photo.h b/src/module/Photo.h index 4002f1f..02b26db 100644 --- a/src/module/Photo.h +++ b/src/module/Photo.h @@ -4,7 +4,6 @@ /* Enlightenment includes */ #include #include -#include /* Photo includes */ #define E_MOD_PHOTO_TYPEDEFS 1 diff --git a/src/module/photo_item.c b/src/module/photo_item.c index c976568..8c191d4 100644 --- a/src/module/photo_item.c +++ b/src/module/photo_item.c @@ -352,7 +352,8 @@ int photo_item_action_setbg(Photo_Item *pi) { Picture *p; E_Zone *zone; - const char *file = NULL; + Ecore_Exe *exe; + const char *file; const char *name; char buf[4096]; @@ -382,8 +383,6 @@ int photo_item_action_setbg(Photo_Item *pi) { if (ecore_file_app_installed("e17setroot")) { - Ecore_Exe *exe; - snprintf(buf, 4096, "e17setroot -s \"%s\"", file); DITEM(("Set background with %s", buf)); exe = ecore_exe_pipe_run(buf, ECORE_EXE_USE_SH, NULL); @@ -409,25 +408,20 @@ int photo_item_action_setbg(Photo_Item *pi) { DITEM(("Set edje background %s", file)); - if ((zone->container->num == 0) && (zone->num == 0) && - (zone->desk_x_current == 0) && (zone->desk_y_current == 0)) - { - e_lib_background_set(strdup(file)); - } - else - { - e_lib_desktop_background_del(zone->container->num, zone->num, - zone->desk_x_current, zone->desk_y_current); - e_lib_desktop_background_add(zone->container->num, zone->num, - zone->desk_x_current, zone->desk_y_current, - strdup(file)); - } + snprintf(buf, 4096, "enlightenment_remote -default-bg-set \"%s\"", file); + exe = ecore_exe_pipe_run(buf, ECORE_EXE_USE_SH, NULL); + if (exe > 0) + { + ecore_exe_free(exe); + if (photo->config->pictures_set_bg_purge) + photo_picture_setbg_add(name); + } } return 1; } -int photo_item_action_viewer(Photo_Item *pi) +int photo_item_action_viewer(Photo_Item *pi) { Picture *p; const char *file = NULL; diff --git a/src/module/photo_picture.c b/src/module/photo_picture.c index 892fe59..4477f37 100644 --- a/src/module/photo_picture.c +++ b/src/module/photo_picture.c @@ -1,8 +1,5 @@ #include "Photo.h" -static char *_display_init(void); -static void _display_shutdown(void); - /* * Public functions */ @@ -19,9 +16,6 @@ int photo_picture_init(void) //if (!photo_picture_net_init()) // return 0; - if (!_display_init()) - return 0; - return 1; } @@ -29,12 +23,76 @@ void photo_picture_shutdown(void) { photo_picture_setbg_purge(1); - _display_shutdown(); - photo_picture_local_shutdown(); //photo_picture_net_shutdown(); } +Picture *photo_picture_new(char *path, char *name, int thumb_it, void (*func_done) (void *data, Evas_Object *obj, void *event_info)) +{ + Picture *picture; + int th_w, th_h; + char *ext; + + th_w = photo->config->pictures_thumb_size; + th_h = photo->config->pictures_thumb_size; + + ext = strrchr(name, '.'); + if (!ext) + return NULL; + if (strcasecmp(ext, ".jpg") && strcasecmp(ext, ".JPG") && + strcasecmp(ext, ".jpeg") && strcasecmp(ext, ".JPEG") && + strcasecmp(ext, ".png") && strcasecmp(ext, ".PNG")) + return NULL; + + DPICL(("New picture : file %s", name)); + + picture = E_NEW(Picture, 1); + picture->path = evas_stringshare_add(path); + picture->infos.name = photo_picture_name_get(name); + picture->from = PICTURE_LOCAL; + + if (thumb_it) + { + Evas_Object *im; + + picture->thumb = PICTURE_THUMB_WAITING; + 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); + evas_object_smart_callback_add(im, "e_thumb_gen", func_done, picture); + picture->picture = im; + e_thumb_icon_begin(im); + } + + return picture; +} + +int photo_picture_free(Picture *p, int force, int force_now) +{ + if (p->pi) + { + if (!force) return 0; + if (!force_now) + { + p->delete_me = 1; + return 0; + } + } + + if (p->path) evas_stringshare_del(p->path); + if (p->picture) evas_object_del(p->picture); + + if (p->infos.name) evas_stringshare_del(p->infos.name); + if (p->infos.author) evas_stringshare_del(p->infos.author); + if (p->infos.where_from) evas_stringshare_del(p->infos.where_from); + if (p->infos.date) evas_stringshare_del(p->infos.date); + if (p->infos.comments) evas_stringshare_del(p->infos.comments); + + photo_picture_histo_picture_del(p); + + free(p); + return 1; +} int photo_picture_load(Picture *pic, Evas *evas) { @@ -61,82 +119,28 @@ void photo_picture_unload(Picture *pic) pic->picture = NULL; } - -int photo_picture_free(Picture *p, int force, int force_now) -{ - if (p->pi) - { - if (!force) return 0; - if (!force_now) - { - p->delete = 1; - return 0; - } - } - - if (p->path) evas_stringshare_del(p->path); - if (p->thumb_path) evas_stringshare_del(p->thumb_path); - if (p->picture) evas_object_del(p->picture); - - if (p->infos.name) evas_stringshare_del(p->infos.name); - if (p->infos.author) evas_stringshare_del(p->infos.author); - if (p->infos.where_from) evas_stringshare_del(p->infos.where_from); - if (p->infos.date) evas_stringshare_del(p->infos.date); - if (p->infos.comments) evas_stringshare_del(p->infos.comments); - - photo_picture_histo_picture_del(p); - - free(p); - return 1; -} - Evas_Object *photo_picture_object_get(Picture *pic, Evas *evas) { Evas_Object *im = NULL; - Eet_File *ef; - Evas_Coord sw, sh; + int th_w, th_h; + + th_w = photo->config->pictures_thumb_size; + th_h = photo->config->pictures_thumb_size; if (!pic) return NULL; - if (pic->thumb_path) + if (pic->thumb) { /* load picture thumb */ - ef = eet_open(pic->thumb_path, EET_FILE_MODE_READ); - if (!ef) - { - eet_close(ef); - return 0; - } - - im = e_icon_add(evas); - e_icon_file_key_set(im, pic->thumb_path, "/thumbnail/data"); - - e_icon_size_get(im, &sw, &sh); - evas_object_resize(im, sw, sh); - e_icon_fill_inside_set(im, 1); - - /* debug : modify e_icon */ - /* - im = e_icon_add(evas); - e_icon_file_key_set(im, pic->thumb_path, "/thumbnail/data"); - e_icon_size_get(im, &sw, &sh); - evas_object_resize(im, pic->original_w, pic->original_h); - e_icon_fill_inside_set(im, 1); - */ - - /* debug : try without e_icon */ - /* - im = evas_object_image_add(evas); - evas_object_image_file_set(im, pic->thumb_path, "/thumbnail/data"); - evas_object_image_fill_set(im, 0, 0, pic->original_w, pic->original_h); - evas_object_resize(im, pic->original_w, pic->original_h); - evas_object_move(im, 0, 0); - */ - - eet_close(ef); + im = e_thumb_icon_add(evas); + e_thumb_icon_file_set(im, (char *)pic->path, NULL); + e_thumb_icon_size_set(im, th_w, th_h); + e_thumb_icon_begin(im); } else { + int sw, sh; + /* load picture */ im = e_icon_add(evas); e_icon_file_set(im, pic->path); @@ -254,64 +258,3 @@ void photo_picture_setbg_purge(int shutdown) * Private functions * */ - -static char * -_display_init(void) -{ - char *display = NULL; - char *tmp; - - tmp = getenv("DISPLAY"); - if (tmp) - display = strdup(tmp); - - /* make sure the display var is of the form name:0.0 or :0.0 */ - if (display) - { - char *p; - char buf[1024]; - - p = strrchr(display, ':'); - if (!p) - { - snprintf(buf, sizeof(buf), "%s:0.0", display); - free(display); - display = strdup(buf); - } - else - { - p = strrchr(p, '.'); - if (!p) - { - snprintf(buf, sizeof(buf), "%s.0", display); - free(display); - display = strdup(buf); - } - } - } - else - display = strdup(":0.0"); - - /* init e Lib */ - if (display) - e_lib_init(display); - else - { - display = strdup(":0.0"); - e_lib_init(display); - } - - photo->display = display; - - return display; -} - -static void -_display_shutdown(void) -{ - if (!photo->display) - return; - - E_FREE(photo->display); - e_lib_shutdown(); -} diff --git a/src/module/photo_picture.h b/src/module/photo_picture.h index fe0ce44..714d3d4 100644 --- a/src/module/photo_picture.h +++ b/src/module/photo_picture.h @@ -17,6 +17,10 @@ typedef struct _Picture_Event_Fill Picture_Event_Fill; #define PICTURE_SET_BG_PURGE_DEFAULT 1 +#define PICTURE_THUMB_NO 0 +#define PICTURE_THUMB_READY 1 +#define PICTURE_THUMB_WAITING 2 + #define PICTURE_THUMB_SIZE_DEFAULT 300 #define PICTURE_THUMB_SIZE_MIN 100 #define PICTURE_THUMB_SIZE_MAX 600 @@ -26,7 +30,7 @@ struct _Picture Photo_Item *pi; const char *path; - const char *thumb_path; + unsigned char thumb : 2; Evas_Object *picture; struct @@ -37,9 +41,10 @@ struct _Picture const char *date; const char *comments; } infos; - int delete; - int from; int original_w, original_h; + unsigned char from; + + unsigned char delete_me : 1; /* * each photo item where the picture is in the histo @@ -57,10 +62,12 @@ struct _Picture_Event_Fill int photo_picture_init(void); void photo_picture_shutdown(void); +Picture *photo_picture_new(char *path, char *name, int thumb_it, void (*func_done) (void *data, Evas_Object *obj, void *event_info)); +int photo_picture_free(Picture *p, int force, int force_now); + int photo_picture_load(Picture *pic, Evas *evas); void photo_picture_unload(Picture *pic); -int photo_picture_free(Picture *p, int force, int force_now); Evas_Object *photo_picture_object_get(Picture *pic, Evas *evas); const char *photo_picture_name_get(char *name); char *photo_picture_infos_get(Picture *p); diff --git a/src/module/photo_picture_local.c b/src/module/photo_picture_local.c index c436a11..43445c8 100644 --- a/src/module/photo_picture_local.c +++ b/src/module/photo_picture_local.c @@ -1,7 +1,5 @@ #include "Photo.h" -#define CACHE_SIZE() (2 + evas_list_count(DEVIANM->devians)*2) - #define POPUP_LOADING(list, buf, dtime) \ if (list->loader.popup) \ photo_popup_warn_del(list->loader.popup); \ @@ -30,7 +28,7 @@ struct _Picture_Local_List /* thumb */ struct { - Evas_List *pictures; + int nb; Popup_Warn *popup; int popup_show; } thumb; @@ -58,14 +56,13 @@ struct _Picture_Local_List static Picture_Local_List *pictures_local; -static int _picture_new(char *name); static void _pictures_old_del(int force, int force_now); static int _load_idler(void *data); static void _load_idler_stop(void); static int _load_cb_ev_fill(void *data, int type, void *event); -static void _thumb_generate_cb(Evas_Object *obj, void *data); +static void _thumb_generate_cb(void *data, Evas_Object *obj, void *event_info); static void _thumb_generate_stop(void); static int _popup_loader_close(Popup_Warn *popw, void *data); @@ -118,7 +115,12 @@ void photo_picture_local_load_start(void) d->state = PICTURE_LOCAL_DIR_NOT_LOADED; } - /* load pictures */ + /* initialise thumbnailer */ + pictures_local->thumb.nb = 0; + pictures_local->thumb.popup_show = 1; + pictures_local->thumb.popup = NULL; + + /* initialise and launch loader */ pictures_local->loader.idler = ecore_idler_add(_load_idler, NULL); if (photo->config_dialog) @@ -140,7 +142,7 @@ void photo_picture_local_load_stop(void) int photo_picture_local_load_state_get(void) { - if (pictures_local->thumb.pictures || + if (pictures_local->thumb.nb || pictures_local->loader.idler) return 1; @@ -176,7 +178,8 @@ Picture *photo_picture_local_get(int position) { DD(("- Search -")); picture = evas_list_data(l); - if (!picture->pi && !picture->delete) + if (!picture->pi && !picture->delete_me && + (picture->thumb != PICTURE_THUMB_WAITING)) return picture; l = evas_list_next(l); if (!l) l = pl->pictures; @@ -189,12 +192,13 @@ Picture *photo_picture_local_get(int position) int photo_picture_local_loaded_nb_get(void) { - return evas_list_count(pictures_local->pictures); + return (evas_list_count(pictures_local->pictures) - + pictures_local->thumb.nb); } int photo_picture_local_tothumb_nb_get(void) { - return evas_list_count(pictures_local->thumb.pictures); + return pictures_local->thumb.nb; } void photo_picture_local_ev_set(Photo_Item *pi) @@ -266,111 +270,6 @@ void photo_picture_local_dir_free(Picture_Local_Dir *dir, int del_dialog) * Private functions */ -static int -_picture_new(char *name) -{ - Picture_Local_List *pl; - Picture *picture; - char file[4096]; - int th_w, th_h; - char *file_tmp, *ext; - - pl = pictures_local; - - file_tmp = evas_list_data(pl->loader.dirs); - snprintf(file, sizeof(file), - "%s/%s", file_tmp, name); - - DD(("File %s", file)); - - if (!pl->loader.current_dir->read_hidden && (file[0] == '.')) - return 0; - - th_w = photo->config->pictures_thumb_size; - th_h = photo->config->pictures_thumb_size; - - if ((file_tmp = ecore_file_readlink(file))) - { - name = strdup(ecore_file_get_file(file_tmp)); - strncpy(file, file_tmp, sizeof(file)); - } - - if (pl->loader.current_dir->recursive && - ecore_file_is_dir(file)) - { - pl->loader.dirs = evas_list_append(pl->loader.dirs, strdup(file)); - DPICL(("added %s to loader dirs", file)); - return 0; - } - - ext = strrchr(name, '.'); - if (!ext) - return 0; - if (strcasecmp(ext, ".jpg") && strcasecmp(ext, ".JPG") && - strcasecmp(ext, ".jpeg") && strcasecmp(ext, ".JPEG") && - strcasecmp(ext, ".png") && strcasecmp(ext, ".PNG")) - return 0; - - DPICL(("File %s loading ...", file)); - - picture = E_NEW(Picture, 1); - picture->path = evas_stringshare_add(file); - file_tmp = e_thumb_file_get((char *)picture->path); - picture->thumb_path = evas_stringshare_add(file_tmp); - free(file_tmp); - picture->infos.name = photo_picture_name_get(name); - picture->from = PICTURE_LOCAL; - - DPICL(("Thumb %s of %s exists ?", picture->thumb_path, picture->path)); - if (e_thumb_exists((char *)picture->path)) - { - int w, h; - - e_thumb_geometry_get((char *)picture->thumb_path, &w, &h, 1); - DPICL(("THUMB %dx%d (wanted %dx%d)", w, h, th_w, th_h)); - if ((th_w > w) && (th_h > h)) - { - /* thumb exists, but regen to new size */ - int i; - - i = ecore_file_unlink(picture->thumb_path); - DPICL(("File %s thumb exists (%dx%d), but regen to %dx%d (del old %d)", file, w, h, th_w, th_h, i)); - pl->thumb.pictures = evas_list_append(pl->thumb.pictures, - picture); - e_thumb_generate_begin((char *)picture->path, th_w, th_h, - photo->e_evas, - &picture->picture, _thumb_generate_cb, - picture); - } - else - { - /* thumb exists and good size */ - DPICL(("File %s thumb exists and good size, add (%de)", file, evas_list_count(pl->pictures))); - picture->original_w = w; - picture->original_h = h; - pl->pictures = evas_list_append(pl->pictures, picture); - if (pl->loader_ev.nb_clients) - photo_picture_local_ev_raise(1); - if (photo->config_dialog && - !(evas_list_count(pl->pictures)%100)) - photo_config_dialog_refresh_local_infos(); - } - } - else - { - /* thumb doesnt exists so generate it */ - DPICL(("File %s thumb doesnt exist, gen %dx%d", file, th_w, th_h)); - pl->thumb.pictures = evas_list_append(pl->thumb.pictures, - picture); - e_thumb_generate_begin((char *)picture->path, th_w, th_h, - photo->e_evas, - &picture->picture, _thumb_generate_cb, - picture); - } - - return 1; -} - static void _pictures_old_del(int force, int force_now) { @@ -392,7 +291,9 @@ _load_idler(void *data) Picture_Local_List *pl; Picture_Local_Dir *d; Evas_List *l; - char *name; + Picture *picture; + char *name, *file_tmp; + char file[200]; pl = pictures_local; @@ -445,15 +346,15 @@ _load_idler(void *data) if (photo->config->local.popup >= PICTURE_LOCAL_POPUP_SUM) { char buf[50]; - int thumb_nb = evas_list_count(pl->thumb.pictures); + snprintf(buf, sizeof(buf), "Scan finished : %d pictures found", - evas_list_count(pl->pictures) + thumb_nb); + evas_list_count(pl->pictures) + pl->thumb.nb); POPUP_LOADING(pl, buf, 3); /* tell how much pictures to thumb */ - if (thumb_nb) + if (pl->thumb.nb) { snprintf(buf, sizeof(buf), "Still %d pictures to thumbnail", - thumb_nb); + pl->thumb.nb); POPUP_THUMBNAILING(pl, buf, 3); } } @@ -482,46 +383,48 @@ _load_idler(void *data) return 1; } - /* create the picture */ - if (_picture_new(name)) + snprintf(file, sizeof(file), + "%s/%s", (char *)evas_list_data(pl->loader.dirs), name); + + if (!pl->loader.current_dir->read_hidden && (name[0] == '.')) + return 1; + if ((file_tmp = ecore_file_readlink(file))) { - /* popups */ - if (photo->config->local.popup == PICTURE_LOCAL_POPUP_ALWAYS) - { - int nb; - - /* loading popup message */ - nb = evas_list_count(pl->pictures) + evas_list_count(pl->thumb.pictures); - if (nb && ((nb == 1) || !(nb%PICTURE_LOCAL_POPUP_LOADER_MOD))) - { - char buf[50]; - - if (nb == 1) - snprintf(buf, sizeof(buf), "Scanning for pictures"); - else - snprintf(buf, sizeof(buf), "%d pictures found", nb); - POPUP_LOADING(pl, buf, 0); - } - - /* thumbnailing popup message */ - if (pl->thumb.popup_show && (evas_list_count(pl->thumb.pictures) == 1)) - { - POPUP_THUMBNAILING(pl, "Thumbnailing some pictures", 0); - pl->thumb.popup_show = 0; - } - } + name = strdup(ecore_file_get_file(file_tmp)); + strncpy(file, file_tmp, sizeof(file)); + } + if (pl->loader.current_dir->recursive && + ecore_file_is_dir(file)) + { + pl->loader.dirs = evas_list_append(pl->loader.dirs, strdup(file)); + DPICL(("added %s to loader dirs", file)); + return 1; + } + + /* create the picture */ + picture = photo_picture_new(file, name, 1, _thumb_generate_cb); + if (!picture) + return 1; + + pl->thumb.nb++; + pl->pictures = evas_list_append(pl->pictures, picture); + + /* loader popups */ + if (photo->config->local.popup == PICTURE_LOCAL_POPUP_ALWAYS) + { + int nb; - /* thumbnailing message */ - if (photo->config->local.thumb_msg && - (evas_list_count(pl->thumb.pictures) > 2)) + /* loading popup message */ + nb = evas_list_count(pl->pictures) + pl->thumb.nb; + if (nb && ((nb == 1) || !(nb%PICTURE_LOCAL_POPUP_LOADER_MOD))) { - photo->config->local.thumb_msg = 0; - e_module_dialog_show(photo->module, _("Photo Module Information"), - _("Creating thumbs

" - "Some pictures are being thumbed in a background task.
" - "It can take a while, but after, loading will be faster :)

" - "Each time wou will load pictures that haven't been loaded in devian before,
" - "they will be thumbed")); + char buf[50]; + + if (nb == 1) + snprintf(buf, sizeof(buf), "Scanning for pictures"); + else + snprintf(buf, sizeof(buf), "%d pictures found", nb); + POPUP_LOADING(pl, buf, 0); } } @@ -601,61 +504,63 @@ _load_cb_ev_fill(void *data, int type, void *event) } static void -_thumb_generate_cb(Evas_Object *obj, void *data) +_thumb_generate_cb(void *data, Evas_Object *obj, void *event_info) { Picture *picture; Picture_Local_List *pl; - if (!photo || !data) - return; - if (!e_module_enabled_get(photo->module)) + if (!photo || !e_module_enabled_get(photo->module)) return; pl = pictures_local; - - if (!evas_list_count(pl->thumb.pictures)) - return; - picture = data; - pl->thumb.pictures = evas_list_remove(pl->thumb.pictures, picture); - if (!evas_list_count(pl->thumb.pictures)) - { - pl->thumb.pictures = NULL; - if (photo->config_dialog) - photo_config_dialog_refresh_local_load(); - } - DPICL(("back from thumb generation of %s", picture->infos.name)); - if (ecore_file_exists(picture->thumb_path)) - { - e_thumb_geometry_get((char *)picture->thumb_path, - &picture->original_w, &picture->original_h, 1); - DPICL(("thumb generated %dx%d", picture->original_w, picture->original_h)); - - pl->pictures = evas_list_append(pl->pictures, picture); - - /* if the pic is loaded, remove it, we dont want it ! - * moreover it does memleak */ - if (picture->picture) - { - evas_object_del(picture->picture); - picture->picture = NULL; - } - - if (photo->config_dialog) - photo_config_dialog_refresh_local_infos(); - } - else + if (!obj) { + DPICL(("generated object is NULL !!")); photo_picture_free(picture, 1, 1); + return; } + evas_object_geometry_get(obj, NULL, NULL, + &picture->original_w, &picture->original_h); + DPICL(("thumb generated %dx%d", picture->original_w, picture->original_h)); + + picture->thumb = PICTURE_THUMB_READY; + + pl->thumb.nb--; + pl->pictures = evas_list_append(pl->pictures, picture); + + /* popups about thumbnailing */ + + /* first thumbnailing popup message */ + if (photo->config->local.popup && + pl->thumb.popup_show && (pl->thumb.nb == 1)) + { + pl->thumb.popup_show = 0; + POPUP_THUMBNAILING(pl, "Thumbnailing some pictures", 0); + } + + /* thumbnailing message, only one time */ + if (photo->config->local.thumb_msg) + { + photo->config->local.thumb_msg = 0; + photo_config_save(); + e_module_dialog_show(photo->module, _("Photo Module Information"), + _("Creating thumbs

" + "Some pictures are being thumbed in a background task.
" + "It can take a while, but after, loading will be faster :)

" + "Each time wou will load pictures that haven't been loaded in Photo module before,
" + "they will be thumbed")); + } + + /* when still thumbnailing after loading */ if ((photo->config->local.popup >= PICTURE_LOCAL_POPUP_SUM) && !pl->loader.idler) { - if (!evas_list_count(pl->thumb.pictures)) + if (!pl->thumb.nb) { /* Last thumbnailing popup message */ POPUP_THUMBNAILING(pl, "Thumbnailing finished :)", 2); @@ -665,20 +570,37 @@ _thumb_generate_cb(Evas_Object *obj, void *data) if (photo->config->local.popup == PICTURE_LOCAL_POPUP_ALWAYS) { /* thumbnailing popup message */ - if (!(evas_list_count(pl->thumb.pictures)%PICTURE_LOCAL_POPUP_THUMB_MOD)) + if (!(pl->thumb.nb%PICTURE_LOCAL_POPUP_THUMB_MOD)) { char buf[50]; snprintf(buf, sizeof(buf), "Still %d pictures to thumbnail", - evas_list_count(pl->thumb.pictures)); + pl->thumb.nb); POPUP_THUMBNAILING(pl, buf, 0); } } } } + /* refreshes */ + + if (!pl->thumb.nb && photo->config_dialog) + photo_config_dialog_refresh_local_load(); + if (pl->loader_ev.nb_clients) photo_picture_local_ev_raise(1); + + if (photo->config_dialog && + !(evas_list_count(pl->pictures)%100)) + photo_config_dialog_refresh_local_infos(); + + /* if the pic is loaded, remove it, we dont want it */ + + if (picture->picture) + { + evas_object_del(picture->picture); + picture->picture = NULL; + } } static void @@ -690,26 +612,25 @@ _thumb_generate_stop(void) pl = pictures_local; - if (pl->thumb.pictures) + if (pl->thumb.nb) { - for (l=pl->thumb.pictures; l; l=evas_list_next(l)) + for (l=pl->pictures; l; l=evas_list_next(l)) { picture = evas_list_data(l); - e_thumb_generate_end((char *)picture->path); + if (picture->thumb != PICTURE_THUMB_WAITING) + continue; + + e_thumb_icon_end(picture->picture); photo_picture_free(picture, 1, 1); } - evas_list_free(pl->thumb.pictures); + pl->thumb.nb = 0; } - pl->thumb.pictures = NULL; - if (pl->thumb.popup) { photo_popup_warn_del(pl->thumb.popup); pl->thumb.popup = NULL; } - - pl->thumb.popup_show = 1; } static int