mirror of https://github.com/djcb/mu.git
* mu-widget-util.[ch]: be smarter about pixmaps (icons) for unknown mime types
This commit is contained in:
parent
da16959a33
commit
1de81553a6
|
@ -22,22 +22,33 @@
|
||||||
#include <gio/gio.h>
|
#include <gio/gio.h>
|
||||||
#include "mu-widget-util.h"
|
#include "mu-widget-util.h"
|
||||||
|
|
||||||
GdkPixbuf*
|
static const char*
|
||||||
mu_widget_util_get_icon_pixbuf_for_content_type (const char *ctype,
|
second_guess_content_type (const char *ctype)
|
||||||
size_t size)
|
{
|
||||||
|
int i;
|
||||||
|
struct {
|
||||||
|
const char *orig, *subst;
|
||||||
|
} substtable [] = {
|
||||||
|
{"text", "text/plain"},
|
||||||
|
{"image/pjpeg", "image/jpeg" }
|
||||||
|
};
|
||||||
|
|
||||||
|
for (i = 0; i != G_N_ELEMENTS(substtable); ++i)
|
||||||
|
if (g_str_has_prefix (ctype, substtable[i].orig))
|
||||||
|
return substtable[i].subst;
|
||||||
|
|
||||||
|
return "application/octet-stream";
|
||||||
|
}
|
||||||
|
|
||||||
|
static GdkPixbuf*
|
||||||
|
get_icon_pixbuf_for_content_type (const char *ctype, size_t size)
|
||||||
{
|
{
|
||||||
GIcon *icon;
|
GIcon *icon;
|
||||||
GdkPixbuf *pixbuf;
|
GdkPixbuf *pixbuf;
|
||||||
|
|
||||||
g_return_val_if_fail (ctype, NULL);
|
|
||||||
g_return_val_if_fail (size > 0, NULL);
|
|
||||||
|
|
||||||
icon = g_content_type_get_icon (ctype);
|
icon = g_content_type_get_icon (ctype);
|
||||||
pixbuf = NULL;
|
pixbuf = NULL;
|
||||||
|
|
||||||
/* if (g_strcmp0 (ctype, "image/pjpeg") == 0) */
|
|
||||||
/* ctype = "image/jpeg"; */
|
|
||||||
|
|
||||||
/* based on a snippet from http://www.gtkforums.com/about4721.html */
|
/* based on a snippet from http://www.gtkforums.com/about4721.html */
|
||||||
if (G_IS_THEMED_ICON(icon)) {
|
if (G_IS_THEMED_ICON(icon)) {
|
||||||
gchar const * const *names;
|
gchar const * const *names;
|
||||||
|
@ -57,3 +68,23 @@ mu_widget_util_get_icon_pixbuf_for_content_type (const char *ctype,
|
||||||
|
|
||||||
return pixbuf;
|
return pixbuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
GdkPixbuf*
|
||||||
|
mu_widget_util_get_icon_pixbuf_for_content_type (const char *ctype, size_t size)
|
||||||
|
{
|
||||||
|
GdkPixbuf *pixbuf;
|
||||||
|
|
||||||
|
g_return_val_if_fail (ctype, NULL);
|
||||||
|
g_return_val_if_fail (size > 0, NULL);
|
||||||
|
|
||||||
|
pixbuf = get_icon_pixbuf_for_content_type (ctype, size);
|
||||||
|
if (!pixbuf)
|
||||||
|
pixbuf = get_icon_pixbuf_for_content_type
|
||||||
|
(second_guess_content_type (ctype), size);
|
||||||
|
|
||||||
|
return pixbuf;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,8 @@
|
||||||
* g_object_unref when the pixbuf is no longer needed.
|
* g_object_unref when the pixbuf is no longer needed.
|
||||||
*/
|
*/
|
||||||
GdkPixbuf* mu_widget_util_get_icon_pixbuf_for_content_type (const char *ctype,
|
GdkPixbuf* mu_widget_util_get_icon_pixbuf_for_content_type (const char *ctype,
|
||||||
size_t size);
|
size_t size)
|
||||||
|
G_GNUC_WARN_UNUSED_RESULT;
|
||||||
|
|
||||||
|
|
||||||
#endif /*__MU_WIDGET_UTIL_H__*/
|
#endif /*__MU_WIDGET_UTIL_H__*/
|
||||||
|
|
Loading…
Reference in New Issue