[evolution/gnome-3-8] Add e_mail_reader_edit_messages().



commit e6c6ca8770bf6a04334da2942bd82753c62fec78
Author: Matthew Barnes <mbarnes redhat com>
Date:   Sun Jun 2 14:30:06 2013 -0400

    Add e_mail_reader_edit_messages().
    
    Replaces em_utils_edit_messages().
    
    (cherry picked from commit 13b2bd263cc68e60839d04f801fd8b6f4b80b3d2)
    
    Conflicts:
        mail/e-mail-folder-pane.c
        mail/e-mail-reader-utils.c
        mail/e-mail-reader.c
        mail/em-composer-utils.c
        mail/em-composer-utils.h

 mail/e-mail-folder-pane.c  |    4 +-
 mail/e-mail-reader-utils.c |  115 ++++++++++++++++++++++++++++++++++++++++++-
 mail/e-mail-reader-utils.h |    4 ++
 mail/e-mail-reader.c       |    2 +-
 mail/em-composer-utils.c   |  117 --------------------------------------------
 mail/em-composer-utils.h   |    4 --
 6 files changed, 120 insertions(+), 126 deletions(-)
---
diff --git a/mail/e-mail-folder-pane.c b/mail/e-mail-folder-pane.c
index 985f47b..ff84e8d 100644
--- a/mail/e-mail-folder-pane.c
+++ b/mail/e-mail-folder-pane.c
@@ -100,7 +100,7 @@ mail_paned_view_open_selected_mail (EMailPanedView *view)
        if (em_utils_folder_is_drafts (registry, folder) ||
                em_utils_folder_is_outbox (registry, folder) ||
                em_utils_folder_is_templates (registry, folder)) {
-               em_utils_edit_messages (reader, folder, uids, TRUE);
+               e_mail_reader_edit_messages (reader, folder, uids, TRUE);
                g_ptr_array_unref (uids);
                return 0;
        }
@@ -134,7 +134,7 @@ mail_paned_view_open_selected_mail (EMailPanedView *view)
                        edits = g_ptr_array_new_with_free_func (
                                (GDestroyNotify) g_free);
                        g_ptr_array_add (edits, real_uid);
