From f963cc39a7d21f64f578dae50fd08c44181a3bf6 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Mon, 9 Mar 2009 03:31:24 +0000 Subject: Cleaning up the attachment bar, centralizing its popup menu, and converting everything to GtkUIManager/GtkActions. Saving progress mid-stream... not sure about the MIME part utilities yet. Also, add some EActivity subclasses. Considering an EFileActivity subclass for asynchronous GIO operations (loading/saving attachments, etc.), but still ironing out details. svn path=/branches/kill-bonobo/; revision=37389 --- mail/em-composer-prefs.c | 6 ++- mail/em-folder-view.c | 28 +------------ mail/em-format-html-display.c | 17 +++++--- mail/em-popup.c | 93 +++++++++++++++++++++++++++++-------------- mail/em-utils.c | 10 ++--- mail/mail-mt.c | 13 +++--- 6 files changed, 91 insertions(+), 76 deletions(-) (limited to 'mail') diff --git a/mail/em-composer-prefs.c b/mail/em-composer-prefs.c index 9b81935e90..dbc174340e 100644 --- a/mail/em-composer-prefs.c +++ b/mail/em-composer-prefs.c @@ -82,11 +82,13 @@ transform_string_to_color (const GValue *src_value, { GdkColor color; const gchar *string; - gboolean success; + gboolean success = FALSE; string = g_value_get_string (src_value); - if (gdk_color_parse (string, &color)) + if (gdk_color_parse (string, &color)) { g_value_set_boxed (dst_value, &color); + success = TRUE; + } return success; } diff --git a/mail/em-folder-view.c b/mail/em-folder-view.c index fb449e558c..5b97f2dcb8 100644 --- a/mail/em-folder-view.c +++ b/mail/em-folder-view.c @@ -367,32 +367,6 @@ emfv_edit_paste(BonoboUIComponent *uid, void *data, const char *path) message_list_paste(emfv->list); } -//static void -//emfv_select_all_text(BonoboUIComponent *uid, void *data, const char *path) -//{ -// EMFolderView *emfv = data; -// gboolean selected; -// -// gtk_html_select_all (((EMFormatHTML *)emfv->preview)->html); -// selected = gtk_html_command (((EMFormatHTML *)emfv->preview)->html, "is-selection-active"); -// bonobo_ui_component_set_prop(emfv->uic, "/commands/EditCopy", "sensitive", selected?"1":"0", NULL); -// -//} - -static void -emfv_message_search(BonoboUIComponent *uic, void *data, const char *path) -{ - EMFolderView *emfv = data; - - if (!emfv->list_active) /* We are in new mail window */ - em_format_html_display_search(emfv->preview); - else { - /* We are in top level. Just grab focus to Search Bar */ - gtk_widget_grab_focus (((ESearchBar *)((EMFolderBrowser *) emfv)->search)->entry); - gtk_option_menu_set_history (GTK_OPTION_MENU (((ESearchBar *)((EMFolderBrowser *) emfv)->search)->scopeoption), 3); - } -} - static void emp_uri_popup_vfolder_sender(EPopup *ep, EPopupItem *pitem, void *data) { @@ -461,7 +435,7 @@ static BonoboUIVerb emfv_message_verbs[] = { // BONOBO_UI_UNSAFE_VERB ("MessageDelete", emfv_message_delete), // BONOBO_UI_UNSAFE_VERB ("MessageDeleteKey", emfv_message_delete), // BONOBO_UI_UNSAFE_VERB ("MessageOpen", emfv_message_open), - BONOBO_UI_UNSAFE_VERB ("MessageSearch", emfv_message_search), +// BONOBO_UI_UNSAFE_VERB ("MessageSearch", emfv_message_search), // BONOBO_UI_UNSAFE_VERB ("ViewSource", emfv_message_source), diff --git a/mail/em-format-html-display.c b/mail/em-format-html-display.c index 6710abeb98..59f63adc6c 100644 --- a/mail/em-format-html-display.c +++ b/mail/em-format-html-display.c @@ -1331,7 +1331,7 @@ efhd_attachment_button(EMFormatHTML *efh, GtkHTMLEmbedded *eb, EMFormatHTMLPObje if (!file) { file = "attachment.dat"; - new->file_name = g_strdup(file); + e_attachment_set_filename (new, file); } tmp = g_hash_table_lookup (efhd->priv->files, file); @@ -1349,8 +1349,8 @@ efhd_attachment_button(EMFormatHTML *efh, GtkHTMLEmbedded *eb, EMFormatHTMLPObje g_free (tmp_file); g_hash_table_insert (efhd->priv->files, g_strdup(file), GUINT_TO_POINTER(count)); - g_free (new->file_name); - new->file_name = new_file; + e_attachment_set_filename (new, new_file); + g_free (new_file); } else { g_hash_table_insert (efhd->priv->files, g_strdup(file), GUINT_TO_POINTER(1)); } @@ -1562,8 +1562,13 @@ efhd_bar_save_selected(EPopup *ep, EPopupItem *item, void *data) attachment_parts = e_attachment_bar_get_selected(E_ATTACHMENT_BAR(widget)); - for (tmp = attachment_parts; tmp; tmp=tmp->next) - parts = g_slist_prepend(parts, ((EAttachment *)tmp->data)->body); + for (tmp = attachment_parts; tmp; tmp=tmp->next) { + EAttachment *attachment = tmp->data; + CamelMimePart *mime_part; + + mime_part = e_attachment_get_mime_part (attachment); + parts = g_slist_prepend (parts, mime_part); + } parts = g_slist_reverse(parts); em_utils_save_parts(parent, _("Select folder to save selected attachments..."), parts); @@ -1721,7 +1726,7 @@ efhd_add_bar(EMFormatHTML *efh, GtkHTMLEmbedded *eb, EMFormatHTMLPObject *pobjec GtkWidget *hbox1, *hbox2, *hbox3, *vbox, *txt, *image, *save, *scroll; int width, height, bar_width; - priv->attachment_bar = e_attachment_bar_new(NULL); + priv->attachment_bar = e_attachment_bar_new (); scroll = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); ((EAttachmentBar *)priv->attachment_bar)->expand = TRUE; diff --git a/mail/em-popup.c b/mail/em-popup.c index 84d49c845e..f0887f26ce 100644 --- a/mail/em-popup.c +++ b/mail/em-popup.c @@ -382,10 +382,20 @@ em_popup_target_new_attachments(EMPopup *emp, GSList *attachments) if (len > 0) mask &= ~ EM_POPUP_ATTACHMENTS_MANY; if (len == 1 && ((EAttachment *)attachments->data)->is_available_local) { + EAttachment *attachment; + CamelMimePart *mime_part; + CamelContentType *mime_type; + CamelDataWrapper *data_wrapper; + + attachment = attachments->data; + mime_part = e_attachment_get_mime_part (attachment); + mime_type = CAMEL_DATA_WRAPPER (mime_part)->mime_type; + data_wrapper = camel_medium_get_content_object ( + CAMEL_MEDIUM (mime_part)); - if (camel_content_type_is(((CamelDataWrapper *) ((EAttachment *) attachments->data)->body)->mime_type, "image", "*")) + if (camel_content_type_is (mime_type, "image", "*")) mask &= ~ EM_POPUP_ATTACHMENTS_IMAGE; - if (CAMEL_IS_MIME_MESSAGE(camel_medium_get_content_object((CamelMedium *) ((EAttachment *) attachments->data)->body))) + if (CAMEL_IS_MIME_MESSAGE (data_wrapper)) mask &= ~EM_POPUP_ATTACHMENTS_MESSAGE; mask &= ~ EM_POPUP_ATTACHMENTS_ONE; @@ -408,9 +418,12 @@ emp_part_popup_saveas(EPopup *ep, EPopupItem *item, void *data) gpointer parent; /* If it is of type EM_POPUP_TARGET_ATTACHMENTS, we can assume the length is one. */ - if (t->type == EM_POPUP_TARGET_ATTACHMENTS) - part = ((EAttachment *) ((EMPopupTargetAttachments *) t)->attachments->data)->body; - else + if (t->type == EM_POPUP_TARGET_ATTACHMENTS) { + EAttachment *attachment; + + attachment = E_ATTACHMENT (((EMPopupTargetAttachments *) t)->attachments->data); + part = e_attachment_get_mime_part (attachment); + } else part = ((EMPopupTargetPart *) t)->part; widget = ep->target->widget; @@ -429,9 +442,12 @@ emp_part_popup_set_background(EPopup *ep, EPopupItem *item, void *data) unsigned int i=1; CamelMimePart *part = NULL; - if (t->type == EM_POPUP_TARGET_ATTACHMENTS) - part = ((EAttachment *) ((EMPopupTargetAttachments *) t)->attachments->data)->body; - else + if (t->type == EM_POPUP_TARGET_ATTACHMENTS) { + EAttachment *attachment; + + attachment = E_ATTACHMENT (((EMPopupTargetAttachments *) t)->attachments->data); + part = e_attachment_get_mime_part (attachment); + } else part = ((EMPopupTargetPart *) t)->part; if (!part) @@ -503,9 +519,12 @@ emp_part_popup_reply_sender(EPopup *ep, EPopupItem *item, void *data) CamelMimeMessage *message; CamelMimePart *part; - if (t->type == EM_POPUP_TARGET_ATTACHMENTS) - part = ((EAttachment *) ((EMPopupTargetAttachments *) t)->attachments->data)->body; - else + if (t->type == EM_POPUP_TARGET_ATTACHMENTS) { + EAttachment *attachment; + + attachment = E_ATTACHMENT (((EMPopupTargetAttachments *) t)->attachments->data); + part = e_attachment_get_mime_part (attachment); + } else part = ((EMPopupTargetPart *) t)->part; message = (CamelMimeMessage *)camel_medium_get_content_object((CamelMedium *)part); @@ -519,9 +538,12 @@ emp_part_popup_reply_list (EPopup *ep, EPopupItem *item, void *data) CamelMimeMessage *message; CamelMimePart *part; - if (t->type == EM_POPUP_TARGET_ATTACHMENTS) - part = ((EAttachment *) ((EMPopupTargetAttachments *) t)->attachments->data)->body; - else + if (t->type == EM_POPUP_TARGET_ATTACHMENTS) { + EAttachment *attachment; + + attachment = E_ATTACHMENT (((EMPopupTargetAttachments *) t)->attachments->data); + part = e_attachment_get_mime_part (attachment); + } else part = ((EMPopupTargetPart *) t)->part; message = (CamelMimeMessage *)camel_medium_get_content_object((CamelMedium *)part); @@ -535,9 +557,12 @@ emp_part_popup_reply_all (EPopup *ep, EPopupItem *item, void *data) CamelMimeMessage *message; CamelMimePart *part; - if (t->type == EM_POPUP_TARGET_ATTACHMENTS) - part = ((EAttachment *) ((EMPopupTargetAttachments *) t)->attachments->data)->body; - else + if (t->type == EM_POPUP_TARGET_ATTACHMENTS) { + EAttachment *attachment; + + attachment = E_ATTACHMENT (((EMPopupTargetAttachments *) t)->attachments->data); + part = e_attachment_get_mime_part (attachment); + } else part = ((EMPopupTargetPart *) t)->part; message = (CamelMimeMessage *)camel_medium_get_content_object((CamelMedium *)part); @@ -551,9 +576,12 @@ emp_part_popup_forward (EPopup *ep, EPopupItem *item, void *data) CamelMimeMessage *message; CamelMimePart *part; - if (t->type == EM_POPUP_TARGET_ATTACHMENTS) - part = ((EAttachment *) ((EMPopupTargetAttachments *) t)->attachments->data)->body; - else + if (t->type == EM_POPUP_TARGET_ATTACHMENTS) { + EAttachment *attachment; + + attachment = E_ATTACHMENT (((EMPopupTargetAttachments *) t)->attachments->data); + part = e_attachment_get_mime_part (attachment); + } else part = ((EMPopupTargetPart *) t)->part; /* TODO: have a emfv specific override so we can get the parent folder uri */ @@ -642,9 +670,12 @@ emp_apps_open_in(EPopup *ep, EPopupItem *item, void *data) EPopupTarget *target = ep->target; CamelMimePart *part; - if (target->type == EM_POPUP_TARGET_ATTACHMENTS) - part = ((EAttachment *) ((EMPopupTargetAttachments *) target)->attachments->data)->body; - else + if (target->type == EM_POPUP_TARGET_ATTACHMENTS) { + EAttachment *attachment; + + attachment = E_ATTACHMENT (((EMPopupTargetAttachments *) target)->attachments->data); + part = e_attachment_get_mime_part (attachment); + } else part = ((EMPopupTargetPart *) target)->part; path = em_utils_temp_save_part(target->widget, part, TRUE); @@ -711,11 +742,13 @@ emp_add_vcard (EPopup *ep, EPopupItem *item, void *data) CamelMimePart *part; CamelDataWrapper *content; CamelStreamMem *mem; - - if (target->type == EM_POPUP_TARGET_ATTACHMENTS) - part = ((EAttachment *) ((EMPopupTargetAttachments *) target)->attachments->data)->body; - else + if (target->type == EM_POPUP_TARGET_ATTACHMENTS) { + EAttachment *attachment; + + attachment = E_ATTACHMENT (((EMPopupTargetAttachments *) target)->attachments->data); + part = e_attachment_get_mime_part (attachment); + } else part = ((EMPopupTargetPart *) target)->part; if (!part) @@ -774,6 +807,7 @@ emp_standard_menu_factory(EPopup *emp, void *data) EMPopupTargetAttachments *t = (EMPopupTargetAttachments *)emp->target; GSList *list = t->attachments; EAttachment *attachment; + CamelMimePart *mime_part; if (g_slist_length(list) != 1 || !((EAttachment *)list->data)->is_available_local) { items = NULL; @@ -783,8 +817,9 @@ emp_standard_menu_factory(EPopup *emp, void *data) /* Only one attachment selected */ attachment = list->data; - mime_type = camel_data_wrapper_get_mime_type((CamelDataWrapper *)attachment->body); - filename = camel_mime_part_get_filename(attachment->body); + mime_part = e_attachment_get_mime_part (attachment); + mime_type = camel_data_wrapper_get_mime_type (CAMEL_DATA_WRAPPER (mime_part)); + filename = camel_mime_part_get_filename (mime_part); items = emp_attachment_object_popups; len = LEN(emp_attachment_object_popups); diff --git a/mail/em-utils.c b/mail/em-utils.c index 9899c10f8b..34562bb44d 100644 --- a/mail/em-utils.c +++ b/mail/em-utils.c @@ -71,7 +71,7 @@ #include "e-util/e-account-utils.h" #include "e-util/e-dialog-utils.h" #include "e-util/e-error.h" - +#include "widgets/misc/e-alert-activity.h" #include "em-utils.h" #include "em-composer-utils.h" @@ -814,7 +814,7 @@ tag_editor_response (GtkWidget *dialog, int button, struct ted_t *ted) camel_tag_list_free (&tags); if (ted->emfv->preview) - em_format_redraw(ted->emfv->preview); + em_format_redraw (EM_FORMAT (ted->emfv->preview)); } gtk_widget_destroy (dialog); @@ -2407,8 +2407,7 @@ em_utils_show_error_silent (GtkWidget *widget) { EActivity *activity; - activity = e_activity_new (NULL); - e_activity_error (activity, widget); + activity = e_alert_activity_new_warning (widget); e_shell_module_add_activity (mail_shell_module, activity); g_object_unref (activity); @@ -2423,8 +2422,7 @@ em_utils_show_info_silent (GtkWidget *widget) { EActivity *activity; - activity = e_activity_new (NULL); - e_activity_info (activity, widget); + activity = e_alert_activity_new_info (widget); e_shell_module_add_activity (mail_shell_module, activity); g_object_unref (activity); diff --git a/mail/mail-mt.c b/mail/mail-mt.c index f4780c96bb..b246cd2899 100644 --- a/mail/mail-mt.c +++ b/mail/mail-mt.c @@ -37,7 +37,7 @@ #include "misc/e-gui-utils.h" #include "e-util/e-error.h" #include "e-util/e-icon-factory.h" -#include "widgets/misc/e-activity.h" +#include "widgets/misc/e-alert-activity.h" #include "mail-config.h" #include "mail-session.h" @@ -145,12 +145,13 @@ end_event_callback (CamelObject *o, EActivity *activity, void *error) if (error == NULL) { e_activity_complete (activity); g_object_unref (activity); - } else if (activity == NULL) { - activity = e_activity_new (NULL); - e_activity_error (activity, error); + } else { + if (activity != NULL) + g_object_unref (activity); + activity = e_alert_activity_new_warning (error); e_shell_module_add_activity (mail_shell_module, activity); - } else - e_activity_error (activity, error); + g_object_unref (activity); + } } -- cgit v1.2.3