From 53e8309ff7533c7df3e3da13b7f32bfe349a28f5 Mon Sep 17 00:00:00 2001 From: Jose Dapena Paz Date: Thu, 25 Jun 2009 21:07:35 +0200 Subject: [PATCH] Emit limit_error on loading the document on gtkhtml mime part view if limit hit --- src/widgets/modest-gtkhtml-mime-part-view.c | 25 +++++++++++++++++++++---- src/widgets/modest-gtkhtml-mime-part-view.h | 1 + 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/widgets/modest-gtkhtml-mime-part-view.c b/src/widgets/modest-gtkhtml-mime-part-view.c index 9ef261c..a160174 100644 --- a/src/widgets/modest-gtkhtml-mime-part-view.c +++ b/src/widgets/modest-gtkhtml-mime-part-view.c @@ -133,6 +133,7 @@ struct _ModestGtkhtmlMimePartViewPrivate { enum { STOP_STREAMS_SIGNAL, + LIMIT_ERROR_SIGNAL, LAST_SIGNAL }; @@ -263,6 +264,15 @@ modest_gtkhtml_mime_part_view_class_init (ModestGtkhtmlMimePartViewClass *klass) g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + signals[LIMIT_ERROR_SIGNAL] = + g_signal_new ("limit-error", + G_TYPE_FROM_CLASS (gobject_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (ModestGtkhtmlMimePartViewClass,limit_error), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + } static void @@ -444,13 +454,20 @@ decode_to_stream_cb (TnyMimePart *self, GError *err, gpointer user_data) { - gboolean is_text = GPOINTER_TO_INT (user_data); + ModestGtkhtmlMimePartView *view = (ModestGtkhtmlMimePartView *) user_data; - if (is_text) { + if (MODEST_IS_STREAM_TEXT_TO_HTML (stream)) { if (tny_stream_write (stream, "\n", 1) == -1) { g_warning ("failed to write CR in %s", __FUNCTION__); } + if (modest_stream_text_to_html_limit_reached (MODEST_STREAM_TEXT_TO_HTML (stream))) { + g_signal_emit (G_OBJECT (view), signals[LIMIT_ERROR_SIGNAL], 0); + } tny_stream_reset (stream); + } else { + if (modest_tny_stream_gtkhtml_limit_reached (MODEST_TNY_STREAM_GTKHTML (stream))) { + g_signal_emit (G_OBJECT (view), signals[LIMIT_ERROR_SIGNAL], 0); + } } tny_stream_close (stream); } @@ -477,7 +494,7 @@ set_html_part (ModestGtkhtmlMimePartView *self, TnyMimePart *part, const gchar * tny_mime_part_decode_to_stream_async (TNY_MIME_PART (part), tny_stream, decode_to_stream_cb, - NULL, GINT_TO_POINTER (FALSE)); + NULL, self); g_object_unref (tny_stream); } @@ -505,7 +522,7 @@ set_text_part (ModestGtkhtmlMimePartView *self, TnyMimePart *part) tny_mime_part_decode_to_stream_async (TNY_MIME_PART (part), text_to_html_stream, decode_to_stream_cb, - NULL, GINT_TO_POINTER (TRUE)); + NULL, self); g_object_unref (G_OBJECT(text_to_html_stream)); g_object_unref (G_OBJECT(tny_stream)); diff --git a/src/widgets/modest-gtkhtml-mime-part-view.h b/src/widgets/modest-gtkhtml-mime-part-view.h index 94b7bf0..b7b0b16 100644 --- a/src/widgets/modest-gtkhtml-mime-part-view.h +++ b/src/widgets/modest-gtkhtml-mime-part-view.h @@ -80,6 +80,7 @@ struct _ModestGtkhtmlMimePartViewClass { /* signals */ void (*stop_streams) (ModestGtkhtmlMimePartView *self); + void (*limit_error) (ModestGtkhtmlMimePartView *self); }; -- 1.7.9.5