-                       em_utils_edit_messages (
+                       e_mail_reader_edit_messages (
                                reader, real_folder, edits, TRUE);
                        g_ptr_array_unref (edits);
                } else {
diff --git a/mail/e-mail-reader-utils.c b/mail/e-mail-reader-utils.c
index 2e0ebfa..95ec051 100644
--- a/mail/e-mail-reader-utils.c
+++ b/mail/e-mail-reader-utils.c
@@ -73,6 +73,7 @@ struct _AsyncContext {
        GtkPrintOperationAction print_action;
        const gchar *filter_source;
        gint filter_type;
+       gboolean replace;
 };
 
 static void
@@ -822,7 +823,7 @@ e_mail_reader_open_selected (EMailReader *reader)
        if (em_utils_folder_is_drafts (registry, folder) ||
                em_utils_folder_is_outbox (registry, folder) ||
                em_utils_folder_is_templates (registry, folder)) {
-               em_utils_edit_messages (reader, folder, uids, TRUE);
+               e_mail_reader_edit_messages (reader, folder, uids, TRUE);
                return uids->len;
        }
 
@@ -854,7 +855,7 @@ e_mail_reader_open_selected (EMailReader *reader)
 
                        edits = g_ptr_array_new ();
                        g_ptr_array_add (edits, real_uid);
-                       em_utils_edit_messages (
+                       e_mail_reader_edit_messages (
                                reader, real_folder, edits, TRUE);
                } else {
                        g_free (real_uid);
@@ -1275,6 +1276,116 @@ e_mail_reader_remove_duplicates (EMailReader *reader)
        g_ptr_array_unref (uids);
 }
 
+static void
+mail_reader_edit_messages_cb (GObject *source_object,
+                              GAsyncResult *result,
+                              gpointer user_data)
+{
+       CamelFolder *folder;
+       EShell *shell;
+       EMailBackend *backend;
+       EActivity *activity;
+       EAlertSink *alert_sink;
+       GHashTable *hash_table;
+       GHashTableIter iter;
+       gpointer key, value;
+       AsyncContext *async_context;
+       GError *local_error = NULL;
+
+       folder = CAMEL_FOLDER (source_object);
+       async_context = (AsyncContext *) user_data;
+
+       activity = async_context->activity;
+       alert_sink = e_activity_get_alert_sink (activity);
+
+       hash_table = e_mail_folder_get_multiple_messages_finish (
+               folder, result, &local_error);
+
+       /* Sanity check. */
+       g_return_if_fail (
+               ((hash_table != NULL) && (local_error == NULL)) ||
+               ((hash_table == NULL) && (local_error != NULL)));
+
+       if (e_activity_handle_cancellation (activity, local_error)) {
+               g_error_free (local_error);
+               goto exit;
+
+       } else if (local_error != NULL) {
+               e_alert_submit (
+                       alert_sink,
+                       "mail:get-multiple-messages",
+                       local_error->message, NULL);
+               g_error_free (local_error);
+               goto exit;
+       }
+
+       backend = e_mail_reader_get_backend (async_context->reader);
+       shell = e_shell_backend_get_shell (E_SHELL_BACKEND (backend));
+
+       /* Open each message in its own composer window. */
+
+       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 = NULL;
+
+               if (async_context->replace)
+                       message_uid = (const gchar *) key;
+
+               message = CAMEL_MIME_MESSAGE (value);
+
+               camel_medium_remove_header (
+                       CAMEL_MEDIUM (message), "X-Mailer");
+
+               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);
+
+       e_activity_set_state (activity, E_ACTIVITY_COMPLETED);
+
+exit:
+       async_context_free (async_context);
+}
+
+void
+e_mail_reader_edit_messages (EMailReader *reader,
+                             CamelFolder *folder,
+                             GPtrArray *uids,
+                             gboolean replace)
+{
+       EActivity *activity;
+       GCancellable *cancellable;
+       AsyncContext *async_context;
+
+       g_return_if_fail (E_IS_MAIL_READER (reader));
+       g_return_if_fail (CAMEL_IS_FOLDER (folder));
+       g_return_if_fail (uids != NULL);
+
+       activity = e_mail_reader_new_activity (reader);
+       cancellable = e_activity_get_cancellable (activity);
+
+       async_context = g_slice_new0 (AsyncContext);
+       async_context->activity = g_object_ref (activity);
+       async_context->reader = g_object_ref (reader);
+       async_context->replace = replace;
+
+       e_mail_folder_get_multiple_messages (
+               folder, uids,
+               G_PRIORITY_DEFAULT,
+               cancellable,
+               mail_reader_edit_messages_cb,
+               async_context);
+
+       g_object_unref (activity);
+}
+
 /* Helper for e_mail_reader_reply_to_message()
  * XXX This function belongs in e-html-utils.c */
 static gboolean
