[pan2: 52/68] Add support for Face header.
- From: Petr Kovář <pmkovar src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pan2: 52/68] Add support for Face header.
- Date: Tue, 8 Feb 2011 23:02:24 +0000 (UTC)
commit a390304594b4145e7ecc42911c10c970fa7226d5
Author: K. Haley <haleykd users sf net>
Date: Wed Aug 18 16:41:23 2010 -0600
Add support for Face header.
pan/gui/body-pane.cc | 27 ++++++++++++++++++++++++---
pan/gui/body-pane.h | 1 +
2 files changed, 25 insertions(+), 3 deletions(-)
---
diff --git a/pan/gui/body-pane.cc b/pan/gui/body-pane.cc
index 6090f3a..19b9b69 100644
--- a/pan/gui/body-pane.cc
+++ b/pan/gui/body-pane.cc
@@ -27,6 +27,7 @@ extern "C" {
#include <gdk/gdkkeysyms.h>
#include <gmime/gmime.h>
}
+#include <gdk-pixbuf/gdk-pixbuf.h>
#include <pan/general/debug.h>
#include <pan/general/log.h>
#include <pan/general/macros.h>
@@ -1062,13 +1063,30 @@ BodyPane :: set_text_from_message (GMimeMessage * message)
gtk_label_set_width_chars (GTK_LABEL(_headers), (int)w);
// set the x-face...
- GdkPixmap *pixmap = NULL;
const char * pch = message ? g_mime_object_get_header ((GMimeObject *) message, "X-Face") : 0;
if (pch && _xface->window)
+ {
+ GdkPixmap *pixmap = NULL;
pixmap = pan_gdk_pixmap_create_from_x_face (_xface->window, pch);
- gtk_image_set_from_pixmap (GTK_IMAGE(_xface), pixmap, NULL);
- if (pixmap)
+ gtk_image_set_from_pixmap (GTK_IMAGE(_xface), pixmap, NULL);
+ gtk_image_set_from_pixmap (GTK_IMAGE(_face), pixmap, NULL);
g_object_unref (pixmap);
+ }
+ // set the face
+ pch = message ? g_mime_object_get_header ((GMimeObject *) message, "Face") : 0;
+ if (pch && _face->window)
+ {
+ GMimeEncoding dec;
+ g_mime_encoding_init_decode(&dec, GMIME_CONTENT_ENCODING_BASE64);
+ guchar buf[1024];
+ int len = g_mime_encoding_step(&dec, pch, strlen(pch), (char*)buf);
+ GdkPixbufLoader *pl = gdk_pixbuf_loader_new_with_type( "png", NULL);
+ gdk_pixbuf_loader_write(pl, buf, len, NULL);
+ gdk_pixbuf_loader_close(pl, NULL);
+ GdkPixbuf *pixbuf = gdk_pixbuf_loader_get_pixbuf(pl);
+ gtk_image_set_from_pixbuf (GTK_IMAGE(_face), pixbuf);
+ g_object_unref(pl);
+ }
// set the terse headers...
s.clear ();
@@ -1368,6 +1386,9 @@ BodyPane :: BodyPane (Data& data, ArticleCache& cache, Prefs& prefs):
w = _xface = gtk_image_new ();
gtk_widget_set_size_request (w, 48, 48);
gtk_box_pack_start (GTK_BOX(hbox), w, false, false, PAD_SMALL);
+ w = _face = gtk_image_new ();
+ gtk_widget_set_size_request (w, 48, 48);
+ gtk_box_pack_start (GTK_BOX(hbox), w, false, false, PAD_SMALL);
gtk_widget_show_all (_verbose);
// setup
diff --git a/pan/gui/body-pane.h b/pan/gui/body-pane.h
index be878aa..1e73437 100644
--- a/pan/gui/body-pane.h
+++ b/pan/gui/body-pane.h
@@ -107,6 +107,7 @@ namespace pan
GtkWidget * _verbose;
GtkWidget * _headers;
GtkWidget * _xface;
+ GtkWidget * _face;
GtkTextBuffer * _buffer;
GtkWidget * _root;
GtkWidget * _text;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]