Ephoto: Add an information label with resolution, size, and type for single images.

This commit is contained in:
Stephen Houston 2015-01-19 15:26:13 -06:00
parent e8fc02dc65
commit c93ec61058
1 changed files with 49 additions and 2 deletions

View File

@ -15,6 +15,7 @@ struct _Ephoto_Single_Browser
Evas_Object *table;
Evas_Object *panel;
Evas_Object *viewer;
Evas_Object *infolabel;
Evas_Object *nolabel;
const char *pending_path;
Ephoto_Entry *entry;
@ -468,6 +469,8 @@ _ephoto_single_browser_recalc(Ephoto_Single_Browser *sb)
{
evas_object_del(sb->viewer);
sb->viewer = NULL;
evas_object_del(sb->infolabel);
sb->infolabel = NULL;
}
if (sb->nolabel)
{
@ -483,10 +486,54 @@ _ephoto_single_browser_recalc(Ephoto_Single_Browser *sb)
sb->viewer = _viewer_add(sb->main, sb->entry->path);
if (sb->viewer)
{
char image_info[PATH_MAX];
char isize[PATH_MAX];
Evas_Coord w, h;
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,
"<b>Type:</b> %s <b>Resolution:</b> %dx%d <b>File Size: </b>%s",
efreet_mime_type_get(sb->entry->path), w, h, isize);
elm_table_pack(sb->table, sb->viewer, 0, 0, 4, 1);
evas_object_show(sb->viewer);
evas_object_event_callback_add
(sb->viewer, EVAS_CALLBACK_MOUSE_WHEEL, _mouse_wheel, sb);
sb->infolabel = elm_label_add(sb->table);
elm_label_line_wrap_set(sb->infolabel, ELM_WRAP_NONE);
elm_object_text_set(sb->infolabel, image_info);
evas_object_size_hint_weight_set(sb->infolabel, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
evas_object_size_hint_align_set(sb->infolabel, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(sb->table, sb->infolabel, 0, 1, 4, 1);
evas_object_show(sb->infolabel);
ephoto_title_set(sb->ephoto, bname);
}
else
@ -500,7 +547,7 @@ _ephoto_single_browser_recalc(Ephoto_Single_Browser *sb)
evas_object_show(sb->nolabel);
ephoto_title_set(sb->ephoto, "Bad Image");
}
elm_table_pack(sb->table, sb->panel, 0, 0, 1, 1);
elm_table_pack(sb->table, sb->panel, 0, 0, 1, 2);
}
elm_object_focus_set(sb->main, EINA_TRUE);
@ -856,7 +903,7 @@ ephoto_single_browser_add(Ephoto *ephoto, Evas_Object *parent)
elm_panel_hidden_set(sb->panel, EINA_TRUE);
else
elm_panel_hidden_set(sb->panel, EINA_FALSE);
elm_table_pack(sb->table, sb->panel, 0, 0, 1, 1);
elm_table_pack(sb->table, sb->panel, 0, 0, 1, 2);
evas_object_show(sb->panel);
sb->bar = elm_toolbar_add(sb->panel);