Add e_mail_part_ref_mime_part().
This commit is contained in:
@ -122,6 +122,7 @@ emfe_attachment_format (EMailFormatterExtension *extension,
|
||||
EMailExtensionRegistry *reg;
|
||||
GQueue *extensions;
|
||||
EMailPartAttachment *empa;
|
||||
CamelMimePart *mime_part;
|
||||
CamelMimeFilterToHTMLFlags flags;
|
||||
const gchar *attachment_part_id;
|
||||
const gchar *part_id;
|
||||
@ -250,11 +251,13 @@ emfe_attachment_format (EMailFormatterExtension *extension,
|
||||
reg, empa->snoop_mime_type);
|
||||
}
|
||||
|
||||
text = e_mail_part_describe (part->part, empa->snoop_mime_type);
|
||||
mime_part = e_mail_part_ref_mime_part (part);
|
||||
text = e_mail_part_describe (mime_part, empa->snoop_mime_type);
|
||||
flags = e_mail_formatter_get_text_format_flags (formatter);
|
||||
html = camel_text_to_html (
|
||||
text, flags & CAMEL_MIME_FILTER_TOHTML_CONVERT_URLS, 0);
|
||||
g_free (text);
|
||||
g_object_unref (mime_part);
|
||||
|
||||
if (empa->attachment_view_part_id)
|
||||
attachment_part_id = empa->attachment_view_part_id;
|
||||
|
||||
@ -51,10 +51,12 @@ emfe_error_format (EMailFormatterExtension *extension,
|
||||
{
|
||||
CamelStream *filtered_stream;
|
||||
CamelMimeFilter *filter;
|
||||
CamelMimePart *mime_part;
|
||||
CamelDataWrapper *dw;
|
||||
gchar *html;
|
||||
|
||||
dw = camel_medium_get_content (CAMEL_MEDIUM (part->part));
|
||||
mime_part = e_mail_part_ref_mime_part (part);
|
||||
dw = camel_medium_get_content (CAMEL_MEDIUM (mime_part));
|
||||
|
||||
html = g_strdup_printf (
|
||||
"<div class=\"part-container\" style=\""
|
||||
@ -100,6 +102,8 @@ emfe_error_format (EMailFormatterExtension *extension,
|
||||
"</div>",
|
||||
cancellable, NULL);
|
||||
|
||||
g_object_unref (mime_part);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@ -532,6 +532,7 @@ emfe_headers_format (EMailFormatterExtension *extension,
|
||||
CamelStream *stream,
|
||||
GCancellable *cancellable)
|
||||
{
|
||||
CamelMimePart *mime_part;
|
||||
GString *buffer;
|
||||
const GdkRGBA white = { 1.0, 1.0, 1.0, 1.0 };
|
||||
const GdkRGBA *body_rgba = &white;
|
||||
@ -543,7 +544,8 @@ emfe_headers_format (EMailFormatterExtension *extension,
|
||||
if (g_cancellable_is_cancelled (cancellable))
|
||||
return FALSE;
|
||||
|
||||
if (!part->part)
|
||||
mime_part = e_mail_part_ref_mime_part (part);
|
||||
if (mime_part == NULL)
|
||||
return FALSE;
|
||||
|
||||
switch (gtk_widget_get_default_direction ()) {
|
||||
@ -599,13 +601,13 @@ emfe_headers_format (EMailFormatterExtension *extension,
|
||||
if (is_collapsable)
|
||||
format_short_headers (
|
||||
formatter, buffer,
|
||||
CAMEL_MEDIUM (part->part),
|
||||
CAMEL_MEDIUM (mime_part),
|
||||
context->flags,
|
||||
cancellable);
|
||||
|
||||
format_full_headers (
|
||||
formatter, buffer,
|
||||
CAMEL_MEDIUM (part->part),
|
||||
CAMEL_MEDIUM (mime_part),
|
||||
context->mode,
|
||||
context->flags,
|
||||
cancellable);
|
||||
@ -618,6 +620,8 @@ emfe_headers_format (EMailFormatterExtension *extension,
|
||||
|
||||
g_string_free (buffer, TRUE);
|
||||
|
||||
g_object_unref (mime_part);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@ -69,6 +69,7 @@ emfe_image_format (EMailFormatterExtension *extension,
|
||||
GCancellable *cancellable)
|
||||
{
|
||||
gchar *content;
|
||||
CamelMimePart *mime_part;
|
||||
CamelDataWrapper *dw;
|
||||
GByteArray *ba;
|
||||
CamelStream *raw_content;
|
||||
@ -76,7 +77,8 @@ emfe_image_format (EMailFormatterExtension *extension,
|
||||
if (g_cancellable_is_cancelled (cancellable))
|
||||
return FALSE;
|
||||
|
||||
dw = camel_medium_get_content (CAMEL_MEDIUM (part->part));
|
||||
mime_part = e_mail_part_ref_mime_part (part);
|
||||
dw = camel_medium_get_content (CAMEL_MEDIUM (mime_part));
|
||||
g_return_val_if_fail (dw, FALSE);
|
||||
|
||||
raw_content = camel_stream_mem_new ();
|
||||
@ -139,6 +141,8 @@ emfe_image_format (EMailFormatterExtension *extension,
|
||||
|
||||
g_object_unref (raw_content);
|
||||
|
||||
g_object_unref (mime_part);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@ -61,12 +61,15 @@ emfpe_headers_format (EMailFormatterExtension *extension,
|
||||
const gchar *buf;
|
||||
gint attachments_count;
|
||||
gchar *part_id_prefix;
|
||||
CamelMimePart *mime_part;
|
||||
GQueue *headers_queue;
|
||||
GQueue queue = G_QUEUE_INIT;
|
||||
GList *head, *link;
|
||||
const gchar *part_id;
|
||||
|
||||
buf = camel_medium_get_header (CAMEL_MEDIUM (part->part), "subject");
|
||||
mime_part = e_mail_part_ref_mime_part (part);
|
||||
|
||||
buf = camel_medium_get_header (CAMEL_MEDIUM (mime_part), "subject");
|
||||
subject = camel_header_decode_string (buf, "UTF-8");
|
||||
str = g_string_new ("");
|
||||
g_string_append_printf (str, "<h1>%s</h1>\n", subject);
|
||||
@ -90,7 +93,7 @@ emfpe_headers_format (EMailFormatterExtension *extension,
|
||||
raw_header.value = header->value;
|
||||
e_mail_formatter_format_header (
|
||||
formatter, str,
|
||||
CAMEL_MEDIUM (part->part), &raw_header,
|
||||
CAMEL_MEDIUM (mime_part), &raw_header,
|
||||
header->flags | E_MAIL_FORMATTER_HEADER_FLAG_NOLINKS,
|
||||
"UTF-8");
|
||||
} else {
|
||||
@ -106,7 +109,7 @@ emfpe_headers_format (EMailFormatterExtension *extension,
|
||||
if (raw_header.value && *raw_header.value) {
|
||||
e_mail_formatter_format_header (
|
||||
formatter, str,
|
||||
CAMEL_MEDIUM (part->part), &raw_header,
|
||||
CAMEL_MEDIUM (mime_part), &raw_header,
|
||||
header->flags | E_MAIL_FORMATTER_HEADER_FLAG_NOLINKS,
|
||||
"UTF-8");
|
||||
}
|
||||
@ -169,7 +172,7 @@ emfpe_headers_format (EMailFormatterExtension *extension,
|
||||
raw_header.value = tmp->str;
|
||||
e_mail_formatter_format_header (
|
||||
formatter, str,
|
||||
CAMEL_MEDIUM (part->part), &raw_header,
|
||||
CAMEL_MEDIUM (mime_part), &raw_header,
|
||||
E_MAIL_FORMATTER_HEADER_FLAG_BOLD |
|
||||
E_MAIL_FORMATTER_HEADER_FLAG_NOLINKS, "UTF-8");
|
||||
}
|
||||
@ -201,7 +204,7 @@ emfpe_headers_format (EMailFormatterExtension *extension,
|
||||
raw_header.value = g_strdup_printf ("%d", attachments_count);
|
||||
e_mail_formatter_format_header (
|
||||
formatter, str,
|
||||
CAMEL_MEDIUM (part->part), &raw_header,
|
||||
CAMEL_MEDIUM (mime_part), &raw_header,
|
||||
E_MAIL_FORMATTER_HEADER_FLAG_BOLD |
|
||||
E_MAIL_FORMATTER_HEADER_FLAG_NOLINKS, "UTF-8");
|
||||
g_free (raw_header.value);
|
||||
@ -216,6 +219,8 @@ emfpe_headers_format (EMailFormatterExtension *extension,
|
||||
g_string_free (str, TRUE);
|
||||
g_free (part_id_prefix);
|
||||
|
||||
g_object_unref (mime_part);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@ -59,6 +59,7 @@ emfqe_attachment_format (EMailFormatterExtension *extension,
|
||||
EMailPartAttachment *empa;
|
||||
EMailPart *attachment_view_part;
|
||||
CamelMimeFilterToHTMLFlags text_format_flags;
|
||||
CamelMimePart *mime_part;
|
||||
|
||||
empa = E_MAIL_PART_ATTACHMENT (part);
|
||||
|
||||
@ -74,9 +75,11 @@ emfqe_attachment_format (EMailFormatterExtension *extension,
|
||||
|
||||
text_format_flags =
|
||||
e_mail_formatter_get_text_format_flags (formatter);
|
||||
mime_part = e_mail_part_ref_mime_part (part);
|
||||
text = e_mail_part_describe (
|
||||
part->part,
|
||||
mime_part,
|
||||
empa ? empa->snoop_mime_type : part->mime_type);
|
||||
g_object_unref (mime_part);
|
||||
|
||||
html = camel_text_to_html (
|
||||
text,
|
||||
|
||||
@ -190,6 +190,7 @@ emqfe_headers_format (EMailFormatterExtension *extension,
|
||||
GCancellable *cancellable)
|
||||
{
|
||||
CamelContentType *ct;
|
||||
CamelMimePart *mime_part;
|
||||
const gchar *charset;
|
||||
GList *iter;
|
||||
GString *buffer;
|
||||
@ -198,7 +199,9 @@ emqfe_headers_format (EMailFormatterExtension *extension,
|
||||
if (!part)
|
||||
return FALSE;
|
||||
|
||||
ct = camel_mime_part_get_content_type ((CamelMimePart *) part->part);
|
||||
mime_part = e_mail_part_ref_mime_part (part);
|
||||
|
||||
ct = camel_mime_part_get_content_type (mime_part);
|
||||
charset = camel_content_type_param (ct, "charset");
|
||||
charset = camel_iconv_charset_name (charset);
|
||||
|
||||
@ -214,13 +217,13 @@ emqfe_headers_format (EMailFormatterExtension *extension,
|
||||
flags = h->flags & ~E_MAIL_FORMATTER_HEADER_FLAG_HTML;
|
||||
flags |= E_MAIL_FORMATTER_HEADER_FLAG_NOELIPSIZE;
|
||||
|
||||
for (raw_header = part->part->headers; raw_header; raw_header = raw_header->next) {
|
||||
for (raw_header = mime_part->headers; raw_header; raw_header = raw_header->next) {
|
||||
|
||||
if (g_strcmp0 (raw_header->name, h->name) == 0) {
|
||||
|
||||
emfqe_format_header (
|
||||
formatter, buffer,
|
||||
(CamelMedium *) part->part,
|
||||
CAMEL_MEDIUM (mime_part),
|
||||
raw_header, flags, charset);
|
||||
break;
|
||||
}
|
||||
@ -235,6 +238,8 @@ emqfe_headers_format (EMailFormatterExtension *extension,
|
||||
|
||||
g_string_free (buffer, TRUE);
|
||||
|
||||
g_object_unref (mime_part);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@ -56,13 +56,15 @@ emqfe_text_plain_format (EMailFormatterExtension *extension,
|
||||
CamelStream *filtered_stream;
|
||||
CamelMimeFilter *html_filter;
|
||||
CamelMimeFilter *sig_strip;
|
||||
CamelMimePart *mime_part;
|
||||
CamelContentType *type;
|
||||
EMailFormatterQuoteContext *qf_context;
|
||||
CamelMimeFilterToHTMLFlags text_flags;
|
||||
const gchar *format;
|
||||
guint32 rgb = 0x737373;
|
||||
|
||||
if (!part->part)
|
||||
mime_part = e_mail_part_ref_mime_part (part);
|
||||
if (mime_part == NULL)
|
||||
return FALSE;
|
||||
|
||||
qf_context = (EMailFormatterQuoteContext *) context;
|
||||
@ -76,7 +78,7 @@ emqfe_text_plain_format (EMailFormatterExtension *extension,
|
||||
text_flags |= CAMEL_MIME_FILTER_TOHTML_MARK_CITATION;
|
||||
|
||||
/* Check for RFC 2646 flowed text. */
|
||||
type = camel_mime_part_get_content_type (part->part);
|
||||
type = camel_mime_part_get_content_type (mime_part);
|
||||
if (camel_content_type_is (type, "text", "plain")
|
||||
&& (format = camel_content_type_param (type, "format"))
|
||||
&& !g_ascii_strcasecmp (format, "flowed"))
|
||||
@ -102,6 +104,8 @@ emqfe_text_plain_format (EMailFormatterExtension *extension,
|
||||
camel_stream_flush (filtered_stream, cancellable, NULL);
|
||||
g_object_unref (filtered_stream);
|
||||
|
||||
g_object_unref (mime_part);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@ -53,7 +53,9 @@ emfe_source_format (EMailFormatterExtension *extension,
|
||||
GString *buffer;
|
||||
CamelStream *filtered_stream;
|
||||
CamelMimeFilter *filter;
|
||||
CamelDataWrapper *dw = (CamelDataWrapper *) part->part;
|
||||
CamelMimePart *mime_part;
|
||||
|
||||
mime_part = e_mail_part_ref_mime_part (part);
|
||||
|
||||
filtered_stream = camel_stream_filter_new (stream);
|
||||
|
||||
@ -67,7 +69,7 @@ emfe_source_format (EMailFormatterExtension *extension,
|
||||
|
||||
buffer = g_string_new ("");
|
||||
|
||||
if (CAMEL_IS_MIME_MESSAGE (part->part)) {
|
||||
if (CAMEL_IS_MIME_MESSAGE (mime_part)) {
|
||||
g_string_append_printf (
|
||||
buffer,
|
||||
"<div class=\"part-container\" "
|
||||
@ -101,8 +103,8 @@ emfe_source_format (EMailFormatterExtension *extension,
|
||||
stream, "<code class=\"pre\">", cancellable, NULL);
|
||||
|
||||
camel_data_wrapper_write_to_stream_sync (
|
||||
dw, filtered_stream,
|
||||
cancellable, NULL);
|
||||
CAMEL_DATA_WRAPPER (mime_part),
|
||||
filtered_stream, cancellable, NULL);
|
||||
camel_stream_flush (filtered_stream, cancellable, NULL);
|
||||
g_object_unref (filtered_stream);
|
||||
|
||||
@ -111,12 +113,14 @@ emfe_source_format (EMailFormatterExtension *extension,
|
||||
|
||||
g_string_free (buffer, TRUE);
|
||||
|
||||
if (CAMEL_IS_MIME_MESSAGE (part->part)) {
|
||||
if (CAMEL_IS_MIME_MESSAGE (mime_part)) {
|
||||
camel_stream_write_string (stream, "</div>", cancellable, NULL);
|
||||
} else {
|
||||
camel_stream_write_string (stream, "</div></div>", cancellable, NULL);
|
||||
}
|
||||
|
||||
g_object_unref (mime_part);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@ -54,7 +54,6 @@ emfe_text_plain_format (EMailFormatterExtension *extension,
|
||||
CamelStream *stream,
|
||||
GCancellable *cancellable)
|
||||
{
|
||||
CamelDataWrapper *dw;
|
||||
CamelStream *filtered_stream;
|
||||
CamelMimeFilter *html_filter;
|
||||
gchar *content;
|
||||
@ -67,6 +66,8 @@ emfe_text_plain_format (EMailFormatterExtension *extension,
|
||||
if ((context->mode == E_MAIL_FORMATTER_MODE_RAW) ||
|
||||
(context->mode == E_MAIL_FORMATTER_MODE_PRINTING)) {
|
||||
CamelMimeFilterToHTMLFlags flags;
|
||||
CamelMimePart *mime_part;
|
||||
CamelDataWrapper *dw;
|
||||
|
||||
if (context->mode == E_MAIL_FORMATTER_MODE_RAW) {
|
||||
gchar *header;
|
||||
@ -83,9 +84,12 @@ emfe_text_plain_format (EMailFormatterExtension *extension,
|
||||
|
||||
flags = e_mail_formatter_get_text_format_flags (formatter);
|
||||
|
||||
dw = camel_medium_get_content (CAMEL_MEDIUM (part->part));
|
||||
if (!dw)
|
||||
mime_part = e_mail_part_ref_mime_part (part);
|
||||
dw = camel_medium_get_content (CAMEL_MEDIUM (mime_part));
|
||||
if (dw == NULL) {
|
||||
g_object_unref (mime_part);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Check for RFC 2646 flowed text. */
|
||||
if (camel_content_type_is (dw->mime_type, "text", "plain")
|
||||
@ -129,6 +133,8 @@ emfe_text_plain_format (EMailFormatterExtension *extension,
|
||||
cancellable, NULL);
|
||||
}
|
||||
|
||||
g_object_unref (mime_part);
|
||||
|
||||
return TRUE;
|
||||
|
||||
} else {
|
||||
|
||||
@ -1037,14 +1037,14 @@ e_mail_formatter_format_text (EMailFormatter *formatter,
|
||||
const gchar *charset = NULL;
|
||||
CamelMimeFilter *windows = NULL;
|
||||
CamelStream *mem_stream = NULL;
|
||||
CamelDataWrapper *dw;
|
||||
CamelMimePart *mime_part;
|
||||
CamelContentType *mime_type;
|
||||
|
||||
if (g_cancellable_is_cancelled (cancellable))
|
||||
return;
|
||||
|
||||
dw = CAMEL_DATA_WRAPPER (part->part);
|
||||
mime_type = dw->mime_type;
|
||||
mime_part = e_mail_part_ref_mime_part (part);
|
||||
mime_type = CAMEL_DATA_WRAPPER (mime_part)->mime_type;
|
||||
|
||||
if (formatter->priv->charset != NULL) {
|
||||
charset = formatter->priv->charset;
|
||||
@ -1067,7 +1067,8 @@ e_mail_formatter_format_text (EMailFormatter *formatter,
|
||||
CAMEL_STREAM_FILTER (filter_stream), windows);
|
||||
|
||||
camel_data_wrapper_decode_to_stream_sync (
|
||||
dw, filter_stream, cancellable, NULL);
|
||||
CAMEL_DATA_WRAPPER (mime_part),
|
||||
filter_stream, cancellable, NULL);
|
||||
camel_stream_flush (filter_stream, cancellable, NULL);
|
||||
g_object_unref (filter_stream);
|
||||
|
||||
@ -1088,7 +1089,7 @@ e_mail_formatter_format_text (EMailFormatter *formatter,
|
||||
}
|
||||
|
||||
camel_data_wrapper_decode_to_stream_sync (
|
||||
camel_medium_get_content (CAMEL_MEDIUM (dw)),
|
||||
camel_medium_get_content (CAMEL_MEDIUM (mime_part)),
|
||||
filter_stream, cancellable, NULL);
|
||||
camel_stream_flush (filter_stream, cancellable, NULL);
|
||||
g_object_unref (filter_stream);
|
||||
@ -1103,6 +1104,8 @@ e_mail_formatter_format_text (EMailFormatter *formatter,
|
||||
g_object_unref (windows);
|
||||
|
||||
g_object_unref (mem_stream);
|
||||
|
||||
g_object_unref (mime_part);
|
||||
}
|
||||
|
||||
gchar *
|
||||
|
||||
@ -31,6 +31,8 @@
|
||||
|
||||
#include "e-mail-part.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
struct _EMailPartPrivate {
|
||||
guint ref_cnt;
|
||||
gsize instance_size;
|
||||
@ -221,6 +223,29 @@ e_mail_part_id_has_suffix (EMailPart *part,
|
||||
return g_str_has_suffix (part->id, suffix);
|
||||
}
|
||||
|
||||
gboolean
|
||||
e_mail_part_id_has_substr (EMailPart *part,
|
||||
const gchar *substr)
|
||||
{
|
||||
g_return_val_if_fail (part != NULL, FALSE);
|
||||
g_return_val_if_fail (substr != NULL, FALSE);
|
||||
|
||||
return (strstr (part->id, substr) != NULL);
|
||||
}
|
||||
|
||||
CamelMimePart *
|
||||
e_mail_part_ref_mime_part (EMailPart *part)
|
||||
{
|
||||
CamelMimePart *mime_part = NULL;
|
||||
|
||||
g_return_val_if_fail (part != NULL, NULL);
|
||||
|
||||
if (part->part != NULL)
|
||||
mime_part = g_object_ref (part->part);
|
||||
|
||||
return mime_part;
|
||||
}
|
||||
|
||||
static EMailPartValidityPair *
|
||||
mail_part_find_validity_pair (EMailPart *part,
|
||||
guint32 validity_type)
|
||||
|
||||
@ -105,6 +105,7 @@ gboolean e_mail_part_id_has_suffix (EMailPart *part,
|
||||
const gchar *suffix);
|
||||
gboolean e_mail_part_id_has_substr (EMailPart *part,
|
||||
const gchar *substr);
|
||||
CamelMimePart * e_mail_part_ref_mime_part (EMailPart *part);
|
||||
void e_mail_part_update_validity (EMailPart *part,
|
||||
CamelCipherValidity *validity,
|
||||
guint32 validity_type);
|
||||
|
||||
@ -941,6 +941,7 @@ mail_display_plugin_widget_requested (WebKitWebView *web_view,
|
||||
e_attachment_button_set_expandable (
|
||||
E_ATTACHMENT_BUTTON (widget), FALSE);
|
||||
} else {
|
||||
CamelMimePart *mime_part;
|
||||
const CamelContentDisposition *disposition;
|
||||
|
||||
e_attachment_button_set_expandable (
|
||||
@ -957,11 +958,13 @@ mail_display_plugin_widget_requested (WebKitWebView *web_view,
|
||||
G_CALLBACK (attachment_button_expanded),
|
||||
display);
|
||||
|
||||
mime_part = e_mail_part_ref_mime_part (part);
|
||||
|
||||
/* Automatically expand attachments that have inline
|
||||
* disposition or the EMailParts have specific
|
||||
* force_inline flag set. */
|
||||
disposition =
|
||||
camel_mime_part_get_content_disposition (part->part);
|
||||
camel_mime_part_get_content_disposition (mime_part);
|
||||
if (!part->force_collapse &&
|
||||
(part->force_inline ||
|
||||
(g_strcmp0 (empa->snoop_mime_type, "message/rfc822") == 0) ||
|
||||
@ -977,6 +980,8 @@ mail_display_plugin_widget_requested (WebKitWebView *web_view,
|
||||
attachment_button_expanded (
|
||||
G_OBJECT (widget), NULL, display);
|
||||
}
|
||||
|
||||
g_object_unref (mime_part);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -142,10 +142,12 @@ handle_mail_request (GSimpleAsyncResult *res,
|
||||
if (part != NULL) {
|
||||
if (context.mode == E_MAIL_FORMATTER_MODE_CID) {
|
||||
CamelDataWrapper *dw;
|
||||
CamelMimePart *mime_part;
|
||||
CamelStream *raw_content;
|
||||
GByteArray *ba;
|
||||
|
||||
dw = camel_medium_get_content (CAMEL_MEDIUM (part->part));
|
||||
mime_part = e_mail_part_ref_mime_part (part);
|
||||
dw = camel_medium_get_content (CAMEL_MEDIUM (mime_part));
|
||||
g_return_if_fail (dw);
|
||||
|
||||
raw_content = camel_stream_mem_new ();
|
||||
@ -155,6 +157,8 @@ handle_mail_request (GSimpleAsyncResult *res,
|
||||
camel_stream_write (request->priv->output_stream, (gchar *) ba->data, ba->len, cancellable, NULL);
|
||||
|
||||
g_object_unref (raw_content);
|
||||
|
||||
g_object_unref (mime_part);
|
||||
} else {
|
||||
if (mime_type == NULL)
|
||||
mime_type = part->mime_type;
|
||||
|
||||
@ -176,6 +176,7 @@ play_clicked (GtkWidget *button,
|
||||
if (!part->filename) {
|
||||
CamelStream *stream;
|
||||
CamelDataWrapper *data;
|
||||
CamelMimePart *mime_part;
|
||||
GError *error = NULL;
|
||||
gint argc = 1;
|
||||
const gchar *argv[] = { "org_gnome_audio_inline", NULL };
|
||||
@ -187,9 +188,11 @@ play_clicked (GtkWidget *button,
|
||||
|
||||
stream = camel_stream_fs_new_with_name (
|
||||
part->filename, O_RDWR | O_CREAT | O_TRUNC, 0600, NULL);
|
||||
data = camel_medium_get_content (CAMEL_MEDIUM (part->parent.part));
|
||||
mime_part = e_mail_part_ref_mime_part (E_MAIL_PART (part));
|
||||
data = camel_medium_get_content (CAMEL_MEDIUM (mime_part));
|
||||
camel_data_wrapper_decode_to_stream_sync (data, stream, NULL, NULL);
|
||||
camel_stream_flush (stream, NULL, NULL);
|
||||
g_object_unref (mime_part);
|
||||
g_object_unref (stream);
|
||||
|
||||
d (printf ("audio inline formatter: init gst playbin\n"));
|
||||
|
||||
@ -54,6 +54,9 @@ get_syntax (EMailPart *part,
|
||||
{
|
||||
gchar *syntax = NULL;
|
||||
CamelContentType *ct = NULL;
|
||||
CamelMimePart *mime_part;
|
||||
|
||||
mime_part = e_mail_part_ref_mime_part (part);
|
||||
|
||||
if (uri) {
|
||||
SoupURI *soup_uri = soup_uri_new (uri);
|
||||
@ -69,7 +72,7 @@ get_syntax (EMailPart *part,
|
||||
|
||||
/* Try to detect syntax by content-type first */
|
||||
if (syntax == NULL) {
|
||||
ct = camel_mime_part_get_content_type (part->part);
|
||||
ct = camel_mime_part_get_content_type (mime_part);
|
||||
if (ct) {
|
||||
gchar *mime_type = camel_content_type_simple (ct);
|
||||
|
||||
@ -87,7 +90,7 @@ get_syntax (EMailPart *part,
|
||||
(camel_content_type_is (ct, "text", "plain"))))) {
|
||||
const gchar *filename;
|
||||
|
||||
filename = camel_mime_part_get_filename (part->part);
|
||||
filename = camel_mime_part_get_filename (mime_part);
|
||||
if (filename != NULL) {
|
||||
gchar *ext = g_strrstr (filename, ".");
|
||||
if (ext != NULL) {
|
||||
@ -102,6 +105,8 @@ get_syntax (EMailPart *part,
|
||||
syntax = g_strdup ("txt");
|
||||
}
|
||||
|
||||
g_object_unref (mime_part);
|
||||
|
||||
return syntax;
|
||||
}
|
||||
|
||||
@ -113,16 +118,18 @@ emfe_text_highlight_format (EMailFormatterExtension *extension,
|
||||
CamelStream *stream,
|
||||
GCancellable *cancellable)
|
||||
{
|
||||
CamelMimePart *mime_part;
|
||||
CamelContentType *ct;
|
||||
gboolean success = FALSE;
|
||||
|
||||
ct = camel_mime_part_get_content_type (part->part);
|
||||
mime_part = e_mail_part_ref_mime_part (part);
|
||||
ct = camel_mime_part_get_content_type (mime_part);
|
||||
|
||||
/* Don't format text/html unless it's an attachment */
|
||||
if (ct && camel_content_type_is (ct, "text", "html")) {
|
||||
const CamelContentDisposition *disp;
|
||||
|
||||
disp = camel_mime_part_get_content_disposition (part->part);
|
||||
disp = camel_mime_part_get_content_disposition (mime_part);
|
||||
|
||||
if (disp == NULL)
|
||||
goto exit;
|
||||
@ -136,7 +143,7 @@ emfe_text_highlight_format (EMailFormatterExtension *extension,
|
||||
CamelStream *filter_stream;
|
||||
CamelMimeFilter *mime_filter;
|
||||
|
||||
dw = camel_medium_get_content (CAMEL_MEDIUM (part->part));
|
||||
dw = camel_medium_get_content (CAMEL_MEDIUM (mime_part));
|
||||
if (dw == NULL)
|
||||
goto exit;
|
||||
|
||||
@ -181,7 +188,7 @@ emfe_text_highlight_format (EMailFormatterExtension *extension,
|
||||
"--failsafe",
|
||||
NULL };
|
||||
|
||||
dw = camel_medium_get_content (CAMEL_MEDIUM (part->part));
|
||||
dw = camel_medium_get_content (CAMEL_MEDIUM (mime_part));
|
||||
if (dw == NULL)
|
||||
goto exit;
|
||||
|
||||
@ -349,6 +356,8 @@ emfe_text_highlight_format (EMailFormatterExtension *extension,
|
||||
success = TRUE;
|
||||
|
||||
exit:
|
||||
g_object_unref (mime_part);
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user