diff --git a/configure.ac b/configure.ac index 34376c6..a1a95da 100644 --- a/configure.ac +++ b/configure.ac @@ -85,31 +85,6 @@ AC_SUBST(LTLIBINTL) PKG_CHECK_MODULES([ELEMENTARY], [elementary ecore-file ethumb_client]) PKG_CHECK_MODULES([EFREET_MIME], [efreet-mime]) -AC_ARG_ENABLE([libexif], - [AC_HELP_STRING([--enable-libexif], [enable libexif support @<:@default=yes@:>@])], - [ - if test "x${enableval}" = "xyes" ; then - _ephoto_enable_libexif="yes" - else - _ephoto_enable_libexif="no" - fi - ], - [_ephoto_enable_libexif="yes"] -) - -AC_MSG_RESULT([${_ephoto_enable_libexif}]) - -have_libexif="No" - -if test "x${_ephoto_enable_libexif}" = "xyes" ; then - PKG_CHECK_MODULES(EXIF, libexif, [ - have_libexif="Yes" - AC_DEFINE(HAVE_LIBEXIF, 1, [have libexif support]) - ],[ - have_libexif="No" - ]) -fi - want_quicklaunch="auto" AC_ARG_ENABLE([quicklaunch], [AC_HELP_STRING([--disable-quicklaunch], diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index 5718f60..df5ea41 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -1,12 +1,12 @@ MAINTAINERCLEANFILES = *.o config.h.in config.h Makefile.in Makefile stamp-h1 -INCLUDES = \ +AM_CPPFLAGS = \ -I$(top_srcdir) \ -I$(top_srcdir)/src/bin \ -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \ -DGETTEXT_PACKAGE=\"$(PACKAGE)\" \ -DLOCALEDIR=\"$(localedir)\" \ - @ELEMENTARY_CFLAGS@ @EFREET_MIME_CFLAGS@ @EXIF_CFLAGS@ + @ELEMENTARY_CFLAGS@ @EFREET_MIME_CFLAGS@ bin_PROGRAMS = ephoto if BUILD_QUICKLAUNCH @@ -22,7 +22,7 @@ _sources = \ ephoto_slideshow.c -_libs = @ELEMENTARY_LIBS@ @EFREET_MIME_LIBS@ @EXIF_LIBS@ +_libs = @ELEMENTARY_LIBS@ @EFREET_MIME_LIBS@ ephoto_SOURCES = $(_sources) ephoto_LDADD = $(_libs) diff --git a/src/bin/ephoto.h b/src/bin/ephoto.h index f0cf089..e0bc174 100644 --- a/src/bin/ephoto.h +++ b/src/bin/ephoto.h @@ -37,8 +37,6 @@ Evas_Object *ephoto_thumb_add(Ephoto *ephoto, Evas_Object *parent, const char *p void ephoto_thumb_path_set(Evas_Object *o, const char *path); void ephoto_directory_set(Ephoto *ephoto, const char *path); -Ephoto_Orient ephoto_file_orient_get(const char *path); - Eina_Bool ephoto_config_init(Ephoto *em); void ephoto_config_save(Ephoto *em); void ephoto_config_free(Ephoto *em); @@ -49,13 +47,13 @@ Evas_Object *ephoto_single_browser_add(Ephoto *ephoto, Evas_Object *parent); void ephoto_single_browser_entry_set(Evas_Object *obj, Ephoto_Entry *entry); void ephoto_single_browser_path_pending_set(Evas_Object *obj, const char *path); /* smart callbacks called: - * "back" - the user want to go back to the previous screen. + * "back" - the user wants to go back to the previous screen. */ Evas_Object *ephoto_slideshow_add(Ephoto *ephoto, Evas_Object *parent); void ephoto_slideshow_entry_set(Evas_Object *obj, Ephoto_Entry *entry); /* smart callbacks called: - * "back" - the user want to go back to the previous screen. + * "back" - the user wants to go back to the previous screen. */ Evas_Object *ephoto_thumb_browser_add(Ephoto *ephoto, Evas_Object *parent); diff --git a/src/bin/ephoto_main.c b/src/bin/ephoto_main.c index 48a65c1..10c1225 100644 --- a/src/bin/ephoto_main.c +++ b/src/bin/ephoto_main.c @@ -27,6 +27,7 @@ _ephoto_thumb_browser_show(Ephoto *ephoto, Ephoto_Entry *entry) ephoto_single_browser_entry_set(ephoto->single_browser, NULL); ephoto_slideshow_entry_set(ephoto->slideshow, NULL); elm_naviframe_item_simple_promote(ephoto->pager, ephoto->thumb_browser); + elm_object_focus_set(ephoto->thumb_browser, EINA_TRUE); _ephoto_state_set(ephoto, EPHOTO_STATE_THUMB); ephoto_title_set(ephoto, NULL); @@ -40,6 +41,7 @@ _ephoto_single_browser_show(Ephoto *ephoto, Ephoto_Entry *entry) DBG("entry '%s'", entry->path); ephoto_single_browser_entry_set(ephoto->single_browser, entry); elm_naviframe_item_simple_promote(ephoto->pager, ephoto->single_browser); + elm_object_focus_set(ephoto->single_browser, EINA_TRUE); _ephoto_state_set(ephoto, EPHOTO_STATE_SINGLE); } @@ -49,6 +51,7 @@ _ephoto_slideshow_show(Ephoto *ephoto, Ephoto_Entry *entry) DBG("entry '%s'", entry->path); ephoto_slideshow_entry_set(ephoto->slideshow, entry); elm_naviframe_item_simple_promote(ephoto->pager, ephoto->slideshow); + elm_object_focus_set(ephoto->slideshow, EINA_TRUE); _ephoto_state_set(ephoto, EPHOTO_STATE_SLIDESHOW); } @@ -179,6 +182,7 @@ ephoto_window_add(const char *path) evas_object_show(ephoto->bg); ephoto->pager = elm_naviframe_add(ephoto->win); + elm_naviframe_prev_btn_auto_pushed_set(ephoto->pager, EINA_FALSE); elm_object_style_set(ephoto->pager, "fade_invisible"); evas_object_size_hint_weight_set (ephoto->pager, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); diff --git a/src/bin/ephoto_single_browser.c b/src/bin/ephoto_single_browser.c index 0be9a81..619cacd 100644 --- a/src/bin/ephoto_single_browser.c +++ b/src/bin/ephoto_single_browser.c @@ -1,15 +1,5 @@ #include "ephoto.h" -#ifdef HAVE_LIBEXIF -#include -#endif - -/* ROTATION is disabled until we do it properly, and properly means - * elm_photocam and elm_image rotates their images internally. - * Rotating the scroller is not correct and was rejected by Raster and others. - */ -//#define ROTATION - #define ZOOM_STEP 0.2 typedef struct _Ephoto_Single_Browser Ephoto_Single_Browser; @@ -31,8 +21,8 @@ struct _Ephoto_Single_Browser struct _Ephoto_Viewer { - Evas_Object *photocam; Evas_Object *scroller; + Evas_Object *table; Evas_Object *image; double zoom; Eina_Bool fit:1; @@ -42,29 +32,6 @@ static void _zoom_set(Ephoto_Single_Browser *sb, double zoom); static void _zoom_in(Ephoto_Single_Browser *sb); static void _zoom_out(Ephoto_Single_Browser *sb); -static Eina_Bool -_path_is_jpeg(const char *path_stringshared) -{ - size_t len = eina_stringshare_strlen(path_stringshared); - const char *ext; - - if (len < sizeof(".jpg")) return EINA_FALSE; - ext = path_stringshared + len - (sizeof(".jpg") - 1); - if (strcasecmp(ext, ".jpg") == 0) return EINA_TRUE; - - if (len < sizeof(".jpeg")) return EINA_FALSE; - ext = path_stringshared + len - (sizeof(".jpeg") - 1); - if (strcasecmp(ext, ".jpeg") == 0) return EINA_TRUE; - - return EINA_FALSE; -} - -static void -_viewer_photocam_loaded(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) -{ - elm_photocam_paused_set(obj, EINA_FALSE); -} - static void _viewer_del(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { @@ -80,54 +47,50 @@ _viewer_add(Evas_Object *parent, const char *path) int err; EINA_SAFETY_ON_NULL_RETURN_VAL(v, NULL); - if (_path_is_jpeg(path)) + + Evas_Coord w, h; + const char *group = NULL; + const char *ext = strrchr(path, '.'); + if (ext) { - obj = v->photocam = elm_photocam_add(parent); - EINA_SAFETY_ON_NULL_GOTO(obj, error); - err = elm_photocam_file_set(obj, path); - if (err != EVAS_LOAD_ERROR_NONE) goto load_error; - elm_photocam_paused_set(obj, EINA_TRUE); - evas_object_smart_callback_add - (obj, "loaded", _viewer_photocam_loaded, v); - } - else - { - Evas_Coord w, h; - const char *group = NULL; - const char *ext = strrchr(path, '.'); - if (ext) + ext++; + if ((strcasecmp(ext, "edj") == 0)) { - ext++; - if ((strcasecmp(ext, "edj") == 0)) + if (edje_file_group_exists(path, "e/desktop/background")) + group = "e/desktop/background"; + else { - if (edje_file_group_exists(path, "e/desktop/background")) - group = "e/desktop/background"; - else - { - Eina_List *g = edje_file_collection_list(path); - group = eina_list_data_get(g); - edje_file_collection_list_free(g); - } + Eina_List *g = edje_file_collection_list(path); + group = eina_list_data_get(g); + edje_file_collection_list_free(g); } - } - obj = v->scroller = elm_scroller_add(parent); - EINA_SAFETY_ON_NULL_GOTO(obj, error); - v->image = elm_image_add(parent); - elm_image_file_set(v->image, path, group); - err = evas_object_image_load_error_get(elm_image_object_get(v->image)); - if (err != EVAS_LOAD_ERROR_NONE) goto load_error; - elm_image_object_size_get(v->image, &w, &h); - evas_object_size_hint_align_set(v->image, 0.5, 0.5); - evas_object_size_hint_min_set(v->image, w, h); - evas_object_size_hint_max_set(v->image, w, h); - elm_object_content_set(v->scroller, v->image); - evas_object_show(v->scroller); - evas_object_show(v->image); - } + } + } + obj = v->scroller = elm_scroller_add(parent); + EINA_SAFETY_ON_NULL_GOTO(obj, error); evas_object_size_hint_weight_set(obj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(obj, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_data_set(obj, "viewer", v); evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, _viewer_del, v); + evas_object_show(obj); + + v->table = elm_table_add(v->scroller); + evas_object_size_hint_weight_set(v->table, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(v->table, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_object_content_set(v->scroller, v->table); + evas_object_show(v->table); + + v->image = elm_image_add(v->table); + elm_image_preload_disabled_set(v->image, EINA_FALSE); + elm_image_file_set(v->image, path, group); + err = evas_object_image_load_error_get(elm_image_object_get(v->image)); + if (err != EVAS_LOAD_ERROR_NONE) goto load_error; + elm_image_object_size_get(v->image, &w, &h); + evas_object_size_hint_min_set(v->image, w, h); + evas_object_size_hint_max_set(v->image, w, h); + elm_table_pack(v->table, v->image, 0, 0, 1, 1); + evas_object_show(v->image); + return obj; load_error: @@ -142,16 +105,13 @@ static void _viewer_zoom_apply(Ephoto_Viewer *v, double zoom) { v->zoom = zoom; - if (v->photocam) elm_photocam_zoom_set(v->photocam, 1.0 / zoom); - else - { - Evas_Coord w, h; - evas_object_image_size_get(elm_image_object_get(v->image), &w, &h); - w *= zoom; - h *= zoom; - evas_object_size_hint_min_set(v->image, w, h); - evas_object_size_hint_max_set(v->image, w, h); - } + + Evas_Coord w, h; + evas_object_image_size_get(elm_image_object_get(v->image), &w, &h); + w *= zoom; + h *= zoom; + evas_object_size_hint_min_set(v->image, w, h); + evas_object_size_hint_max_set(v->image, w, h); } static void @@ -160,16 +120,8 @@ _viewer_zoom_fit_apply(Ephoto_Viewer *v) Evas_Coord cw, ch, iw, ih; double zx, zy, zoom; - if (v->photocam) - { - evas_object_geometry_get(v->photocam, NULL, NULL, &cw, &ch); - elm_photocam_image_size_get(v->photocam, &iw, &ih); - } - else - { - evas_object_geometry_get(v->scroller, NULL, NULL, &cw, &ch); - evas_object_image_size_get(elm_image_object_get(v->image), &iw, &ih); - } + evas_object_geometry_get(v->scroller, NULL, NULL, &cw, &ch); + evas_object_image_size_get(elm_image_object_get(v->image), &iw, &ih); if ((cw <= 0) || (ch <= 0)) return; /* object still not resized */ EINA_SAFETY_ON_TRUE_RETURN(iw <= 0); @@ -197,12 +149,8 @@ _viewer_zoom_set(Evas_Object *obj, double zoom) if (v->fit) { - if (v->photocam) - evas_object_event_callback_del_full - (v->photocam, EVAS_CALLBACK_RESIZE, _viewer_resized, v); - else - evas_object_event_callback_del_full - (v->scroller, EVAS_CALLBACK_RESIZE, _viewer_resized, v); + evas_object_event_callback_del_full + (v->scroller, EVAS_CALLBACK_RESIZE, _viewer_resized, v); v->fit = EINA_FALSE; } } @@ -224,12 +172,8 @@ _viewer_zoom_fit(Evas_Object *obj) if (v->fit) return; v->fit = EINA_TRUE; - if (v->photocam) - evas_object_event_callback_add - (v->photocam, EVAS_CALLBACK_RESIZE, _viewer_resized, v); - else - evas_object_event_callback_add - (v->scroller, EVAS_CALLBACK_RESIZE, _viewer_resized, v); + evas_object_event_callback_add + (v->scroller, EVAS_CALLBACK_RESIZE, _viewer_resized, v); _viewer_zoom_fit_apply(v); } @@ -237,177 +181,78 @@ _viewer_zoom_fit(Evas_Object *obj) static void _orient_apply(Ephoto_Single_Browser *sb) { -#ifdef ROTATION - const char *sig; + Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer"); + int w, h; + EINA_SAFETY_ON_NULL_RETURN(v); + + elm_table_unpack(v->table, v->image); switch (sb->orient) { case EPHOTO_ORIENT_0: - sig = "state,rotate,0"; break; case EPHOTO_ORIENT_90: - sig = "state,rotate,90"; + elm_image_orient_set(v->image, ELM_IMAGE_ROTATE_90); break; case EPHOTO_ORIENT_180: - sig = "state,rotate,180"; + elm_image_orient_set(v->image, ELM_IMAGE_ROTATE_180); break; case EPHOTO_ORIENT_270: - sig = "state,rotate,270"; + elm_image_orient_set(v->image, ELM_IMAGE_ROTATE_270); break; case EPHOTO_ORIENT_FLIP_HORIZ: - sig = "state,flip,horiz"; + elm_image_orient_set(v->image, ELM_IMAGE_FLIP_HORIZONTAL); break; case EPHOTO_ORIENT_FLIP_VERT: - sig = "state,flip,vert"; + elm_image_orient_set(v->image, ELM_IMAGE_FLIP_VERTICAL); break; case EPHOTO_ORIENT_FLIP_HORIZ_90: - sig = "state,flip,horiz,90"; + elm_image_orient_set(v->image, ELM_IMAGE_FLIP_TRANSPOSE); break; case EPHOTO_ORIENT_FLIP_VERT_90: - sig = "state,flip,vert,90"; + elm_image_orient_set(v->image, ELM_IMAGE_FLIP_TRANSVERSE); break; default: return; } - DBG("orient: %d, signal '%s'", sb->orient, sig); - edje_object_signal_emit(sb->orient_edje, sig, "ephoto"); -#else - (void)sb; -#endif + elm_image_object_size_get(v->image, &w, &h); + evas_object_size_hint_min_set(v->image, w, h); + evas_object_size_hint_max_set(v->image, w, h); + elm_table_pack(v->table, v->image, 0, 0, 1, 1); + if (v->fit) + _viewer_zoom_fit_apply(v); + else + _viewer_zoom_set(sb->viewer, _viewer_zoom_get(sb->viewer)); + DBG("orient: %d", sb->orient); } -#ifdef ROTATION static void _rotate_counterclock(Ephoto_Single_Browser *sb) { - switch (sb->orient) - { - case EPHOTO_ORIENT_0: - sb->orient = EPHOTO_ORIENT_270; - break; - case EPHOTO_ORIENT_90: - sb->orient = EPHOTO_ORIENT_0; - break; - case EPHOTO_ORIENT_180: - sb->orient = EPHOTO_ORIENT_90; - break; - case EPHOTO_ORIENT_270: - sb->orient = EPHOTO_ORIENT_180; - break; - case EPHOTO_ORIENT_FLIP_HORIZ: - sb->orient = EPHOTO_ORIENT_FLIP_HORIZ_90; - break; - case EPHOTO_ORIENT_FLIP_VERT: - sb->orient = EPHOTO_ORIENT_FLIP_VERT_90; - break; - case EPHOTO_ORIENT_FLIP_HORIZ_90: - sb->orient = EPHOTO_ORIENT_FLIP_VERT; - break; - case EPHOTO_ORIENT_FLIP_VERT_90: - sb->orient = EPHOTO_ORIENT_FLIP_HORIZ; - break; - } + sb->orient = EPHOTO_ORIENT_270; _orient_apply(sb); } static void _rotate_clock(Ephoto_Single_Browser *sb) { - switch (sb->orient) - { - case EPHOTO_ORIENT_0: - sb->orient = EPHOTO_ORIENT_90; - break; - case EPHOTO_ORIENT_90: - sb->orient = EPHOTO_ORIENT_180; - break; - case EPHOTO_ORIENT_180: - sb->orient = EPHOTO_ORIENT_270; - break; - case EPHOTO_ORIENT_270: - sb->orient = EPHOTO_ORIENT_0; - break; - case EPHOTO_ORIENT_FLIP_HORIZ: - sb->orient = EPHOTO_ORIENT_FLIP_VERT_90; - break; - case EPHOTO_ORIENT_FLIP_VERT: - sb->orient = EPHOTO_ORIENT_FLIP_HORIZ_90; - break; - case EPHOTO_ORIENT_FLIP_HORIZ_90: - sb->orient = EPHOTO_ORIENT_FLIP_HORIZ; - break; - case EPHOTO_ORIENT_FLIP_VERT_90: - sb->orient = EPHOTO_ORIENT_FLIP_VERT; - break; - } + sb->orient = EPHOTO_ORIENT_90; _orient_apply(sb); } static void _flip_horiz(Ephoto_Single_Browser *sb) { - switch (sb->orient) - { - case EPHOTO_ORIENT_0: - sb->orient = EPHOTO_ORIENT_FLIP_HORIZ; - break; - case EPHOTO_ORIENT_90: - sb->orient = EPHOTO_ORIENT_FLIP_HORIZ_90; - break; - case EPHOTO_ORIENT_180: - sb->orient = EPHOTO_ORIENT_FLIP_VERT; - break; - case EPHOTO_ORIENT_270: - sb->orient = EPHOTO_ORIENT_FLIP_VERT_90; - break; - case EPHOTO_ORIENT_FLIP_HORIZ: - sb->orient = EPHOTO_ORIENT_0; - break; - case EPHOTO_ORIENT_FLIP_VERT: - sb->orient = EPHOTO_ORIENT_180; - break; - case EPHOTO_ORIENT_FLIP_HORIZ_90: - sb->orient = EPHOTO_ORIENT_90; - break; - case EPHOTO_ORIENT_FLIP_VERT_90: - sb->orient = EPHOTO_ORIENT_270; - break; - } + + sb->orient = EPHOTO_ORIENT_FLIP_HORIZ; _orient_apply(sb); } static void _flip_vert(Ephoto_Single_Browser *sb) { - switch (sb->orient) - { - case EPHOTO_ORIENT_0: - sb->orient = EPHOTO_ORIENT_FLIP_VERT; - break; - case EPHOTO_ORIENT_90: - sb->orient = EPHOTO_ORIENT_FLIP_VERT_90; - break; - case EPHOTO_ORIENT_180: - sb->orient = EPHOTO_ORIENT_FLIP_HORIZ; - break; - case EPHOTO_ORIENT_270: - sb->orient = EPHOTO_ORIENT_FLIP_HORIZ_90; - break; - case EPHOTO_ORIENT_FLIP_HORIZ: - sb->orient = EPHOTO_ORIENT_180; - break; - case EPHOTO_ORIENT_FLIP_VERT: - sb->orient = EPHOTO_ORIENT_0; - break; - case EPHOTO_ORIENT_FLIP_HORIZ_90: - sb->orient = EPHOTO_ORIENT_270; - break; - case EPHOTO_ORIENT_FLIP_VERT_90: - sb->orient = EPHOTO_ORIENT_90; - break; - } + sb->orient = EPHOTO_ORIENT_FLIP_VERT; _orient_apply(sb); } -#endif static void _mouse_wheel(void *data, Evas *e __UNUSED__, Evas_Object *o __UNUSED__, void *event_info) @@ -435,40 +280,6 @@ _last_entry_find(Ephoto_Single_Browser *sb) return eina_list_last_data_get(sb->ephoto->entries); } -Ephoto_Orient -ephoto_file_orient_get(const char *path) -{ -#ifndef HAVE_LIBEXIF - (void) path; - return EPHOTO_ORIENT_0; -#else - Ephoto_Orient orient = EPHOTO_ORIENT_0; - ExifData *exif; - ExifEntry *entry; - ExifByteOrder bo; - - if (!_path_is_jpeg(path)) return orient; - - exif = exif_data_new_from_file(path); - if (!exif) goto end; - bo = exif_data_get_byte_order(exif); - entry = exif_data_get_entry(exif, EXIF_TAG_ORIENTATION); - if (!entry) goto end_entry; - - orient = exif_get_short(entry->data, bo); - DBG("orient=%d", orient); - if ((orient < 1) || (orient > 8)) - { - ERR("exif orient not supported: %d", orient); - orient = EPHOTO_ORIENT_0; - } - - end_entry: - exif_data_free(exif); - end: - return orient; -#endif -} static void _ephoto_single_browser_recalc(Ephoto_Single_Browser *sb) @@ -491,8 +302,6 @@ _ephoto_single_browser_recalc(Ephoto_Single_Browser *sb) evas_object_event_callback_add (sb->viewer, EVAS_CALLBACK_MOUSE_WHEEL, _mouse_wheel, sb); ephoto_title_set(sb->ephoto, bname); - sb->orient = ephoto_file_orient_get(sb->entry->path); - _orient_apply(sb); elm_table_pack(sb->table, sb->panel, 0, 0, 1, 1); } @@ -642,7 +451,6 @@ _go_last(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__) _last_entry(sb); } -#ifdef ROTATION static void _go_rotate_counterclock(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__) { @@ -670,7 +478,6 @@ _go_flip_vert(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__ Ephoto_Single_Browser *sb = data; _flip_vert(sb); } -#endif static void _slideshow(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__) @@ -732,15 +539,14 @@ _key_down(void *data, Evas *e __UNUSED__, Evas_Object *o __UNUSED__, void *event if (!strcmp(k, "Escape")) evas_object_smart_callback_call(sb->main, "back", sb->entry); - else if (!strcmp(k, "Left") || !strcmp(k, "BackSpace")) + else if (!strcmp(k, "Left")) _prev_entry(sb); - else if (!strcmp(k, "Right") || !strcmp(k, "space")) + else if (!strcmp(k, "Right")) _next_entry(sb); else if (!strcmp(k, "Home")) _first_entry(sb); else if (!strcmp(k, "End")) _last_entry(sb); -#if ROTATION else if (!strcmp(k, "bracketleft")) { if (!shift) _rotate_counterclock(sb); @@ -751,12 +557,16 @@ _key_down(void *data, Evas *e __UNUSED__, Evas_Object *o __UNUSED__, void *event if (!shift) _rotate_clock(sb); else _flip_vert(sb); } -#endif else if (!strcmp(k, "F5")) { if (sb->entry) evas_object_smart_callback_call(sb->main, "slideshow", sb->entry); } + else if (!strcmp(k, "F11")) + { + Evas_Object *win = sb->ephoto->win; + elm_win_fullscreen_set(win, !elm_win_fullscreen_get(win)); + } } static void @@ -896,12 +706,26 @@ ephoto_single_browser_add(Ephoto *ephoto, Evas_Object *parent) elm_toolbar_item_separator_set(elm_toolbar_item_append(sb->bar, NULL, NULL, NULL, NULL), EINA_TRUE); - icon = elm_toolbar_item_append(sb->bar, "emblem-system", "Settings", _settings, sb); + icon = elm_toolbar_item_append(sb->bar, "object-rotate-left", "Rotate Left", _go_rotate_counterclock, sb); elm_toolbar_item_priority_set(icon, 50); - icon = elm_toolbar_item_append(sb->bar, "stock_about", "About", _about, sb); + icon = elm_toolbar_item_append(sb->bar, "object-rotate-right", "Rotate Right", _go_rotate_clock, sb); elm_toolbar_item_priority_set(icon, 40); + icon = elm_toolbar_item_append(sb->bar, "object-flip-horizontal", "Flip Horizontal", _go_flip_horiz, sb); + elm_toolbar_item_priority_set(icon, 30); + + icon = elm_toolbar_item_append(sb->bar, "object-flip-vertical", "Flip Vertical", _go_flip_vert, sb); + elm_toolbar_item_priority_set(icon, 20); + + elm_toolbar_item_separator_set(elm_toolbar_item_append(sb->bar, NULL, NULL, NULL, NULL), EINA_TRUE); + + icon = elm_toolbar_item_append(sb->bar, "emblem-system", "Settings", _settings, sb); + elm_toolbar_item_priority_set(icon, 10); + + icon = elm_toolbar_item_append(sb->bar, "stock_about", "About", _about, sb); + elm_toolbar_item_priority_set(icon, 0); + elm_object_content_set(sb->panel, sb->bar); evas_object_show(sb->bar); diff --git a/src/bin/ephoto_slideshow.c b/src/bin/ephoto_slideshow.c index 6b32f6d..2c48d71 100644 --- a/src/bin/ephoto_slideshow.c +++ b/src/bin/ephoto_slideshow.c @@ -93,53 +93,11 @@ ephoto_slideshow_add(Ephoto *ephoto, Evas_Object *parent) return NULL; } -static void -_image_resized(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *image, void *event_info __UNUSED__) -{ - Evas_Map *map = evas_map_new(4); - Evas_Coord cx, cy, x, y, w, h; - int orient = (long)evas_object_data_get(image, "orient"); - - evas_object_geometry_get(image, &x, &y, &w, &h); - evas_map_util_points_populate_from_geometry(map, x, y, w, h, 0); - cx = x + w / 2; - cy = y + h / 2; - - switch (orient) - { - case EPHOTO_ORIENT_0: - break; - case EPHOTO_ORIENT_90: - evas_map_util_rotate(map, 90.0, cx, cy); - evas_object_map_enable_set(image, EINA_TRUE); - evas_object_map_set(image, map); - printf("rotated 90 around %d,%d (%dx%d)\n", cx, cy, w, h); - break; - case EPHOTO_ORIENT_180: - evas_map_util_rotate(map, 180.0, cx, cy); - evas_object_map_enable_set(image, EINA_TRUE); - evas_object_map_set(image, map); - printf("rotated 180 around %d,%d (%d,%d %dx%d)\n", cx, cy, x, y, w, h); - break; - case EPHOTO_ORIENT_270: - evas_map_util_rotate(map, 270.0, cx, cy); - evas_object_map_enable_set(image, EINA_TRUE); - evas_object_map_set(image, map); - printf("rotated 270 around %d,%d (%dx%d)\n", cx, cy, w, h); - break; - default: - ERR("unknown orient %d", orient); - } - - evas_map_free(map); -} - static Evas_Object * _slideshow_item_get(void *data, Evas_Object *obj) { Ephoto_Entry *entry = data; - /* TODO use viewer from ephoto_single_browser.c */ - /* TODO consider using exif rotation, see ephoto_single_browser.c */ + const char *group = NULL; const char *ext = strrchr(entry->path, '.'); if (ext) @@ -161,11 +119,6 @@ _slideshow_item_get(void *data, Evas_Object *obj) elm_image_file_set(image, entry->path, group); elm_object_style_set(image, "shadow"); - evas_object_data_set - (image, "orient", (void*)(long)ephoto_file_orient_get(entry->path)); - evas_object_event_callback_add - (image, EVAS_CALLBACK_RESIZE, _image_resized, NULL); - return image; } @@ -198,7 +151,7 @@ ephoto_slideshow_entry_set(Evas_Object *obj, Ephoto_Entry *entry) elm_slideshow_clear(ss->slideshow); if (!entry) return; - elm_win_fullscreen_set(ss->ephoto->win, EINA_TRUE); + //elm_win_fullscreen_set(ss->ephoto->win, EINA_TRUE); EINA_LIST_FOREACH(ss->ephoto->entries, l, itr) { Elm_Object_Item *slideshow_item; diff --git a/src/bin/ephoto_thumb_browser.c b/src/bin/ephoto_thumb_browser.c index 1741162..204cd98 100644 --- a/src/bin/ephoto_thumb_browser.c +++ b/src/bin/ephoto_thumb_browser.c @@ -268,36 +268,23 @@ _key_down(void *data, Evas *e __UNUSED__, Evas_Object *o __UNUSED__, void *event { Ephoto_Thumb_Browser *tb = data; Evas_Event_Key_Down *ev = event_info; - Eina_Bool alt = evas_key_modifier_is_set(ev->modifiers, "Alt"); const char *k = ev->keyname; - if (alt) - { - if (!strcmp(k, "Up")) - { - if (strcmp(tb->ephoto->config->directory, "/")) - { - char *parent = ecore_file_dir_get - (tb->ephoto->config->directory); - if (parent) - ephoto_directory_set(tb->ephoto, parent); - free(parent); - } - } - - return; - } - if (!strcmp(k, "F5")) { Elm_Object_Item *it = elm_gengrid_selected_item_get(tb->grid); Ephoto_Entry *entry; if (it) entry = elm_object_item_data_get(it); - else entry = eina_list_nth(tb->grid_items, 0); + else entry = eina_list_nth(tb->ephoto->entries, 0); if (entry) evas_object_smart_callback_call(tb->main, "slideshow", entry); } + else if (!strcmp(k, "F11")) + { + Evas_Object *win = tb->ephoto->win; + elm_win_fullscreen_set(win, !elm_win_fullscreen_get(win)); + } }