X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-stream-text-to-html.c;h=fc59bf3f138eb47b97f3342adebc565343d9e2ac;hp=b62de1576937c29d54be2a4dad8d06a630a034c3;hb=3477500f2b63cf386e7bf69e4d61d781023a1164;hpb=3a00a6ff63e2fcd2feb005314753c6d4f32cf105 diff --git a/src/modest-stream-text-to-html.c b/src/modest-stream-text-to-html.c index b62de15..fc59bf3 100644 --- a/src/modest-stream-text-to-html.c +++ b/src/modest-stream-text-to-html.c @@ -58,7 +58,9 @@ struct _ModestStreamTextToHtmlPrivate { gboolean written_prefix; gsize linkify_limit; gsize full_limit; + gsize line_limit; gsize total_output; + gsize total_lines_output; }; #define MODEST_STREAM_TEXT_TO_HTML_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \ MODEST_TYPE_STREAM_TEXT_TO_HTML, \ @@ -125,6 +127,7 @@ modest_stream_text_to_html_init (ModestStreamTextToHtml *obj) priv->linkify_limit = 0; priv->full_limit = 0; priv->total_output = 0; + priv->total_lines_output = 0; modest_text_utils_hyperlinkify_begin (); } @@ -160,6 +163,13 @@ modest_stream_text_to_html_new (TnyStream *out_stream) } void +modest_stream_text_to_html_set_line_limit (ModestStreamTextToHtml *self, gssize limit) +{ + ModestStreamTextToHtmlPrivate *priv = MODEST_STREAM_TEXT_TO_HTML_GET_PRIVATE (self); + priv->line_limit = limit; +} + +void modest_stream_text_to_html_set_linkify_limit (ModestStreamTextToHtml *self, gssize limit) { ModestStreamTextToHtmlPrivate *priv = MODEST_STREAM_TEXT_TO_HTML_GET_PRIVATE (self); @@ -173,6 +183,16 @@ modest_stream_text_to_html_set_full_limit (ModestStreamTextToHtml *self, gssize priv->full_limit = limit; } +gboolean +modest_stream_text_to_html_limit_reached (ModestStreamTextToHtml *self) +{ + ModestStreamTextToHtmlPrivate *priv = MODEST_STREAM_TEXT_TO_HTML_GET_PRIVATE (self); + + return (priv->full_limit > 0 && priv->total_output > priv->full_limit) || + (priv->line_limit > 0 && priv->total_lines_output > priv->line_limit); + +} + /* the rest are interface functions */ @@ -195,6 +215,8 @@ write_line (TnyStream *self, const gchar *str, gboolean convert_to_html) preserve the prefix and suffix */ if (convert_to_html && (priv->full_limit > 0) &&(priv->total_output > priv->full_limit)) return TRUE; + if (convert_to_html && (priv->line_limit > 0) && (priv->total_lines_output > priv->line_limit)) + return TRUE; if ((priv->linkify_limit > 0) && (priv->total_output > priv->linkify_limit)) hyperlinkify = FALSE; if (convert_to_html) { @@ -205,6 +227,7 @@ write_line (TnyStream *self, const gchar *str, gboolean convert_to_html) pending_bytes = strlen (html_buffer); priv->total_output += pending_bytes; + priv->total_lines_output ++; offset = html_buffer; while (pending_bytes > 0) { @@ -242,6 +265,12 @@ text_to_html_write (TnyStream *self, const char *buffer, size_t n) while (n > 0) { gchar c = *buffer; + + if ((priv->full_limit > 0) && (priv->total_output > priv->full_limit)) + return n; + if ((priv->line_limit > 0) && (priv->total_lines_output > priv->line_limit)) + return n; + if (priv->line_buffer == NULL) priv->line_buffer = g_string_new (NULL);