From dadc54fa9885cbe38e84ed667fea13c9d3ee7603 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Tue, 15 May 2001 18:45:42 +0000 Subject: Load http images if the user has force-loaded images too. * mail-display.c (on_url_requested): Load http images if the user has force-loaded images too. (mail_display_redisplay): Update for normal/headers/source changes. (mail_display_load_images): New. Force HTTP image loading for the current message. * mail-config.c (mail_config_get_message_display_style, mail_config_set_message_display_style): Updated and renamed from mail_config_{get,set}_view_source * mail-callbacks.c (load_images): New. * folder-browser.c (folder_browser_set_message_display_style): Renamed and updated from folder_browser_toggle_view_source. * folder-browser-factory.c (verbs): Add ViewLoadImages. (control_activate): Update for normal/headers/source change to radio group. svn path=/trunk/; revision=9820 --- mail/ChangeLog | 21 +++++++++++++++++++++ mail/folder-browser-factory.c | 20 +++++++++++++++----- mail/folder-browser.c | 27 +++++++++++++++++---------- mail/folder-browser.h | 13 +++++++------ mail/mail-callbacks.c | 8 ++++++++ mail/mail-callbacks.h | 1 + mail/mail-config.c | 26 +++++++++++++------------- mail/mail-config.h | 16 +++++++++++----- mail/mail-display.c | 24 +++++++++++++++++++----- mail/mail-display.h | 3 +-- 10 files changed, 113 insertions(+), 46 deletions(-) diff --git a/mail/ChangeLog b/mail/ChangeLog index ec299377a8..c30573b8f6 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,24 @@ +2001-05-15 Dan Winship + + * mail-display.c (on_url_requested): Load http images if the user + has force-loaded images too. + (mail_display_redisplay): Update for normal/headers/source changes. + (mail_display_load_images): New. Force HTTP image loading for the + current message. + + * mail-config.c (mail_config_get_message_display_style, + mail_config_set_message_display_style): Updated and renamed from + mail_config_{get,set}_view_source + + * mail-callbacks.c (load_images): New. + + * folder-browser.c (folder_browser_set_message_display_style): + Renamed and updated from folder_browser_toggle_view_source. + + * folder-browser-factory.c (verbs): Add ViewLoadImages. + (control_activate): Update for normal/headers/source change to + radio group. + 2001-05-15 Dan Winship * folder-browser-factory.c (verbs): Update for changes in diff --git a/mail/folder-browser-factory.c b/mail/folder-browser-factory.c index daf087d9ff..31ee715eff 100644 --- a/mail/folder-browser-factory.c +++ b/mail/folder-browser-factory.c @@ -91,9 +91,9 @@ BonoboUIVerb verbs [] = { BONOBO_UI_UNSAFE_VERB ("ToolsVFolders", vfolder_edit_vfolders), BONOBO_UI_UNSAFE_VERB ("ToolsVFolderSender", vfolder_sender), BONOBO_UI_UNSAFE_VERB ("ToolsVFolderSubject", vfolder_subject), -/* BONOBO_UI_UNSAFE_VERB ("ViewFullHeaders", view_full_headers), */ BONOBO_UI_UNSAFE_VERB ("ViewHideRead", hide_read), BONOBO_UI_UNSAFE_VERB ("ViewHideSelected", hide_selected), + BONOBO_UI_UNSAFE_VERB ("ViewLoadImages", load_images), BONOBO_UI_UNSAFE_VERB ("ViewShowAll", hide_none), BONOBO_UI_VERB_END @@ -203,6 +203,13 @@ folder_browser_setup_property_menu (FolderBrowser *fb, g_free (name); } +/* Must be in the same order as MailConfigDisplayStyle */ +char *message_display_styles[] = { + "/commands/ViewNormal", + "/commands/ViewFullHeaders", + "/commands/ViewSource" +}; + static void control_activate (BonoboControl *control, BonoboUIComponent *uic, @@ -236,11 +243,14 @@ control_activate (BonoboControl *control, /* FIXME: this kind of bypasses bonobo but seems the only way when we change components */ folder_browser_toggle_threads(uic, "", Bonobo_UIComponent_STATE_CHANGED, state?"1":"0", folder_browser); - state = mail_config_get_view_source(); - bonobo_ui_component_set_prop(uic, "/commands/ViewSource", "state", state?"1":"0", NULL); - bonobo_ui_component_add_listener(uic, "ViewSource", folder_browser_toggle_view_source, folder_browser); + state = mail_config_get_message_display_style (); + bonobo_ui_component_set_prop (uic, message_display_styles[state], + "state", "1", NULL); + bonobo_ui_component_add_listener (uic, "ViewNormal", folder_browser_set_message_display_style, folder_browser); + bonobo_ui_component_add_listener (uic, "ViewFullHeaders", folder_browser_set_message_display_style, folder_browser); + bonobo_ui_component_add_listener (uic, "ViewSource", folder_browser_set_message_display_style, folder_browser); /* FIXME: this kind of bypasses bonobo but seems the only way when we change components */ - folder_browser_toggle_view_source(uic, "", Bonobo_UIComponent_STATE_CHANGED, state?"1":"0", folder_browser); + folder_browser_set_message_display_style (uic, strrchr (message_display_styles[state], '/') + 1, Bonobo_UIComponent_STATE_CHANGED, "1", folder_browser); if (fb->folder && CAMEL_IS_VTRASH_FOLDER(fb->folder)) { bonobo_ui_component_set_prop(uic, "/commands/HideDeleted", "sensitive", "0", NULL); diff --git a/mail/folder-browser.c b/mail/folder-browser.c index 6e84a5061a..5469a2d782 100644 --- a/mail/folder-browser.c +++ b/mail/folder-browser.c @@ -382,19 +382,26 @@ folder_browser_toggle_hide_deleted (BonoboUIComponent *component, } void -folder_browser_toggle_view_source (BonoboUIComponent *component, - const char *path, - Bonobo_UIComponent_EventType type, - const char *state, - gpointer user_data) +folder_browser_set_message_display_style (BonoboUIComponent *component, + const char *path, + Bonobo_UIComponent_EventType type, + const char *state, + gpointer user_data) { + extern char *message_display_styles[]; FolderBrowser *fb = user_data; - - if (type != Bonobo_UIComponent_STATE_CHANGED) + int i; + + if (type != Bonobo_UIComponent_STATE_CHANGED || atoi(state) == 0) return; - - mail_config_set_view_source (atoi (state)); - mail_display_redisplay (fb->mail_display, TRUE); + + for (i = 0; i < MAIL_CONFIG_DISPLAY_MAX; i++) { + if (strstr (message_display_styles[i], path)) { + mail_config_set_message_display_style (i); + mail_display_redisplay (fb->mail_display, TRUE); + return; + } + } } void diff --git a/mail/folder-browser.h b/mail/folder-browser.h index e428465340..6b5ab5fa84 100644 --- a/mail/folder-browser.h +++ b/mail/folder-browser.h @@ -109,15 +109,16 @@ void folder_browser_toggle_threads (BonoboUIComponent *component, const char *state, gpointer user_data); -void folder_browser_toggle_view_source (BonoboUIComponent *component, - const char *path, - Bonobo_UIComponent_EventType type, - const char *state, - gpointer user_data); - void folder_browser_toggle_hide_deleted (BonoboUIComponent *component, const char *path, Bonobo_UIComponent_EventType type, const char *state, gpointer user_data); + +void folder_browser_set_message_display_style (BonoboUIComponent *component, + const char *path, + Bonobo_UIComponent_EventType type, + const char *state, + gpointer user_data); + #endif /* _FOLDER_BROWSER_H_ */ diff --git a/mail/mail-callbacks.c b/mail/mail-callbacks.c index ca0ba70d53..fe262c389e 100644 --- a/mail/mail-callbacks.c +++ b/mail/mail-callbacks.c @@ -1224,6 +1224,14 @@ search_msg (GtkWidget *widget, gpointer user_data) gtk_widget_show_all (w); } +void +load_images (GtkWidget *widget, gpointer user_data) +{ + FolderBrowser *fb = FOLDER_BROWSER (user_data); + + mail_display_load_images (fb->mail_display); +} + static void save_msg_ok (GtkWidget *widget, gpointer user_data) { diff --git a/mail/mail-callbacks.h b/mail/mail-callbacks.h index a800d9a04e..ad3f193737 100644 --- a/mail/mail-callbacks.h +++ b/mail/mail-callbacks.h @@ -67,6 +67,7 @@ void next_unread_msg (GtkWidget *widget, gpointer user_data); void previous_unread_msg (GtkWidget *widget, gpointer user_data); void resend_msg (GtkWidget *widget, gpointer user_data); void search_msg (GtkWidget *widget, gpointer user_data); +void load_images (GtkWidget *widget, gpointer user_data); void select_all (BonoboUIComponent *uih, void *user_data, const char *path); void invert_selection (BonoboUIComponent *uih, void *user_data, const char *path); diff --git a/mail/mail-config.c b/mail/mail-config.c index bead41108f..8da0a17c3c 100644 --- a/mail/mail-config.c +++ b/mail/mail-config.c @@ -51,7 +51,6 @@ typedef struct { gboolean thread_list; - gboolean view_source; gboolean hide_deleted; gint paned_size; gboolean send_html; @@ -68,6 +67,7 @@ typedef struct { MailConfigHTTPMode http_mode; MailConfigForwardStyle default_forward_style; + MailConfigDisplayStyle message_display_style; } MailConfig; static const char GCONFPATH[] = "/apps/Evolution/Mail"; @@ -689,18 +689,6 @@ mail_config_set_thread_list (gboolean value) config->thread_list = value; } -gboolean -mail_config_get_view_source (void) -{ - return config->view_source; -} - -void -mail_config_set_view_source (gboolean value) -{ - config->view_source = value; -} - gboolean mail_config_get_hide_deleted (void) { @@ -913,6 +901,18 @@ mail_config_set_default_forward_style (MailConfigForwardStyle style) config->default_forward_style = style; } +MailConfigDisplayStyle +mail_config_get_message_display_style (void) +{ + return config->message_display_style; +} + +void +mail_config_set_message_display_style (MailConfigDisplayStyle style) +{ + config->message_display_style = style; +} + const MailConfigAccount * mail_config_get_default_account (void) { diff --git a/mail/mail-config.h b/mail/mail-config.h index 46b6e17035..cba1675838 100644 --- a/mail/mail-config.h +++ b/mail/mail-config.h @@ -61,14 +61,20 @@ typedef struct { typedef enum { MAIL_CONFIG_HTTP_NEVER, MAIL_CONFIG_HTTP_SOMETIMES, - MAIL_CONFIG_HTTP_ALWAYS, + MAIL_CONFIG_HTTP_ALWAYS } MailConfigHTTPMode; typedef enum { MAIL_CONFIG_FORWARD_ATTACHED, MAIL_CONFIG_FORWARD_INLINE, - MAIL_CONFIG_FORWARD_QUOTED, + MAIL_CONFIG_FORWARD_QUOTED } MailConfigForwardStyle; +typedef enum { + MAIL_CONFIG_DISPLAY_NORMAL, MAIL_CONFIG_DISPLAY_FULL_HEADERS, + MAIL_CONFIG_DISPLAY_SOURCE, + MAIL_CONFIG_DISPLAY_MAX +} MailConfigDisplayStyle; + /* Identities */ MailConfigIdentity *identity_copy (const MailConfigIdentity *id); void identity_destroy (MailConfigIdentity *id); @@ -95,9 +101,6 @@ gboolean mail_config_is_configured (void); gboolean mail_config_get_thread_list (void); void mail_config_set_thread_list (gboolean value); -gboolean mail_config_get_view_source (void); -void mail_config_set_view_source (gboolean value); - gboolean mail_config_get_hide_deleted (void); void mail_config_set_hide_deleted (gboolean value); @@ -131,6 +134,9 @@ void mail_config_set_http_mode (MailConfigHTTPMode); MailConfigForwardStyle mail_config_get_default_forward_style (void); void mail_config_set_default_forward_style (MailConfigForwardStyle); +MailConfigDisplayStyle mail_config_get_message_display_style (void); +void mail_config_set_message_display_style (MailConfigDisplayStyle); + const MailConfigAccount *mail_config_get_default_account (void); const MailConfigAccount *mail_config_get_account_by_name (const char *account_name); const MailConfigAccount *mail_config_get_account_by_source_url (const char *url); diff --git a/mail/mail-display.c b/mail/mail-display.c index 28701b566e..d1433622cb 100644 --- a/mail/mail-display.c +++ b/mail/mail-display.c @@ -37,13 +37,14 @@ #include +#include "e-searching-tokenizer.h" #include "mail-display.h" #include "mail-config.h" -#include "mail.h" -#include "art/empty.xpm" - #include "mail-ops.h" #include "mail-mt.h" +#include "mail.h" + +#include "art/empty.xpm" #define PARENT_TYPE (gtk_vbox_get_type ()) @@ -936,7 +937,8 @@ on_url_requested (GtkHTML *html, const char *url, GtkHTMLStream *handle, /* See if it's something we can load. */ if (strncmp (url, "http:", 5) == 0 && - mail_config_get_http_mode () == MAIL_CONFIG_HTTP_ALWAYS) { + (mail_config_get_http_mode () == MAIL_CONFIG_HTTP_ALWAYS || + g_datalist_get_data (md->data, "load_images"))) { ba = g_byte_array_new (); g_hash_table_insert (urls, g_strdup (url), ba); mail_display_redisplay_when_loaded (md, ba, load_http, g_strdup (url)); @@ -1113,7 +1115,7 @@ mail_display_redisplay (MailDisplay *md, gboolean unscroll) mail_html_write (md->html, md->stream, "%s%s", HTML_HEADER, "\n"); if (md->current_message) { - if (mail_config_get_view_source ()) + if (mail_config_get_message_display_style () == MAIL_CONFIG_DISPLAY_SOURCE) mail_format_raw_message (md->current_message, md); else mail_format_mime_message (md->current_message, md); @@ -1156,6 +1158,18 @@ mail_display_set_message (MailDisplay *md, CamelMedium *medium) } } +/** + * mail_display_load_images: + * @md: the mail display object + * + * Load all HTTP images in the current message + **/ +void +mail_display_load_images (MailDisplay *md) +{ + g_datalist_set_data (md->data, "load_images", GINT_TO_POINTER (1)); + mail_display_redisplay (md, FALSE); +} /*----------------------------------------------------------------------* * Standard Gtk+ Class functions diff --git a/mail/mail-display.h b/mail/mail-display.h index 4f78e7cc1d..4e21e6db1c 100644 --- a/mail/mail-display.h +++ b/mail/mail-display.h @@ -50,8 +50,7 @@ void mail_display_redisplay_when_loaded (MailDisplay *md, void mail_display_set_message (MailDisplay *mail_display, CamelMedium *medium); -void mail_display_toggle_raw (MailDisplay *mail_display, - gboolean toggle); +void mail_display_load_images (MailDisplay *mail_display); #define HTML_HEADER "\n\n\n\n\n" -- cgit v1.2.3