diff --git a/data/themes/default/ephoto.edc b/data/themes/default/ephoto.edc index 62b369c..8a032a8 100644 --- a/data/themes/default/ephoto.edc +++ b/data/themes/default/ephoto.edc @@ -1072,28 +1072,24 @@ collections signal: "state,rotate,0"; source: "ephoto"; action: STATE_SET "rotate_0" 0.0; - transition: SINUSOIDAL 0.2; target: "ephoto.swallow.flow"; } program { signal: "state,rotate,90"; source: "ephoto"; action: STATE_SET "rotate_90" 0.0; - transition: SINUSOIDAL 0.2; target: "ephoto.swallow.flow"; } program { signal: "state,rotate,180"; source: "ephoto"; action: STATE_SET "rotate_180" 0.0; - transition: SINUSOIDAL 0.2; target: "ephoto.swallow.flow"; } program { signal: "state,rotate,270"; source: "ephoto"; action: STATE_SET "rotate_270" 0.0; - transition: SINUSOIDAL 0.2; target: "ephoto.swallow.flow"; } } diff --git a/src/bin/ephoto_flow_browser.c b/src/bin/ephoto_flow_browser.c index 44d4a9d..d4049ec 100644 --- a/src/bin/ephoto_flow_browser.c +++ b/src/bin/ephoto_flow_browser.c @@ -19,6 +19,7 @@ struct _Ephoto_Flow_Browser Evas_Object *viewer; const char *path; Ephoto_Entry *entry; + Ephoto_Orient orient; double zoom; }; @@ -120,6 +121,72 @@ _viewer_zoom_set(Evas_Object *obj, float zoom) } } +static void +_rotation_apply(Ephoto_Flow_Browser *fb) +{ + const char *signal; + switch (fb->orient) + { + case EPHOTO_ORIENT_0: + signal = "state,rotate,0"; + break; + case EPHOTO_ORIENT_90: + signal = "state,rotate,90"; + break; + case EPHOTO_ORIENT_180: + signal = "state,rotate,180"; + break; + case EPHOTO_ORIENT_270: + signal = "state,rotate,270"; + break; + default: + return; + } + edje_object_signal_emit(fb->edje, signal, "ephoto"); +} + +static void +_rotate_counterclock(Ephoto_Flow_Browser *fb) +{ + switch (fb->orient) + { + case EPHOTO_ORIENT_0: + fb->orient = EPHOTO_ORIENT_270; + break; + case EPHOTO_ORIENT_90: + fb->orient = EPHOTO_ORIENT_0; + break; + case EPHOTO_ORIENT_180: + fb->orient = EPHOTO_ORIENT_90; + break; + case EPHOTO_ORIENT_270: + fb->orient = EPHOTO_ORIENT_180; + break; + } + _rotation_apply(fb); +} + +static void +_rotate_clock(Ephoto_Flow_Browser *fb) +{ + switch (fb->orient) + { + case EPHOTO_ORIENT_0: + fb->orient = EPHOTO_ORIENT_90; + break; + case EPHOTO_ORIENT_90: + fb->orient = EPHOTO_ORIENT_180; + break; + case EPHOTO_ORIENT_180: + fb->orient = EPHOTO_ORIENT_270; + break; + case EPHOTO_ORIENT_270: + fb->orient = EPHOTO_ORIENT_0; + break; + } + _rotation_apply(fb); +} + static void _mouse_wheel(void *data, Evas *e, Evas_Object *o, void *event_info) { @@ -180,6 +247,50 @@ _ephoto_flow_browser_toolbar_eval(Ephoto_Flow_Browser *fb) } } +static Ephoto_Orient +_file_rotation_get(const char *path) +{ +#ifndef HAVE_LIBEXIF + 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); + EINA_SAFETY_ON_NULL_GOTO(exif, end); + bo = exif_data_get_byte_order(exif); + entry = exif_data_get_entry(exif, EXIF_TAG_ORIENTATION); + EINA_SAFETY_ON_NULL_GOTO(entry, end_entry); + + switch (exif_get_short(entry->data, bo)) + { + case 0: + orient = EPHOTO_ORIENT_0; + break; + case 3: + orient = EPHOTO_ORIENT_180; + break; + case 6: + orient = EPHOTO_ORIENT_90; + break; + case 8: + orient = EPHOTO_ORIENT_270; + break; + default: + ERR("exif rotation not supported: %d", orient); + } + + end_entry: + exif_data_free(exif); + end: + return orient; +#endif +} + static void _ephoto_flow_browser_recalc(Ephoto_Flow_Browser *fb) { @@ -198,6 +309,8 @@ _ephoto_flow_browser_recalc(Ephoto_Flow_Browser *fb) (fb->viewer, EVAS_CALLBACK_MOUSE_WHEEL, _mouse_wheel, fb); edje_object_part_text_set(fb->edje, "ephoto.text.title", bname); ephoto_title_set(fb->ephoto, bname); + fb->orient = _file_rotation_get(fb->path); + _rotation_apply(fb); } _ephoto_flow_browser_toolbar_eval(fb); @@ -343,6 +456,10 @@ _key_down(void *data, Evas *e, Evas_Object *o, void *event_info) _first_entry(fb); else if (!strcmp(k, "End")) _last_entry(fb); + else if (!strcmp(k, "bracketleft")) + _rotate_counterclock(fb); + else if (!strcmp(k, "bracketright")) + _rotate_clock(fb); } static void @@ -428,532 +545,3 @@ ephoto_flow_browser_entry_set(Evas_Object *obj, Ephoto_Entry *entry) _ephoto_flow_browser_recalc(fb); } } - - -#if 0 - -/*Callbacks*/ -static void _ephoto_go_back(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_go_first(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_go_last(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_go_next(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_go_previous(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_go_slideshow(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_go_rotate_counterclockwise(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_go_rotate_clockwise(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_go_editor(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_key_pressed(void *data, Evas *e, Evas_Object *obj, void *event_info); -static void _ephoto_mouse_wheel(void *data, Evas *e, Evas_Object *obj, void *event_info); -static void _ephoto_flow_browser_show_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); -static void _ephoto_flow_browser_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); -static void _ephoto_zoom_in(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_zoom_out(void *data, Evas_Object *obj, void *event_info); -static void _ephoto_zoom_regular_size(void *data, Evas_Object *obj, void *event_info); - -typedef struct _Ephoto_Flow_Browser Ephoto_Flow_Browser; - -struct _Ephoto_Flow_Browser -{ - Evas_Object *flow_browser; - Eina_List *iter; - Evas_Object *image; - Evas_Object *image2; - Evas_Object *toolbar; - const char *cur_image; - - Ephoto_Orient orient; -}; - -static const char *toolbar_items[] = { - "First", - "Previous", - "Next", - "Last", - "Slideshow", - "Rotate CW", - "Rotate CCW", - "Zoom In", - "Zoom Out" -}; - -static void -_ephoto_set_title(const char *file) -{ - char *buffer; - int length; - - length = strlen(file) + strlen("Ephoto - ") + 1; - buffer = alloca(length); - snprintf(buffer, length, "Ephoto - %s", file); - elm_win_title_set(em->win, buffer); -} - -static void -_photocal_loaded_cb(void *data, Evas_Object *obj, void *event) -{ - Ephoto_Flow_Browser *ef = data; - printf("Load\n"); - elm_photocam_paused_set(ef->image, EINA_FALSE); -} - -static void -_ephoto_go_update(Ephoto_Flow_Browser *ef) -{ - const char *file_type; - int success = 0; - - elm_layout_content_unset(ef->flow_browser, "ephoto.flow.swallow"); - - evas_object_hide(ef->image); - evas_object_hide(ef->image2); - - file_type = efreet_mime_type_get(ef->cur_image); - if (file_type && !strcmp(file_type, "image/jpeg")) - { - success = elm_photocam_file_set(ef->image, ef->cur_image) == EVAS_LOAD_ERROR_NONE; - elm_photocam_zoom_mode_set(ef->image, ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT); - evas_object_smart_callback_add(ef->image, "loaded", _photocal_loaded_cb, ef); - elm_photocam_paused_set(ef->image, EINA_TRUE); - elm_layout_content_set(ef->flow_browser, "ephoto.flow.swallow", ef->image); - - evas_object_show(ef->image); - evas_object_hide(ef->image2); - -#ifdef HAVE_LIBEXIF - int orientation = 0; - - ExifData *exif = exif_data_new_from_file(ef->cur_image); - ExifEntry *entry = NULL; - ExifByteOrder bo; - - if (exif) - { - entry = exif_data_get_entry(exif, EXIF_TAG_ORIENTATION); - if (entry) - { - bo = exif_data_get_byte_order(exif); - orientation = exif_get_short(entry->data, bo); - } - exif_data_free(exif); - } - - if (orientation > 1 && orientation < 9) - { - Evas_Object *o = elm_layout_edje_get(ef->flow_browser); - - switch (orientation) - { - case 2: /* Horizontal flip */ - break; - case 3: /* Rotate 180 clockwise */ - ef->orient = EPHOTO_ORIENT_180; - edje_object_signal_emit(o, "ef,state,rotate,180", "ef"); - break; - case 4: /* Vertical flip */ - break; - case 5: /* Transpose */ - break; - case 6: /* Rotate 90 clockwise */ - ef->orient = EPHOTO_ORIENT_90; - edje_object_signal_emit(o, "ef,state,rotate,90", "ef"); - break; - case 7: /* Transverse */ - break; - case 8: /* Rotate 90 counter-clockwise */ - ef->orient = EPHOTO_ORIENT_270; - edje_object_signal_emit(o, "ef,state,rotate,270", "ef"); - break; - } - } -#endif - } else { - success = elm_image_file_set(ef->image2, ef->cur_image, NULL); - elm_layout_content_set(ef->flow_browser, "ephoto.flow.swallow", ef->image2); - evas_object_show(ef->image2); - evas_object_hide(ef->image); - } - - if (success) - _ephoto_set_title(ef->cur_image); - - elm_toolbar_item_unselect_all(ef->toolbar); -} - -/*Create the flow browser*/ -Evas_Object * -ephoto_create_flow_browser(Evas_Object *parent) -{ - Evas_Object *o; - Ephoto_Flow_Browser *ef; - - ef = calloc(1, sizeof(Ephoto_Flow_Browser)); - - ef->flow_browser = elm_layout_add(parent); - elm_layout_file_set(ef->flow_browser, - PACKAGE_DATA_DIR "/themes/default/ephoto.edj", - "ephoto/flow/layout"); - //elm_win_resize_object_add(em->win, em->flow_browser); - evas_object_size_hint_weight_set(ef->flow_browser, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(ef->flow_browser, EVAS_HINT_FILL, EVAS_HINT_FILL); - - ef->image = elm_photocam_add(ef->flow_browser); - evas_object_size_hint_weight_set(ef->image, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(ef->image, EVAS_HINT_FILL, EVAS_HINT_FILL); - - ef->image2 = elm_image_add(ef->flow_browser); - elm_image_smooth_set(ef->image2, EINA_TRUE); - evas_object_size_hint_weight_set(ef->image2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(ef->image2, EVAS_HINT_FILL, EVAS_HINT_FILL); - - ef->toolbar = elm_toolbar_add(ef->flow_browser); - elm_toolbar_icon_size_set(ef->toolbar, 24); - elm_toolbar_homogenous_set(ef->toolbar, EINA_TRUE); - elm_toolbar_scrollable_set(ef->toolbar, EINA_FALSE); - evas_object_size_hint_weight_set(ef->toolbar, EVAS_HINT_EXPAND, 0.0); - evas_object_size_hint_align_set(ef->toolbar, EVAS_HINT_FILL, 0.5); - elm_layout_content_set(ef->flow_browser, "ephoto.toolbar.swallow", ef->toolbar); - evas_object_show(ef->toolbar); - - o = elm_icon_add(ef->toolbar); - elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/go_back.png", NULL); - elm_toolbar_item_add(ef->toolbar, o, "Go Back", _ephoto_go_back, ef); - - o = elm_icon_add(ef->toolbar); - elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/first.png", NULL); - elm_toolbar_item_add(ef->toolbar, o, "First", _ephoto_go_first, ef); - - o = elm_icon_add(ef->toolbar); - elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/previous.png", NULL); - elm_toolbar_item_add(ef->toolbar, o, "Previous", _ephoto_go_previous, ef); - - o = elm_icon_add(ef->toolbar); - elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/next.png", NULL); - elm_toolbar_item_add(ef->toolbar, o, "Next", _ephoto_go_next, ef); - - o = elm_icon_add(ef->toolbar); - elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/last.png", NULL); - elm_toolbar_item_add(ef->toolbar, o, "Last", _ephoto_go_last, ef); - - o = elm_icon_add(ef->toolbar); - elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/play_slideshow.png", NULL); - elm_toolbar_item_add(ef->toolbar, o, "Slideshow", _ephoto_go_slideshow, ef); - - o = elm_icon_add(ef->toolbar); - elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/play_slideshow.png", NULL); - elm_toolbar_item_add(ef->toolbar, o, "RotateCW", _ephoto_go_rotate_clockwise, ef); - - o = elm_icon_add(ef->toolbar); - elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/play_slideshow.png", NULL); - elm_toolbar_item_add(ef->toolbar, o, "RotateCCW", _ephoto_go_rotate_counterclockwise, ef); - - o = elm_icon_add(ef->toolbar); - elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/play_slideshow.png", NULL); - elm_toolbar_item_add(ef->toolbar, o, "Zoom In", _ephoto_zoom_in, ef); - - o = elm_icon_add(ef->toolbar); - elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/play_slideshow.png", NULL); - elm_toolbar_item_add(ef->toolbar, o, "Zoom Out", _ephoto_zoom_out, ef); - - evas_object_event_callback_add(ef->flow_browser, EVAS_CALLBACK_SHOW, - _ephoto_flow_browser_show_cb, ef); - evas_object_event_callback_add(ef->flow_browser, EVAS_CALLBACK_DEL, - _ephoto_flow_browser_del_cb, ef); - evas_object_data_set(ef->flow_browser, "flow_browser", ef); - - return ef->flow_browser; -} - -/*Show the flow browser*/ - -void -ephoto_flow_browser_image_set(Evas_Object *obj, const char *current_image) -{ - Ephoto_Flow_Browser *ef; - Elm_Toolbar_Item *o; - unsigned int i; - - ef = evas_object_data_get(obj, "flow_browser"); - - if (current_image) - { - ef->cur_image = current_image; - - evas_object_event_callback_add(ef->flow_browser, EVAS_CALLBACK_KEY_DOWN, - _ephoto_key_pressed, ef); - evas_object_event_callback_add(ef->flow_browser, EVAS_CALLBACK_MOUSE_WHEEL, - _ephoto_mouse_wheel, ef); - - // TODO: ef->iter = eina_list_data_find_list(em->images, current_image); - for (i = 0; i < (sizeof (toolbar_items) / sizeof (char*)); ++i) - { - o = elm_toolbar_item_find_by_label(ef->toolbar, toolbar_items[i]); - elm_toolbar_item_disabled_set(o, !ef->iter ? EINA_TRUE : EINA_FALSE); - } - - DBG("iter: %p", ef->iter); - - _ephoto_go_update(ef); - } - else - { - for (i = 0; i < (sizeof (toolbar_items) / sizeof (char*)); ++i) - { - o = elm_toolbar_item_find_by_label(ef->toolbar, toolbar_items[i]); - elm_toolbar_item_disabled_set(o, EINA_TRUE); - } - } - evas_object_show(ef->toolbar); - evas_object_show(ef->flow_browser); - evas_object_focus_set(ef->flow_browser, 1); -} - -static void -_ephoto_flow_browser_show_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - -} - -/*Delete the flow browser*/ -static void -_ephoto_flow_browser_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - -} - -/*A key has been pressed*/ -static const struct -{ - const char *name; - const char *modifiers; - void (*func)(void *data, Evas_Object *obj, void *event_info); -} keys[] = { - { "Left", NULL, _ephoto_go_previous }, - { "Right", NULL, _ephoto_go_next }, - { "space", NULL, _ephoto_go_next }, - { "Escape", NULL, _ephoto_go_back }, - { "bracketleft", NULL, _ephoto_go_rotate_counterclockwise }, - { "bracketright", NULL, _ephoto_go_rotate_clockwise }, - { "Home", NULL, _ephoto_go_first }, - { "End", NULL, _ephoto_go_last }, - { "F5", NULL, _ephoto_go_slideshow}, - { "plus", "Control", _ephoto_zoom_in}, - { "minus", "Control", _ephoto_zoom_out}, - { "0", "Control", _ephoto_zoom_regular_size}, - { "e", NULL, _ephoto_go_editor }, - { NULL, NULL, NULL } -}; - -static void -_ephoto_key_pressed(void *data, Evas *e, Evas_Object *obj, void *event_data) -{ - Evas_Event_Key_Down *eku; - int i; - - eku = (Evas_Event_Key_Down *)event_data; - DBG("Key name: %s", eku->key); - for (i = 0; keys[i].name; ++i) - if ((!strcmp(eku->key, keys[i].name)) && - ((keys[i].modifiers == NULL) || (evas_key_modifier_is_set(eku->modifiers, keys[i].modifiers)))) - keys[i].func(data, NULL, NULL); -} - -static void -_ephoto_mouse_wheel(void *data, Evas *e, Evas_Object *obj, void *event_data) -{ - Evas_Event_Mouse_Wheel *emw = (Evas_Event_Mouse_Wheel *) event_data; - if (evas_key_modifier_is_set(emw->modifiers, "Control")) - { - if (emw->z < 0) - _ephoto_zoom_in(data, NULL, NULL); - else - _ephoto_zoom_out(data, NULL, NULL); - } -} - -/*Go back to the thumbnail viewer*/ -static void -_ephoto_go_back(void *data, Evas_Object *obj, void *event_info) -{ - Ephoto_Flow_Browser *ef = data; - - evas_object_smart_callback_call(ef->flow_browser, "delete,request", NULL); - /* elm_toolbar_item_unselect_all(ef->toolbar); */ - /* em->thumb_browser = ephoto_create_thumb_browser(em->layout); */ - /* elm_layout_content_set(em->layout, "ephoto.content.swallow", em->thumb_browser); */ - -} - -/*Go to the very first image in the list*/ -static void -_ephoto_go_first(void *data, Evas_Object *obj, void *event_info) -{ - Ephoto_Flow_Browser *ef = data; - - // TODO: ef->iter = em->images; - - ef->cur_image = eina_list_data_get(ef->iter); - _ephoto_go_update(ef); -} - -/*Go to the very last image in the list*/ -static void -_ephoto_go_last(void *data, Evas_Object *obj, void *event_info) -{ - Ephoto_Flow_Browser *ef = data; - - // TODO: ef->iter = eina_list_last(em->images); - ef->cur_image = eina_list_data_get(ef->iter); - - _ephoto_go_update(ef); -} - -/*Go to the next image in the list*/ -static void -_ephoto_go_next(void *data, Evas_Object *obj, void *event_info) -{ - Ephoto_Flow_Browser *ef = data; - - ef->iter = eina_list_next(ef->iter); - // TODO: if (!ef->iter) ef->iter = em->images; - - ef->cur_image = eina_list_data_get(ef->iter); - - _ephoto_go_update(ef); -} - -/*Go to the previous image in the list*/ -static void -_ephoto_go_previous(void *data, Evas_Object *obj, void *event_info) -{ - Ephoto_Flow_Browser *ef = data; - - ef->iter = eina_list_prev(ef->iter); - /* TODO: - if (!ef->iter) - ef->iter = eina_list_last(em->images); - */ - - ef->cur_image = eina_list_data_get(ef->iter); - - _ephoto_go_update(ef); -} - -/*Go to the slideshow*/ -static void -_ephoto_go_slideshow(void *data, Evas_Object *obj, void *event_info) -{ - Ephoto_Flow_Browser *ef = data; - // FIXME - //ephoto_hide_flow_browser(); - // TODO ephoto_show_slideshow(1, ef->cur_image); - elm_toolbar_item_unselect_all(ef->toolbar); -} - -static void -_ephoto_go_rotate_counterclockwise(void *data, Evas_Object *obj, void *event_info) -{ - Ephoto_Flow_Browser *ef = data; - Evas_Object *o = elm_layout_edje_get(ef->flow_browser); - - switch(ef->orient) - { - case EPHOTO_ORIENT_0: - ef->orient = EPHOTO_ORIENT_270; - edje_object_signal_emit(o, "ef,state,rotate,270", "ef"); - break; - case EPHOTO_ORIENT_90: - ef->orient = EPHOTO_ORIENT_0; - edje_object_signal_emit(o, "ef,state,rotate,0", "ef"); - break; - case EPHOTO_ORIENT_180: - ef->orient = EPHOTO_ORIENT_90; - edje_object_signal_emit(o, "ef,state,rotate,90", "ef"); - break; - case EPHOTO_ORIENT_270: - ef->orient = EPHOTO_ORIENT_180; - edje_object_signal_emit(o, "ef,state,rotate,180", "ef"); - break; - } - elm_toolbar_item_unselect_all(ef->toolbar); -} - -static void -_ephoto_go_rotate_clockwise(void *data, Evas_Object *obj, void *event_info) -{ - Ephoto_Flow_Browser *ef = data; - Evas_Object *o = elm_layout_edje_get(ef->flow_browser); - - switch(ef->orient) - { - case EPHOTO_ORIENT_0: - ef->orient = EPHOTO_ORIENT_90; - edje_object_signal_emit(o, "ef,state,rotate,90", "ef"); - break; - case EPHOTO_ORIENT_90: - ef->orient = EPHOTO_ORIENT_180; - edje_object_signal_emit(o, "ef,state,rotate,180", "ef"); - break; - case EPHOTO_ORIENT_180: - ef->orient = EPHOTO_ORIENT_270; - edje_object_signal_emit(o, "ef,state,rotate,270", "ef"); - break; - case EPHOTO_ORIENT_270: - ef->orient = EPHOTO_ORIENT_0; - edje_object_signal_emit(o, "ef,state,rotate,0", "ef"); - break; - } - elm_toolbar_item_unselect_all(ef->toolbar); -} - -static void -_ephoto_go_editor(void *data, Evas_Object *obj, void *event_info) -{ - Ephoto_Flow_Browser *ef = data; - Ecore_Exe *exe; - char buf[PATH_MAX]; - - snprintf(buf, sizeof(buf), em->config->editor, (char *) ef->cur_image); - DBG("Editor command: %s", buf); - exe = ecore_exe_run(buf, NULL); - ecore_exe_free(exe); -} - -/* Zoom in in image */ -static void -_ephoto_zoom_in(void *data, Evas_Object *obj, void *event) -{ - Ephoto_Flow_Browser *ef = data; - double zoom; - - elm_photocam_zoom_mode_set(ef->image, ELM_PHOTOCAM_ZOOM_MODE_MANUAL); - zoom = elm_photocam_zoom_get(ef->image); - zoom -= 0.4; - if (zoom < 0.1) - zoom = 0.1; - elm_photocam_zoom_set(ef->image, zoom); - elm_toolbar_item_unselect_all(ef->toolbar); -} - -/* Zoom out in image */ -static void -_ephoto_zoom_out(void *data, Evas_Object *obj, void *event) -{ - Ephoto_Flow_Browser *ef = data; - double zoom; - - elm_photocam_zoom_mode_set(ef->image, ELM_PHOTOCAM_ZOOM_MODE_MANUAL); - zoom = elm_photocam_zoom_get(ef->image); - zoom += 0.4; - elm_photocam_zoom_set(ef->image, zoom); - elm_toolbar_item_unselect_all(ef->toolbar); -} - -/* Zoom regular size in image */ -static void -_ephoto_zoom_regular_size(void *data, Evas_Object *obj, void *event) -{ - Ephoto_Flow_Browser *ef = data; - elm_photocam_zoom_mode_set(ef->image, ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT); -} - -#endif diff --git a/src/bin/ephoto_main.c b/src/bin/ephoto_main.c index e7de99c..1fc2847 100644 --- a/src/bin/ephoto_main.c +++ b/src/bin/ephoto_main.c @@ -193,120 +193,6 @@ ephoto_title_set(Ephoto *ephoto, const char *title) elm_win_title_set(ephoto->win, buf); } -#if 0 - char current_directory[PATH_MAX]; - Ethumb_Client *client = elm_thumb_ethumb_client_get(); - - em = calloc(1, sizeof(Ephoto)); - if (!ephoto_config_init(em)) - { - _ephoto_delete_main_window(NULL, NULL, NULL); - return; - } - - if ((em->config->thumb_gen_size != 128) && - (em->config->thumb_gen_size != 256) && - (em->config->thumb_gen_size != 512)) - ephoto_thumb_size_set(em->config->thumb_size); - else - ethumb_client_size_set - (client, em->config->thumb_gen_size, em->config->thumb_gen_size); - - /*Setup the main window*/ - em->win = elm_win_add(NULL, "ephoto", ELM_WIN_BASIC); - elm_win_title_set(em->win, "Ephoto"); - - evas_object_show(em->win); - - /*Callback to close the main window*/ - evas_object_smart_callback_add(em->win, "delete,request", - _ephoto_delete_main_window, NULL); - - /*Grab the main evas canvas we are working with*/ - em->e = evas_object_evas_get(em->win); - - /*Set a custom background for the window*/ - em->bg = elm_bg_add(em->win); - elm_win_resize_object_add(em->win, em->bg); - evas_object_size_hint_weight_set(em->bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_show(em->bg); - - /* Add the main layout to the window */ - em->layout = elm_layout_add(em->win); - - - /* Prepare the slideshow beforehand, in order - * to obtain the list of transitions */ - ephoto_create_slideshow(); - - if (!directory) - { - getcwd(current_directory, PATH_MAX); - } - - if (!em->config->directory) - { - if (directory) - em->config->directory = eina_stringshare_add(directory); - else - em->config->directory = eina_stringshare_add(current_directory); - } - else if (directory || !em->config->remember_directory) - { - if (directory) - eina_stringshare_replace(&em->config->directory, - directory); - else - eina_stringshare_replace(&em->config->directory, - current_directory); - } - - if (image) - { - em->flow_browser = ephoto_create_flow_browser(em->layout); - ephoto_flow_browser_image_set(em->flow_browser, image); - eina_stringshare_del(image); - elm_layout_content_set(em->layout, "ephoto.content.swallow", em->flow_browser); - evas_object_smart_callback_add(em->flow_browser, - "delete,request", - _ephoto_flow_browser_delete_cb, - NULL); - em->state = EPHOTO_STATE_FLOW; - } - else - { - em->thumb_browser = ephoto_thumb_browser_add(em->layout); - elm_layout_content_set(em->layout, "ephoto.content.swallow", em->thumb_browser); - evas_object_smart_callback_add(em->thumb_browser, - "selected", - _ephoto_thumb_browser_selected_cb, - NULL); - em->state = EPHOTO_STATE_THUMB; - } - - evas_object_resize(em->win, 1024, 534); -} - -/*Delete the main ephoto window*/ -static void -_ephoto_delete_main_window(void *data, Evas_Object *obj, void *event_info) -{ - ephoto_config_save(em, EINA_TRUE); - - if (em->thumb_browser) - evas_object_del(em->thumb_browser); - if (em->flow_browser) - evas_object_del(em->flow_browser); - - evas_object_del(em->layout); - evas_object_del(em->bg); - ephoto_entries_free(em); - ephoto_config_free(em); - free(em); - elm_exit(); -} -#endif - static Eina_Bool _thumb_gen_size_changed_timer_cb(void *data) {