From: Jose Dapena Paz Date: Sat, 22 Aug 2009 14:46:48 +0000 (+0200) Subject: New virtual method modest_account_protocol_decode_part_to_stream, to X-Git-Tag: 3.0.17-rc46~5^2~2 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=30eec4a53fa8e90ee9a26b202f5bffb28315b65d New virtual method modest_account_protocol_decode_part_to_stream, to allow plugins to provide specific decoding for attachments. --- diff --git a/src/modest-account-protocol.c b/src/modest-account-protocol.c index c527d43..4c028a1 100644 --- a/src/modest-account-protocol.c +++ b/src/modest-account-protocol.c @@ -91,6 +91,10 @@ static void modest_account_protocol_check_support_default (ModestAccountProtocol gpointer userdata); static void modest_account_protocol_cancel_check_support_default (ModestAccountProtocol *self); static void modest_account_protocol_wizard_finished_default (ModestAccountProtocol *self); +static gboolean modest_account_protocol_decode_part_to_stream_default (ModestAccountProtocol *protocol, + TnyMimePart *part, + TnyStream *stream, + GError *error); static gboolean modest_account_protocol_is_supported_default (ModestAccountProtocol *self); static gchar *modest_account_protocol_get_from_default (ModestAccountProtocol *self, const gchar *account_id, @@ -211,6 +215,8 @@ modest_account_protocol_class_init (ModestAccountProtocolClass *klass) modest_account_protocol_cancel_check_support_default; account_class->wizard_finished = modest_account_protocol_wizard_finished_default; + account_class->decode_part_to_stream = + modest_account_protocol_decode_part_to_stream_default; account_class->get_from = modest_account_protocol_get_from_default; account_class->get_from_list = @@ -687,6 +693,28 @@ modest_account_protocol_wizard_finished (ModestAccountProtocol *self) MODEST_ACCOUNT_PROTOCOL_GET_CLASS (self)->wizard_finished (self); } +static gboolean +modest_account_protocol_decode_part_to_stream_default (ModestAccountProtocol *self, + TnyMimePart *part, + TnyStream *stream, + GError *error) +{ + /* By default account protocols do not handle themselves the transfer */ + return FALSE; +} + +gboolean +modest_account_protocol_decode_part_to_stream (ModestAccountProtocol *self, + TnyMimePart *part, + TnyStream *stream, + GError *error) +{ + return MODEST_ACCOUNT_PROTOCOL_GET_CLASS (self)->decode_part_to_stream (self, + part, + stream, + error); +} + gchar * modest_account_protocol_get_from (ModestAccountProtocol *self, const gchar *account_id, diff --git a/src/modest-account-protocol.h b/src/modest-account-protocol.h index e021753..b7989d3 100644 --- a/src/modest-account-protocol.h +++ b/src/modest-account-protocol.h @@ -100,9 +100,12 @@ struct _ModestAccountProtocolClass { gpointer userdata); void (*cancel_check_support) (ModestAccountProtocol *self); void (*wizard_finished) (ModestAccountProtocol *self); + gboolean (*decode_part_to_stream) (ModestAccountProtocol *protocol, + TnyMimePart *part, + TnyStream *stream, + GError *error); /* Padding for future expansions */ - void (*_reserved6) (void); void (*_reserved7) (void); void (*_reserved8) (void); void (*_reserved9) (void); @@ -482,6 +485,28 @@ void modest_account_protocol_save_remote_draft (ModestAccountProtocol *self, ModestAccountProtocolSaveRemoteDraftCallback callback, gpointer userdata); +/** + * modest_account_protocol_decode_part_to_stream: + * @self: a #ModestAccountProtocol + * @part: a #TnyMimePart + * @stream: a #TnyStream + * @error: a #GError + * + * This virtual method delegates on the account protocol to decode @part + * into @stream. It just allows the provider to decode it as it needs + * (i.e. when the original message has a fake attachment, and provider + * can return the real attachment). + * + * Returns: %TRUE if @protocol does the decode operation, %FALSE if modest + * should do it. + */ +gboolean +modest_account_protocol_decode_part_to_stream (ModestAccountProtocol *protocol, + TnyMimePart *part, + TnyStream *stream, + GError *error); + + G_END_DECLS