diff --git a/mail/e-mail-reader-utils.h b/mail/e-mail-reader-utils.h
index 110c5df..9ccb732 100644
--- a/mail/e-mail-reader-utils.h
+++ b/mail/e-mail-reader-utils.h
@@ -68,6 +68,10 @@ void         e_mail_reader_print             (EMailReader *reader,
 void           e_mail_reader_remove_attachments
                                                (EMailReader *reader);
 void           e_mail_reader_remove_duplicates (EMailReader *reader);
+void           e_mail_reader_edit_messages     (EMailReader *reader,
+                                                CamelFolder *folder,
+                                                GPtrArray *uids,
+                                                gboolean replace);
 void           e_mail_reader_reply_to_message  (EMailReader *reader,
                                                 CamelMimeMessage *message,
                                                 EMailReplyType reply_type);
diff --git a/mail/e-mail-reader.c b/mail/e-mail-reader.c
index d38ef28..d5e01d5 100644
--- a/mail/e-mail-reader.c
+++ b/mail/e-mail-reader.c
@@ -874,7 +874,7 @@ action_mail_message_edit_cb (GtkAction *action,
        g_ptr_array_set_free_func (uids, (GDestroyNotify) g_free);
 
        replace = em_utils_folder_is_drafts (registry, folder);
-       em_utils_edit_messages (reader, folder, uids, replace);
+       e_mail_reader_edit_messages (reader, folder, uids, replace);
 
        g_ptr_array_unref (uids);
 }
diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c
index 850cc15..6bcceb2 100644
--- a/mail/em-composer-utils.c
+++ b/mail/em-composer-utils.c
@@ -80,7 +80,6 @@ struct _AsyncContext {
        EMailForwardStyle style;
        gchar *folder_uri;
        gchar *message_uid;
-       gboolean replace;
 };
 
 struct _ForwardData {
@@ -1471,122 +1470,6 @@ em_utils_edit_message (EShell *shell,
 }
 
 static void
-edit_messages_cb (GObject *source_object,
-                  GAsyncResult *result,
-                  gpointer user_data)
-{
-       CamelFolder *folder;
-       EShell *shell;
-       EMailBackend *backend;
-       EActivity *activity;
-       EAlertSink *alert_sink;
-       GHashTable *hash_table;
-       GHashTableIter iter;
-       gpointer key, value;
-       AsyncContext *async_context;
-       GError *local_error = NULL;
-
-       folder = CAMEL_FOLDER (source_object);
-       async_context = (AsyncContext *) user_data;
-
-       activity = async_context->activity;
-       alert_sink = e_activity_get_alert_sink (activity);
-
-       hash_table = e_mail_folder_get_multiple_messages_finish (
-               folder, result, &local_error);
-
-       /* Sanity check. */
-       g_return_if_fail (
-               ((hash_table != NULL) && (local_error == NULL)) ||
-               ((hash_table == NULL) && (local_error != NULL)));
-
-       if (e_activity_handle_cancellation (activity, local_error)) {
-               g_error_free (local_error);
-               goto exit;
-
-       } else if (local_error != NULL) {
-               e_alert_submit (
-                       alert_sink,
-                       "mail:get-multiple-messages",
-                       local_error->message, NULL);
-               g_error_free (local_error);
-               goto exit;
-       }
-
-       backend = e_mail_reader_get_backend (async_context->reader);
-       shell = e_shell_backend_get_shell (E_SHELL_BACKEND (backend));
-
-       /* Open each message in its own composer window. */
-
-       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;
-
-               if (!async_context->replace)
-                       key = NULL;
-
-               message_uid = (const gchar *) key;
-               message = CAMEL_MIME_MESSAGE (value);
-
-               camel_medium_remove_header (CAMEL_MEDIUM (value), "X-Mailer");
-
-               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);
-
-       e_activity_set_state (activity, E_ACTIVITY_COMPLETED);
-
-exit:
-       async_context_free (async_context);
-}
-
-/**
- * em_utils_edit_messages:
- * @reader: an #EMailReader
- * @folder: folder containing messages to edit
- * @uids: uids of messages to edit
- * @replace: replace the existing message(s) when sent or saved.
- *
- * Opens a composer for each message to be edited.
- **/
-void
-em_utils_edit_messages (EMailReader *reader,
-                        CamelFolder *folder,
-                        GPtrArray *uids,
-                        gboolean replace)
-{
-       EActivity *activity;
-       AsyncContext *async_context;
-       GCancellable *cancellable;
-
-       g_return_if_fail (E_IS_MAIL_READER (reader));
-       g_return_if_fail (CAMEL_IS_FOLDER (folder));
-       g_return_if_fail (uids != NULL);
-
-       activity = e_mail_reader_new_activity (reader);
-       cancellable = e_activity_get_cancellable (activity);
-
-       async_context = g_slice_new0 (AsyncContext);
-       async_context->activity = activity;
-       async_context->reader = g_object_ref (reader);
-       async_context->ptr_array = g_ptr_array_ref (uids);
-       async_context->replace = replace;
-
-       e_mail_folder_get_multiple_messages (
-               folder, uids, G_PRIORITY_DEFAULT,
-               cancellable, edit_messages_cb,
-               async_context);
-}
-
-static void
 emu_update_composers_security (EMsgComposer *composer,
                                guint32 validity_found)
 {
diff --git a/mail/em-composer-utils.h b/mail/em-composer-utils.h
index d489f5e..e79c0aa 100644
--- a/mail/em-composer-utils.h
+++ b/mail/em-composer-utils.h
@@ -42,10 +42,6 @@ EMsgComposer *       em_utils_edit_message           (EShell *shell,
                                                 CamelFolder *folder,
                                                 CamelMimeMessage *message,
                                                 const gchar *message_uid);
-void           em_utils_edit_messages          (EMailReader *reader,
-                                                CamelFolder *folder,
-                                                GPtrArray *uids,
-                                                gboolean replace);
 EMsgComposer * em_utils_forward_message        (EMailBackend *backend,
                                                 CamelMimeMessage *message,
                                                 EMailForwardStyle style,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]