diff --git a/src/bin/ephoto_single_browser.c b/src/bin/ephoto_single_browser.c index 98509ed..929279a 100644 --- a/src/bin/ephoto_single_browser.c +++ b/src/bin/ephoto_single_browser.c @@ -461,6 +461,39 @@ _last_entry_find(Ephoto_Single_Browser *sb) return eina_list_last_data_get(sb->ephoto->entries); } +static const char * +_ephoto_get_file_size(const char *path) +{ + char isize[PATH_MAX]; + Eina_File *f = eina_file_open(path, EINA_FALSE); + size_t size = eina_file_size_get(f); + eina_file_close(f); + double dsize = (double)size; + if (dsize < 1024.0) snprintf(isize, sizeof(isize), "%'.0f bytes", dsize); + else + { + dsize /= 1024.0; + if (dsize < 1024) snprintf(isize, sizeof(isize), "%'.0f KB", dsize); + else + { + dsize /= 1024.0; + if (dsize < 1024) snprintf(isize, sizeof(isize), "%'.1f MB", dsize); + else + { + dsize /= 1024.0; + if (dsize < 1024) snprintf(isize, sizeof(isize), "%'.1f GB", dsize); + else + { + dsize /= 1024.0; + snprintf(isize, sizeof(isize), "%'.1f TB", dsize); + } + } + } + } + return strdup(isize); +} + + static void _ephoto_single_browser_recalc(Ephoto_Single_Browser *sb) { @@ -486,40 +519,15 @@ _ephoto_single_browser_recalc(Ephoto_Single_Browser *sb) if (sb->viewer) { char image_info[PATH_MAX]; - char isize[PATH_MAX]; Evas_Coord w, h; Evas_Object *botbox; Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer"); - Eina_File *f = eina_file_open(sb->entry->path, EINA_FALSE); - size_t size = eina_file_size_get(f); - eina_file_close(f); - double dsize = (double)size; - if (dsize < 1024.0) snprintf(isize, sizeof(isize), "%'.0f bytes", dsize); - else - { - dsize /= 1024.0; - if (dsize < 1024) snprintf(isize, sizeof(isize), "%'.0f KB", dsize); - else - { - dsize /= 1024.0; - if (dsize < 1024) snprintf(isize, sizeof(isize), "%'.1f MB", dsize); - else - { - dsize /= 1024.0; - if (dsize < 1024) snprintf(isize, sizeof(isize), "%'.1f GB", dsize); - else - { - dsize /= 1024.0; - snprintf(isize, sizeof(isize), "%'.1f TB", dsize); - } - } - } - } evas_object_image_size_get(elm_image_object_get(v->image), &w, &h); snprintf(image_info, PATH_MAX, "Type: %s Resolution: %dx%d File Size: %s", - efreet_mime_type_get(sb->entry->path), w, h, isize); + efreet_mime_type_get(sb->entry->path), w, h, + _ephoto_get_file_size(sb->entry->path)); elm_table_pack(sb->table, sb->viewer, 0, 1, 4, 1); evas_object_show(sb->viewer); @@ -685,7 +693,7 @@ static void _apply_crop(void *data, Evas_Object *obj EINA_UNUSED, void *event_in Ephoto_Single_Browser *sb = evas_object_data_get(win, "single_browser"); Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer"); const char *path, *key, *type;; - char tmp_path[PATH_MAX]; + char tmp_path[PATH_MAX], info[PATH_MAX]; int x, y, w, h, cx, cy, cw, ch, iw, ih, sw, sh; int nx, ny, nw, nh, i, j, tmpx, tmpy, ind, index; double scalex, scaley, scalew, scaleh; @@ -737,10 +745,17 @@ static void _apply_crop(void *data, Evas_Object *obj EINA_UNUSED, void *event_in elm_image_file_set(v->image, tmp_path, NULL); evas_object_geometry_get(sb->table, 0, 0, &sw, &sh); + + snprintf(info, PATH_MAX, + "Type: %s Resolutions: %dx%d Size: %s", + efreet_mime_type_get(tmp_path), nw, nh, _ephoto_get_file_size(tmp_path)); + elm_object_text_set(sb->infolabel, info); + if (nw < sw && nh < sh) _zoom_set(sb, 1.0); else _zoom_fit(sb); + evas_object_del(win); }