aboutsummaryrefslogtreecommitdiffstats
path: root/mail/em-composer-utils.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2013-06-02 23:03:34 +0800
committerMatthew Barnes <mbarnes@redhat.com>2013-06-03 04:17:30 +0800
commit98dd0ac727e7bff5ad056427fa04d579f838ba75 (patch)
tree0cc92af17323c278265bb857e22812389531d5a3 /mail/em-composer-utils.c
parent8f5a1d2c718089b7b5734dbe178ef6a3cbd3da5a (diff)
downloadgsoc2013-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.c36
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);