From f5e47561f995ca50f2bbd45b940e0a10100281a5 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sun, 2 Jun 2013 11:03:34 -0400 Subject: EMailReader: Add a "composer-created" signal. Emitted to indicate a composer window was created in response to a user action on the EMailReader. Examples of such actions include replying, forwarding, and starting a new message. If applicable, the source message (i.e. the message being replied to or forwarded) is included in the signal emission. New functions: e_mail_reader_composer_created() --- mail/em-composer-utils.c | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 6c60925c3f..a849f2830f 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -1545,6 +1545,7 @@ edit_messages_cb (GObject *source_object, g_hash_table_iter_init (&iter, hash_table); while (g_hash_table_iter_next (&iter, &key, &value)) { + EMsgComposer *composer; CamelMimeMessage *message; const gchar *message_uid; @@ -1556,9 +1557,12 @@ edit_messages_cb (GObject *source_object, camel_medium_remove_header (CAMEL_MEDIUM (value), "X-Mailer"); - em_utils_edit_message ( + composer = em_utils_edit_message ( shell, folder, message, message_uid, async_context->keep_signature); + + e_mail_reader_composer_created ( + async_context->reader, composer, message); } g_hash_table_unref (hash_table); @@ -1775,6 +1779,8 @@ forward_attached_cb (GObject *source_object, EActivity *activity; EAlertSink *alert_sink; CamelMimePart *part; + CamelDataWrapper *content; + EMsgComposer *composer; gchar *subject = NULL; AsyncContext *async_context; GError *local_error = NULL; @@ -1810,9 +1816,28 @@ forward_attached_cb (GObject *source_object, backend = e_mail_reader_get_backend (async_context->reader); - forward_attached ( + composer = forward_attached ( backend, folder, async_context->ptr_array, part, subject); + content = camel_medium_get_content (CAMEL_MEDIUM (part)); + if (CAMEL_IS_MIME_MESSAGE (content)) { + e_mail_reader_composer_created ( + async_context->reader, composer, + CAMEL_MIME_MESSAGE (content)); + } else { + /* XXX What to do for the multipart/digest case? + * Extract the first message from the digest, or + * change the argument type to CamelMimePart and + * just pass the whole digest through? + * + * This signal is primarily serving EMailBrowser, + * which can only forward one message at a time. + * So for the moment it doesn't matter, but still + * something to consider. */ + e_mail_reader_composer_created ( + async_context->reader, composer, NULL); + } + e_activity_set_state (activity, E_ACTIVITY_COMPLETED); g_object_unref (part); @@ -1991,15 +2016,19 @@ forward_got_messages_cb (GObject *source_object, g_hash_table_iter_init (&iter, hash_table); while (g_hash_table_iter_next (&iter, &key, &value)) { + EMsgComposer *composer; CamelMimeMessage *message; const gchar *message_uid; message_uid = (const gchar *) key; message = CAMEL_MIME_MESSAGE (value); - em_utils_forward_message ( + composer = em_utils_forward_message ( backend, message, async_context->style, folder, message_uid); + + e_mail_reader_composer_created ( + async_context->reader, composer, message); } g_hash_table_unref (hash_table); -- cgit v1.2.3