diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2013-06-02 23:03:34 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2013-06-03 04:17:30 +0800 |
commit | 98dd0ac727e7bff5ad056427fa04d579f838ba75 (patch) | |
tree | 0cc92af17323c278265bb857e22812389531d5a3 /mail/em-composer-utils.c | |
parent | 8f5a1d2c718089b7b5734dbe178ef6a3cbd3da5a (diff) | |
download | gsoc2013-evolution-98dd0ac727e7bff5ad056427fa04d579f838ba75.tar gsoc2013-evolution-98dd0ac727e7bff5ad056427fa04d579f838ba75.tar.gz gsoc2013-evolution-98dd0ac727e7bff5ad056427fa04d579f838ba75.tar.bz2 gsoc2013-evolution-98dd0ac727e7bff5ad056427fa04d579f838ba75.tar.lz gsoc2013-evolution-98dd0ac727e7bff5ad056427fa04d579f838ba75.tar.xz gsoc2013-evolution-98dd0ac727e7bff5ad056427fa04d579f838ba75.tar.zst gsoc2013-evolution-98dd0ac727e7bff5ad056427fa04d579f838ba75.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()
(cherry picked from commit f5e47561f995ca50f2bbd45b940e0a10100281a5)
Conflicts:
mail/em-composer-utils.c
Diffstat (limited to 'mail/em-composer-utils.c')
-rw-r--r-- | mail/em-composer-utils.c | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index f1c219b41c..07a378b52d 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -1525,6 +1525,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; @@ -1536,7 +1537,11 @@ edit_messages_cb (GObject *source_object, camel_medium_remove_header (CAMEL_MEDIUM (value), "X-Mailer"); - em_utils_edit_message (shell, folder, message, message_uid); + composer = em_utils_edit_message ( + shell, folder, message, message_uid); + + e_mail_reader_composer_created ( + async_context->reader, composer, message); } g_hash_table_unref (hash_table); @@ -1750,6 +1755,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; @@ -1785,9 +1792,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); @@ -1966,15 +1992,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); |