diff options
-rw-r--r-- | mail/e-mail-reader-utils.c | 115 | ||||
-rw-r--r-- | mail/e-mail-reader.c | 25 | ||||
-rw-r--r-- | mail/em-utils.c | 9 | ||||
-rw-r--r-- | mail/message-list.c | 4 | ||||
-rw-r--r-- | modules/mail/e-mail-attachment-handler.c | 6 | ||||
-rw-r--r-- | modules/mail/e-mail-shell-view-private.c | 42 | ||||
-rw-r--r-- | plugins/mailing-list-actions/mailing-list-actions.c | 9 | ||||
-rw-r--r-- | plugins/templates/templates.c | 35 |
8 files changed, 137 insertions, 108 deletions
diff --git a/mail/e-mail-reader-utils.c b/mail/e-mail-reader-utils.c index 194758489e..12a5991512 100644 --- a/mail/e-mail-reader-utils.c +++ b/mail/e-mail-reader-utils.c @@ -387,39 +387,36 @@ void e_mail_reader_print (EMailReader *reader, GtkPrintOperationAction action) { + EActivity *activity; + AsyncContext *context; + GCancellable *cancellable; CamelFolder *folder; GPtrArray *uids; + const gchar *message_uid; g_return_if_fail (E_IS_MAIL_READER (reader)); folder = e_mail_reader_get_folder (reader); - g_return_if_fail (folder != NULL); + g_return_if_fail (CAMEL_IS_FOLDER (folder)); /* XXX Learn to handle len > 1. */ uids = e_mail_reader_get_selected_uids (reader); - g_return_if_fail (uids != NULL); + g_return_if_fail (uids != NULL && uids->len == 1); + message_uid = g_ptr_array_index (uids, 0); - if (uids->len == 1) { - EActivity *activity; - AsyncContext *context; - GCancellable *cancellable; - const gchar *message_uid; - - activity = e_mail_reader_new_activity (reader); - cancellable = e_activity_get_cancellable (activity); - message_uid = uids->pdata[0]; - - context = g_slice_new0 (AsyncContext); - context->activity = activity; - context->reader = g_object_ref (reader); - context->message_uid = g_strdup (message_uid); - context->print_action = action; - - camel_folder_get_message ( - folder, message_uid, G_PRIORITY_DEFAULT, - cancellable, (GAsyncReadyCallback) - mail_reader_print_cb, context); - } + activity = e_mail_reader_new_activity (reader); + cancellable = e_activity_get_cancellable (activity); + + context = g_slice_new0 (AsyncContext); + context->activity = activity; + context->reader = g_object_ref (reader); + context->message_uid = g_strdup (message_uid); + context->print_action = action; + + camel_folder_get_message ( + folder, message_uid, G_PRIORITY_DEFAULT, + cancellable, (GAsyncReadyCallback) + mail_reader_print_cb, context); em_utils_uids_free (uids); } @@ -773,13 +770,18 @@ void e_mail_reader_create_filter_from_selected (EMailReader *reader, gint filter_type) { + EActivity *activity; + AsyncContext *context; + GCancellable *cancellable; CamelFolder *folder; - const gchar *filter_source; GPtrArray *uids; + const gchar *filter_source; + const gchar *message_uid; g_return_if_fail (E_IS_MAIL_READER (reader)); folder = e_mail_reader_get_folder (reader); + g_return_if_fail (CAMEL_IS_FOLDER (folder)); if (em_utils_folder_is_sent (folder)) filter_source = E_FILTER_SOURCE_OUTGOING; @@ -789,26 +791,22 @@ e_mail_reader_create_filter_from_selected (EMailReader *reader, filter_source = E_FILTER_SOURCE_INCOMING; uids = e_mail_reader_get_selected_uids (reader); + g_return_if_fail (uids != NULL && uids->len == 1); + message_uid = g_ptr_array_index (uids, 0); - if (uids->len == 1) { - EActivity *activity; - AsyncContext *context; - GCancellable *cancellable; - - activity = e_mail_reader_new_activity (reader); - cancellable = e_activity_get_cancellable (activity); + activity = e_mail_reader_new_activity (reader); + cancellable = e_activity_get_cancellable (activity); - context = g_slice_new0 (AsyncContext); - context->activity = activity; - context->reader = g_object_ref (reader); - context->filter_source = filter_source; - context->filter_type = filter_type; + context = g_slice_new0 (AsyncContext); + context->activity = activity; + context->reader = g_object_ref (reader); + context->filter_source = filter_source; + context->filter_type = filter_type; - camel_folder_get_message ( - folder, uids->pdata[0], G_PRIORITY_DEFAULT, - cancellable, (GAsyncReadyCallback) - mail_reader_create_filter_cb, context); - } + camel_folder_get_message ( + folder, message_uid, G_PRIORITY_DEFAULT, + cancellable, (GAsyncReadyCallback) + mail_reader_create_filter_cb, context); em_utils_uids_free (uids); } @@ -870,34 +868,35 @@ void e_mail_reader_create_vfolder_from_selected (EMailReader *reader, gint vfolder_type) { + EActivity *activity; + AsyncContext *context; + GCancellable *cancellable; CamelFolder *folder; GPtrArray *uids; + const gchar *message_uid; g_return_if_fail (E_IS_MAIL_READER (reader)); folder = e_mail_reader_get_folder (reader); + g_return_if_fail (CAMEL_IS_FOLDER (folder)); uids = e_mail_reader_get_selected_uids (reader); + g_return_if_fail (uids != NULL && uids->len == 1); + message_uid = g_ptr_array_index (uids, 0); - if (uids->len == 1) { - EActivity *activity; - AsyncContext *context; - GCancellable *cancellable; - - activity = e_mail_reader_new_activity (reader); - cancellable = e_activity_get_cancellable (activity); + activity = e_mail_reader_new_activity (reader); + cancellable = e_activity_get_cancellable (activity); - context = g_slice_new0 (AsyncContext); - context->activity = activity; - context->folder = g_object_ref (folder); - context->reader = g_object_ref (reader); - context->filter_type = vfolder_type; + context = g_slice_new0 (AsyncContext); + context->activity = activity; + context->folder = g_object_ref (folder); + context->reader = g_object_ref (reader); + context->filter_type = vfolder_type; - camel_folder_get_message ( - folder, uids->pdata[0], G_PRIORITY_DEFAULT, - cancellable, (GAsyncReadyCallback) - mail_reader_create_vfolder_cb, context); - } + camel_folder_get_message ( + folder, message_uid, G_PRIORITY_DEFAULT, + cancellable, (GAsyncReadyCallback) + mail_reader_create_vfolder_cb, context); em_utils_uids_free (uids); } diff --git a/mail/e-mail-reader.c b/mail/e-mail-reader.c index 673a5b206f..a281634a9f 100644 --- a/mail/e-mail-reader.c +++ b/mail/e-mail-reader.c @@ -153,15 +153,16 @@ action_mail_add_sender_cb (GtkAction *action, CamelFolder *folder; GPtrArray *uids; const gchar *address; + const gchar *message_uid; folder = e_mail_reader_get_folder (reader); backend = e_mail_reader_get_backend (reader); - uids = e_mail_reader_get_selected_uids (reader); - if (uids->len != 1) - goto exit; + uids = e_mail_reader_get_selected_uids (reader); + g_return_if_fail (uids != NULL && uids->len == 1); + message_uid = g_ptr_array_index (uids, 0); - info = camel_folder_get_message_info (folder, uids->pdata[0]); + info = camel_folder_get_message_info (folder, message_uid); if (info == NULL) goto exit; @@ -1455,20 +1456,22 @@ action_mail_save_as_cb (GtkAction *action, CamelFolder *folder; GPtrArray *uids; GFile *file; + const gchar *message_uid; const gchar *title; gchar *suggestion = NULL; gchar *uri; folder = e_mail_reader_get_folder (reader); backend = e_mail_reader_get_backend (reader); - uids = e_mail_reader_get_selected_uids (reader); - g_return_if_fail (uids->len > 0); + uids = e_mail_reader_get_selected_uids (reader); + g_return_if_fail (uids != NULL && uids->len == 1); + message_uid = g_ptr_array_index (uids, 0); title = ngettext ("Save Message", "Save Messages", uids->len); /* Suggest as a filename the subject of the first message. */ - info = camel_folder_get_message_info (folder, uids->pdata[0]); + info = camel_folder_get_message_info (folder, message_uid); if (info != NULL) { const gchar *subject = camel_message_info_subject (info); @@ -1569,12 +1572,14 @@ action_mail_show_source_cb (GtkAction *action, CamelFolder *folder; GtkWidget *browser; GPtrArray *uids; + const gchar *message_uid; backend = e_mail_reader_get_backend (reader); folder = e_mail_reader_get_folder (reader); - uids = e_mail_reader_get_selected_uids (reader); - g_return_if_fail (uids->len > 0); + uids = e_mail_reader_get_selected_uids (reader); + g_return_if_fail (uids != NULL && uids->len == 1); + message_uid = g_ptr_array_index (uids, 0); browser = e_mail_browser_new (backend); reader = E_MAIL_READER (browser); @@ -1585,7 +1590,7 @@ action_mail_show_source_cb (GtkAction *action, EM_FORMAT (formatter), EM_FORMAT_MODE_SOURCE); e_mail_reader_set_folder (reader, folder); - e_mail_reader_set_message (reader, uids->pdata[0]); + e_mail_reader_set_message (reader, message_uid); gtk_widget_show (browser); em_utils_uids_free (uids); diff --git a/mail/em-utils.c b/mail/em-utils.c index 67ee603038..a9027e0fa2 100644 --- a/mail/em-utils.c +++ b/mail/em-utils.c @@ -444,8 +444,10 @@ em_utils_flag_for_followup (EMailReader *reader, /* special-case... */ if (uids->len == 1) { CamelMessageInfo *info; + const gchar *message_uid; - info = camel_folder_get_message_info (folder, uids->pdata[0]); + message_uid = g_ptr_array_index (uids, 0); + info = camel_folder_get_message_info (folder, message_uid); if (info) { tags = (CamelTag *) camel_message_info_user_tags (info); @@ -899,7 +901,10 @@ em_utils_selection_set_urilist (GtkSelectionData *data, /* Try to get the drop filename from the message or folder */ if (uids->len == 1) { - info = camel_folder_get_message_info (folder, uids->pdata[0]); + const gchar *message_uid; + + message_uid = g_ptr_array_index (uids, 0); + info = camel_folder_get_message_info (folder, message_uid); if (info) { file = g_strdup (camel_message_info_subject (info)); camel_folder_free_message_info (folder, info); diff --git a/mail/message-list.c b/mail/message-list.c index 592e8e1370..9adf2b4776 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -3937,14 +3937,14 @@ static void on_selection_changed_cmd (ETree *tree, MessageList *ml) { GPtrArray *uids; - gchar *newuid; + const gchar *newuid; ETreePath cursor; /* not sure if we could just ignore this for the cursor, i think sometimes you only get a selection changed when you should also get a cursor activated? */ uids = message_list_get_selected (ml); if (uids->len == 1) - newuid = uids->pdata[0]; + newuid = g_ptr_array_index (uids, 0); else if ((cursor = e_tree_get_cursor (tree))) newuid = (gchar *) camel_message_info_uid (e_tree_memory_node_get_data ((ETreeMemory *) tree, cursor)); else diff --git a/modules/mail/e-mail-attachment-handler.c b/modules/mail/e-mail-attachment-handler.c index befac08d30..6b2efaf1c7 100644 --- a/modules/mail/e-mail-attachment-handler.c +++ b/modules/mail/e-mail-attachment-handler.c @@ -323,9 +323,13 @@ mail_attachment_handler_x_uid_list (EAttachmentView *view, /* Handle one message. */ if (uids->len == 1) { + const gchar *message_uid; + + message_uid = g_ptr_array_index (uids, 0); + /* FIXME Not passing a GCancellable here. */ message = camel_folder_get_message_sync ( - folder, uids->pdata[0], NULL, &local_error); + folder, message_uid, NULL, &local_error); if (message == NULL) goto exit; diff --git a/modules/mail/e-mail-shell-view-private.c b/modules/mail/e-mail-shell-view-private.c index b3cfb7e796..5eb7aca8ca 100644 --- a/modules/mail/e-mail-shell-view-private.c +++ b/modules/mail/e-mail-shell-view-private.c @@ -948,6 +948,7 @@ e_mail_shell_view_create_filter_from_selected (EMailShellView *mail_shell_view, EMailView *mail_view; CamelFolder *folder; const gchar *filter_source; + const gchar *message_uid; GPtrArray *uids; struct { @@ -969,7 +970,10 @@ e_mail_shell_view_create_filter_from_selected (EMailShellView *mail_shell_view, reader = E_MAIL_READER (mail_view); folder = e_mail_reader_get_folder (reader); + uids = e_mail_reader_get_selected_uids (reader); + g_return_if_fail (uids != NULL && uids->len == 1); + message_uid = g_ptr_array_index (uids, 0); if (em_utils_folder_is_sent (folder)) filter_source = E_FILTER_SOURCE_OUTGOING; @@ -978,17 +982,15 @@ e_mail_shell_view_create_filter_from_selected (EMailShellView *mail_shell_view, else filter_source = E_FILTER_SOURCE_INCOMING; - if (uids->len == 1) { - filter_data = g_malloc (sizeof (*filter_data)); - filter_data->session = g_object_ref (session); - filter_data->source = filter_source; - filter_data->type = filter_type; + filter_data = g_malloc (sizeof (*filter_data)); + filter_data->session = g_object_ref (session); + filter_data->source = filter_source; + filter_data->type = filter_type; - mail_get_message ( - folder, uids->pdata[0], - mail_shell_view_create_filter_cb, - filter_data, mail_msg_unordered_push); - } + mail_get_message ( + folder, message_uid, + mail_shell_view_create_filter_cb, + filter_data, mail_msg_unordered_push); em_utils_uids_free (uids); } @@ -1027,6 +1029,7 @@ e_mail_shell_view_create_vfolder_from_selected (EMailShellView *mail_shell_view, EMailView *mail_view; CamelFolder *folder; GPtrArray *uids; + const gchar *message_uid; struct { EMailSession *session; @@ -1046,18 +1049,19 @@ e_mail_shell_view_create_vfolder_from_selected (EMailShellView *mail_shell_view, reader = E_MAIL_READER (mail_view); folder = e_mail_reader_get_folder (reader); + uids = e_mail_reader_get_selected_uids (reader); + g_return_if_fail (uids != NULL && uids->len == 1); + message_uid = g_ptr_array_index (uids, 0); - if (uids->len == 1) { - vfolder_data = g_malloc (sizeof (*vfolder_data)); - vfolder_data->session = g_object_ref (session); - vfolder_data->type = vfolder_type; + vfolder_data = g_malloc (sizeof (*vfolder_data)); + vfolder_data->session = g_object_ref (session); + vfolder_data->type = vfolder_type; - mail_get_message ( - folder, uids->pdata[0], - mail_shell_view_create_vfolder_cb, - vfolder_data, mail_msg_unordered_push); - } + mail_get_message ( + folder, message_uid, + mail_shell_view_create_vfolder_cb, + vfolder_data, mail_msg_unordered_push); em_utils_uids_free (uids); } diff --git a/plugins/mailing-list-actions/mailing-list-actions.c b/plugins/mailing-list-actions/mailing-list-actions.c index 310c9affce..f97463249c 100644 --- a/plugins/mailing-list-actions/mailing-list-actions.c +++ b/plugins/mailing-list-actions/mailing-list-actions.c @@ -228,18 +228,21 @@ emla_list_action (EMailReader *reader, CamelFolder *folder; GPtrArray *uids; emla_action_data *data; + const gchar *message_uid; folder = e_mail_reader_get_folder (reader); - uids = e_mail_reader_get_selected_uids (reader); + g_return_if_fail (CAMEL_IS_FOLDER (folder)); - g_return_if_fail (uids->len == 1); + uids = e_mail_reader_get_selected_uids (reader); + g_return_if_fail (uids != NULL && uids->len == 1); + message_uid = g_ptr_array_index (uids, 0); data = g_malloc (sizeof (emla_action_data)); data->reader = g_object_ref (reader); data->action = action; mail_get_message ( - folder, uids->pdata[0], + folder, message_uid, emla_list_action_do, data, mail_msg_unordered_push); diff --git a/plugins/templates/templates.c b/plugins/templates/templates.c index 48a3b9e5a7..5fa60175b9 100644 --- a/plugins/templates/templates.c +++ b/plugins/templates/templates.c @@ -812,45 +812,54 @@ create_new_message (CamelFolder *folder, const gchar *uid, CamelMimeMessage *mes static void action_reply_with_template_cb (GtkAction *action, - EShellView *shell_view) + EShellView *shell_view) { CamelFolder *folder, *template_folder; EShellContent *shell_content; + CamelMimeMessage *template; EMailReader *reader; GPtrArray *uids; - const gchar *uid; - CamelMimeMessage *template; + const gchar *message_uid; + const gchar *template_uid; shell_content = e_shell_view_get_shell_content (shell_view); reader = E_MAIL_READER (shell_content); + folder = e_mail_reader_get_folder (reader); + g_return_if_fail (CAMEL_IS_FOLDER (folder)); + uids = e_mail_reader_get_selected_uids (reader); + g_return_if_fail (uids != NULL && uids->len == 1); + message_uid = g_ptr_array_index (uids, 0); - if (!uids->len || !folder) - return; + g_object_ref (action); - g_object_ref (G_OBJECT (action)); + template_folder = g_object_get_data ( + G_OBJECT (action), "template-folder"); + template_uid = g_object_get_data ( + G_OBJECT (action), "template-uid"); - template_folder = g_object_get_data (G_OBJECT (action), "template-folder"); - uid = g_object_get_data (G_OBJECT (action), "template-uid"); - template = camel_folder_get_message_sync (template_folder, uid, NULL, NULL); + /* FIXME This blocks. */ + template = camel_folder_get_message_sync ( + template_folder, template_uid, NULL, NULL); - mail_get_message (folder, uids->pdata[0], create_new_message, + mail_get_message ( + folder, message_uid, create_new_message, (gpointer) template, mail_msg_unordered_push); - g_object_unref (G_OBJECT (action)); + g_object_unref (action); em_utils_uids_free (uids); } static void build_template_menus_recurse (GtkUIManager *ui_manager, - GtkActionGroup *action_group, + GtkActionGroup *action_group, const gchar *menu_path, guint *action_count, guint merge_id, CamelFolderInfo *folder_info, - EShellView *shell_view) + EShellView *shell_view) { CamelStore *store; EShellWindow *shell_window = e_shell_view_get_shell_window (shell_view); |