diff --git a/src/bin/ephoto.h b/src/bin/ephoto.h index f7d2a22..5a4b539 100644 --- a/src/bin/ephoto.h +++ b/src/bin/ephoto.h @@ -260,6 +260,25 @@ _ephoto_eina_file_direct_info_image_useful(const Eina_File_Direct_Info *info) return EINA_FALSE; } +static inline Eina_Bool +_ephoto_file_image_can_save(const char *ext) +{ + int i = 0; + + const char *filters[] = { + "png", "jpeg", "jpg", "eet", "xpm", "tiff", "tif", "gif", "svg", "webp", + "pmaps", "bmp", "wbmp", "ico", "generic" + }; + + int count = sizeof(filters) / sizeof(filters[0]); + for (i = 0; i < count; i++) + { + if (!strcasecmp(ext, filters[i])) + return EINA_TRUE; + } + return EINA_FALSE; +} + extern int EPHOTO_EVENT_ENTRY_CREATE; extern int EPHOTO_EVENT_POPULATE_START; extern int EPHOTO_EVENT_POPULATE_END; diff --git a/src/bin/ephoto_single_browser.c b/src/bin/ephoto_single_browser.c index eb2b028..1cbf5a9 100644 --- a/src/bin/ephoto_single_browser.c +++ b/src/bin/ephoto_single_browser.c @@ -20,6 +20,7 @@ struct _Ephoto_Single_Browser Evas_Object *nolabel; Evas_Object *botbox; Evas_Object *event; + Elm_Object_Item *save; const char *pending_path; Ephoto_Entry *entry; Ephoto_Orient orient; @@ -764,6 +765,11 @@ _ephoto_single_browser_recalc(Ephoto_Single_Browser *sb) evas_object_show(sb->infolabel); ephoto_title_set(sb->ephoto, bname); + + if (!_ephoto_file_image_can_save(strrchr(bname, '.')+1)) + elm_object_item_disabled_set(sb->save, EINA_TRUE); + else + elm_object_item_disabled_set(sb->save, EINA_FALSE); } else { @@ -1115,6 +1121,11 @@ _save_image(void *data, Evas_Object *obj EINA_UNUSED, Ephoto_Single_Browser *sb = data; Evas_Object *popup, *box, *label, *ic, *button; + if (!_ephoto_file_image_can_save(strrchr(sb->entry->label, '.')+1)) + { + _failed_save(sb); + return; + } if (sb->event) evas_object_freeze_events_set(sb->event, EINA_TRUE); @@ -1233,7 +1244,7 @@ _save_image_as_done(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) char buf[PATH_MAX]; - if (!evas_object_image_extension_can_load_get(selected)) + if (!_ephoto_file_image_can_save(strrchr(selected, '.')+1)) snprintf(buf, PATH_MAX, "%s.jpg", selected); else snprintf(buf, PATH_MAX, "%s", selected); @@ -2552,7 +2563,7 @@ ephoto_single_browser_add(Ephoto *ephoto, Evas_Object *parent) menu = elm_toolbar_item_menu_get(icon); elm_menu_item_add(menu, NULL, "edit-undo", _("Reset"), _reset_image, sb); - elm_menu_item_add(menu, NULL, "document-save", _("Save"), _save_image, sb); + sb->save = elm_menu_item_add(menu, NULL, "document-save", _("Save"), _save_image, sb); elm_menu_item_add(menu, NULL, "document-save-as", _("Save As"), _save_image_as, sb); elm_menu_item_add(menu, NULL, "document-send", _("Upload"), _upload_image,