aboutsummaryrefslogtreecommitdiffstats
path: root/mail/e-mail-reader.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@src.gnome.org>2009-02-19 09:36:04 +0800
committerMatthew Barnes <mbarnes@src.gnome.org>2009-02-19 09:36:04 +0800
commitfd564be3203400024147469faaa7de0884861566 (patch)
tree80e69ff89307a7393193520e0f2fe51cdc21540e /mail/e-mail-reader.c
parent7ed5f59771262651ee8b0d29a123e43a6ac0b6c6 (diff)
downloadgsoc2013-evolution-fd564be3203400024147469faaa7de0884861566.tar
gsoc2013-evolution-fd564be3203400024147469faaa7de0884861566.tar.gz
gsoc2013-evolution-fd564be3203400024147469faaa7de0884861566.tar.bz2
gsoc2013-evolution-fd564be3203400024147469faaa7de0884861566.tar.lz
gsoc2013-evolution-fd564be3203400024147469faaa7de0884861566.tar.xz
gsoc2013-evolution-fd564be3203400024147469faaa7de0884861566.tar.zst
gsoc2013-evolution-fd564be3203400024147469faaa7de0884861566.zip
Clean up the EMFormat stack. Add some GObject properties to bind to.
Add some handy color conversion functions to e-util. svn path=/branches/kill-bonobo/; revision=37290
Diffstat (limited to 'mail/e-mail-reader.c')
-rw-r--r--mail/e-mail-reader.c83
1 files changed, 54 insertions, 29 deletions
diff --git a/mail/e-mail-reader.c b/mail/e-mail-reader.c
index 456e046152..ab7c86c160 100644
--- a/mail/e-mail-reader.c
+++ b/mail/e-mail-reader.c
@@ -95,19 +95,6 @@ exit:
}
static void
-action_mail_caret_mode_cb (GtkToggleAction *action,
- EMailReader *reader)
-{
- EMFormatHTMLDisplay *html_display;
- gboolean active;
-
- active = gtk_toggle_action_get_active (action);
- html_display = e_mail_reader_get_html_display (reader);
-
- em_format_html_display_set_caret_mode (html_display, active);
-}
-
-static void
action_mail_charset_cb (GtkRadioAction *action,
GtkRadioAction *current,
EMailReader *reader)
@@ -122,7 +109,7 @@ action_mail_charset_cb (GtkRadioAction *action,
charset = g_object_get_data (G_OBJECT (action), "charset");
/* Charset for "Default" action will be NULL. */
- em_format_set_charset ((EMFormat *) html_display, charset);
+ em_format_set_charset (EM_FORMAT (html_display), charset);
}
static void
@@ -149,7 +136,7 @@ action_mail_clipboard_copy_cb (GtkAction *action,
GtkHTML *html;
html_display = e_mail_reader_get_html_display (reader);
- html = ((EMFormatHTML *) html_display)->html;
+ html = EM_FORMAT_HTML (html_display)->html;
gtk_html_copy (html);
}
@@ -300,7 +287,7 @@ action_mail_flag_clear_cb (GtkAction *action,
em_utils_flag_for_followup_clear (window, folder, uids);
- em_format_redraw ((EMFormat *) html_display);
+ em_format_redraw (EM_FORMAT (html_display));
}
static void
@@ -322,7 +309,7 @@ action_mail_flag_completed_cb (GtkAction *action,
em_utils_flag_for_followup_completed (window, folder, uids);
- em_format_redraw ((EMFormat *) html_display);
+ em_format_redraw (EM_FORMAT (html_display));
}
static void
@@ -443,7 +430,7 @@ action_mail_load_images_cb (GtkAction *action,
html_display = e_mail_reader_get_html_display (reader);
- em_format_html_load_http ((EMFormatHTML *) html_display);
+ em_format_html_load_images (EM_FORMAT_HTML (html_display));
}
static void
@@ -880,7 +867,7 @@ action_mail_select_all_cb (GtkAction *action,
gboolean selection_active;
html_display = e_mail_reader_get_html_display (reader);
- html = ((EMFormatHTML *) html_display)->html;
+ html = EM_FORMAT_HTML (html_display)->html;
gtk_html_select_all (html);
@@ -904,7 +891,7 @@ action_mail_show_all_headers_cb (GtkToggleAction *action,
else
mode = EM_FORMAT_NORMAL;
- em_format_set_mode ((EMFormat *) html_display, mode);
+ em_format_set_mode (EM_FORMAT (html_display), mode);
}
static void
@@ -930,7 +917,7 @@ action_mail_show_source_cb (GtkAction *action,
browser = e_mail_browser_new (shell_module);
reader = E_MAIL_READER (browser);
html_display = e_mail_reader_get_html_display (reader);
- em_format_set_mode ((EMFormat *) html_display, EM_FORMAT_SOURCE);
+ em_format_set_mode (EM_FORMAT (html_display), EM_FORMAT_SOURCE);
e_mail_reader_set_folder (reader, folder, folder_uri);
e_mail_reader_set_message (reader, uids->pdata[0], FALSE);
gtk_widget_show (browser);
@@ -1621,7 +1608,7 @@ static GtkToggleActionEntry mail_reader_toggle_entries[] = {
N_("_Caret Mode"),
"F7",
N_("Show a blinking cursor in the body of displayed messages"),
- G_CALLBACK (action_mail_caret_mode_cb),
+ NULL, /* No callback required */
FALSE },
{ "mail-show-all-headers",
@@ -1643,7 +1630,7 @@ mail_reader_link_clicked_cb (EMailReader *reader,
MessageList *message_list;
const gchar *folder_uri;
- html = ((EMFormatHTML *) html_display)->html;
+ html = EM_FORMAT_HTML (html_display)->html;
message_list = e_mail_reader_get_message_list (reader);
window = e_mail_reader_get_window (reader);
folder_uri = message_list->folder_uri;
@@ -1834,7 +1821,7 @@ mail_reader_message_loaded_cb (CamelFolder *folder,
(EEventTarget *) target);
em_format_format (
- (EMFormat *) html_display, folder, message_uid, message);
+ EM_FORMAT (html_display), folder, message_uid, message);
/* Reset the shell view icon. */
e_shell_event (shell, "mail-icon", "evolution-mail");
@@ -1862,7 +1849,7 @@ mail_reader_message_loaded_cb (CamelFolder *folder,
/* Display the error inline and clear the exception. */
stream = gtk_html_begin (
- ((EMFormatHTML *) html_display)->html);
+ EM_FORMAT_HTML (html_display)->html);
gtk_html_stream_printf (
stream, "<h2>%s</h2><p>%s</p>",
_("Unable to retrieve message"),
@@ -1890,7 +1877,7 @@ mail_reader_message_selected_timeout_cb (EMailReader *reader)
message_list = e_mail_reader_get_message_list (reader);
cursor_uid = message_list->cursor_uid;
- format_uid = ((EMFormat *) html_display)->uid;
+ format_uid = EM_FORMAT (html_display)->uid;
if (cursor_uid != NULL) {
if (g_strcmp0 (cursor_uid, format_uid) != 0)
@@ -1900,7 +1887,7 @@ mail_reader_message_selected_timeout_cb (EMailReader *reader)
g_object_ref (reader),
mail_msg_fast_ordered_push);
} else
- em_format_format ((EMFormat *) html_display, NULL, NULL, NULL);
+ em_format_format (EM_FORMAT (html_display), NULL, NULL, NULL);
key = "message-selected-timeout";
g_object_set_data (G_OBJECT (reader), key, NULL);
@@ -1962,7 +1949,7 @@ mail_reader_set_folder (EMailReader *reader,
if (message_list->folder != NULL)
mail_sync_folder (message_list->folder, NULL, NULL);
- em_format_format ((EMFormat *) html_display, NULL, NULL, NULL);
+ em_format_format (EM_FORMAT (html_display), NULL, NULL, NULL);
message_list_set_folder (message_list, folder, folder_uri, outgoing);
mail_reader_emit_folder_loaded (reader);
@@ -2062,6 +2049,9 @@ e_mail_reader_get_type (void)
void
e_mail_reader_init (EMailReader *reader)
{
+ EShell *shell;
+ EShellModule *shell_module;
+ EShellSettings *shell_settings;
EMFormatHTMLDisplay *html_display;
GtkActionGroup *action_group;
MessageList *message_list;
@@ -2075,6 +2065,10 @@ e_mail_reader_init (EMailReader *reader)
action_group = e_mail_reader_get_action_group (reader);
html_display = e_mail_reader_get_html_display (reader);
message_list = e_mail_reader_get_message_list (reader);
+ shell_module = e_mail_reader_get_shell_module (reader);
+
+ shell = e_shell_module_get_shell (shell_module);
+ shell_settings = e_shell_get_shell_settings (shell);
gtk_action_group_add_actions (
action_group, mail_reader_entries,
@@ -2124,6 +2118,37 @@ e_mail_reader_init (EMailReader *reader)
action = e_mail_reader_get_action (reader, action_name);
g_object_set (action, "short-label", _("Reply"), NULL);
+ /* Bind properties. */
+
+ e_binding_new_full (
+ G_OBJECT (shell_settings), "mail-citation-color",
+ G_OBJECT (html_display), "citation-color",
+ e_binding_transform_string_to_color,
+ NULL, NULL);
+
+ e_binding_new (
+ G_OBJECT (shell_settings), "mail-image-loading-policy",
+ G_OBJECT (html_display), "image-loading-policy");
+
+ e_binding_new (
+ G_OBJECT (shell_settings), "mail-only-local-photos",
+ G_OBJECT (html_display), "only-local-photos");
+
+ e_binding_new (
+ G_OBJECT (shell_settings), "mail-show-animated-images",
+ G_OBJECT (html_display), "animate");
+
+ e_binding_new (
+ G_OBJECT (shell_settings), "mail-show-sender-photo",
+ G_OBJECT (html_display), "show-sender-photo");
+
+ action_name = "mail-caret-mode";
+ action = e_mail_reader_get_action (reader, action_name);
+
+ e_mutual_binding_new (
+ G_OBJECT (action), "active",
+ G_OBJECT (html_display), "caret-mode");
+
/* Connect signals. */
g_signal_connect_swapped (
@@ -2131,7 +2156,7 @@ e_mail_reader_init (EMailReader *reader)
G_CALLBACK (mail_reader_link_clicked_cb), reader);
g_signal_connect_swapped (
- ((EMFormatHTML *) html_display)->html, "button-release-event",
+ EM_FORMAT_HTML (html_display)->html, "button-release-event",
G_CALLBACK (mail_reader_html_button_release_event_cb), reader);
g_signal_connect_swapped (