diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2013-06-02 23:03:34 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2013-06-03 01:22:41 +0800 |
commit | f5e47561f995ca50f2bbd45b940e0a10100281a5 (patch) | |
tree | 16386f25f49632fce70256294451993f65315480 /mail/em-composer-utils.c | |
parent | 1570f53d1eab0a750680df72be3363659f11db46 (diff) | |
download | gsoc2013-evolution-f5e47561f995ca50f2bbd45b940e0a10100281a5.tar gsoc2013-evolution-f5e47561f995ca50f2bbd45b940e0a10100281a5.tar.gz gsoc2013-evolution-f5e47561f995ca50f2bbd45b940e0a10100281a5.tar.bz2 gsoc2013-evolution-f5e47561f995ca50f2bbd45b940e0a10100281a5.tar.lz gsoc2013-evolution-f5e47561f995ca50f2bbd45b940e0a10100281a5.tar.xz gsoc2013-evolution-f5e47561f995ca50f2bbd45b940e0a10100281a5.tar.zst gsoc2013-evolution-f5e47561f995ca50f2bbd45b940e0a10100281a5.zip |
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()
Diffstat (limited to 'mail/em-composer-utils.c')
-rw-r--r-- | mail/em-composer-utils.c | 35 |
1 files changed, 32 insertions, 3 deletions
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); |