fix filepreview for mime types which have edje theme overrides

SVN revision: 73821
This commit is contained in:
Mike Blumenkrantz 2012-07-13 15:15:36 +00:00
parent 0592fdfb3d
commit b9e5519d50
1 changed files with 19 additions and 14 deletions

View File

@ -36,7 +36,7 @@ static char *_e_wid_file_size_get(off_t st_size);
static char *_e_wid_file_user_get(uid_t st_uid); static char *_e_wid_file_user_get(uid_t st_uid);
static char *_e_wid_file_perms_get(mode_t st_mode, uid_t st_uid, gid_t gid); static char *_e_wid_file_perms_get(mode_t st_mode, uid_t st_uid, gid_t gid);
static char *_e_wid_file_time_get(time_t st_modtime); static char *_e_wid_file_time_get(time_t st_modtime);
static void _e_wid_fprev_img_update(E_Widget_Data *wd, const char *path); static void _e_wid_fprev_img_update(E_Widget_Data *wd, const char *path, const char *key);
static void _e_wid_del_hook(Evas_Object *obj); static void _e_wid_del_hook(Evas_Object *obj);
static void static void
@ -69,25 +69,31 @@ _e_wid_fprev_preview_update(void *data, Evas_Object *obj, void *event_info __UNU
const char *mime; const char *mime;
Efreet_Desktop *ed = NULL; Efreet_Desktop *ed = NULL;
unsigned int size; unsigned int size;
char group[1024];
Eina_Bool edj;
wd->mime_icon = EINA_TRUE; wd->mime_icon = EINA_TRUE;
size = (wd->w > 48) ? 48 : wd->w; size = (wd->w > 48) ? 48 : wd->w;
mime = e_util_mime_icon_get(wd->mime, size); mime = e_util_mime_icon_get(wd->mime, size);
if (!mime) if (mime)
{ {
if (eina_str_has_extension(wd->path, "desktop")) edj = eina_str_has_extension(mime, "edj");
{ if (edj)
ed = efreet_desktop_new(wd->path); snprintf(group, sizeof(group), "e/icons/fileman/mime/%s", wd->mime);
if (ed) _e_wid_fprev_img_update(wd, mime, edj ? group : NULL);
mime = efreet_icon_path_find(e_config->icon_theme, ed->icon, size); return;
} }
if (eina_str_has_extension(wd->path, "desktop"))
{
ed = efreet_desktop_new(wd->path);
if (ed)
mime = efreet_icon_path_find(e_config->icon_theme, ed->icon, size);
} }
if (!mime) if (!mime)
mime = efreet_icon_path_find(e_config->icon_theme, "unknown", size); mime = efreet_icon_path_find(e_config->icon_theme, "unknown", size);
if (!mime) if (!mime)
mime = efreet_icon_path_find(e_config->icon_theme, "text/plain", size); mime = efreet_icon_path_find(e_config->icon_theme, "text/plain", size);
_e_wid_fprev_img_update(wd, mime); _e_wid_fprev_img_update(wd, mime, NULL);
if (ed) efreet_desktop_free(ed); if (ed) efreet_desktop_free(ed);
} }
} }
@ -97,11 +103,10 @@ _e_wid_fprev_preview_update(void *data, Evas_Object *obj, void *event_info __UNU
} }
static void static void
_e_wid_fprev_img_update(E_Widget_Data *wd, const char *path) _e_wid_fprev_img_update(E_Widget_Data *wd, const char *path, const char *key)
{ {
if (!path) return; if (!path) return;
e_widget_preview_thumb_set(wd->o_preview_preview, path, e_widget_preview_thumb_set(wd->o_preview_preview, path, key, wd->w, wd->h);
"e/desktop/background", wd->w, wd->h);
} }
static void static void
@ -117,7 +122,7 @@ _e_wid_fprev_preview_file(E_Widget_Data *wd, const char *path)
perms = _e_wid_file_perms_get(st.st_mode, st.st_uid, st.st_gid); perms = _e_wid_file_perms_get(st.st_mode, st.st_uid, st.st_gid);
mtime = _e_wid_file_time_get(st.st_mtime); mtime = _e_wid_file_time_get(st.st_mtime);
_e_wid_fprev_img_update(wd, path); _e_wid_fprev_img_update(wd, path, NULL);
e_widget_table_object_repack(wd->o_preview_preview_table, e_widget_table_object_repack(wd->o_preview_preview_table,
wd->o_preview_preview, wd->o_preview_preview,
0, 0, 1, 1, 0, 0, 1, 1); 0, 0, 1, 1, 0, 0, 1, 1);