From 5d08bbfe4ca858c067caad0cc8ce0c08a52e1f44 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Mon, 26 Apr 2010 16:43:15 +0200 Subject: Bug #603418 - Custom headers not displayed in message preview --- modules/mail/e-mail-shell-content.c | 3 + modules/mail/em-mailer-prefs.c | 128 +++--------------------------------- modules/mail/em-mailer-prefs.h | 12 ---- 3 files changed, 13 insertions(+), 130 deletions(-) (limited to 'modules/mail') diff --git a/modules/mail/e-mail-shell-content.c b/modules/mail/e-mail-shell-content.c index d76d5acff2..79f001afc8 100644 --- a/modules/mail/e-mail-shell-content.c +++ b/modules/mail/e-mail-shell-content.c @@ -40,6 +40,7 @@ #include "message-list.h" #include "e-mail-reader.h" +#include "e-mail-reader-utils.h" #include "e-mail-shell-backend.h" #include "e-mail-shell-view-actions.h" @@ -461,6 +462,8 @@ mail_shell_content_constructed (GObject *object) message_list, "message-selected", G_CALLBACK (mail_shell_content_message_selected_cb), shell_content); + + e_mail_reader_connect_headers (reader); } static guint32 diff --git a/modules/mail/em-mailer-prefs.c b/modules/mail/em-mailer-prefs.c index ed5e82d7ea..a885c72744 100644 --- a/modules/mail/em-mailer-prefs.c +++ b/modules/mail/em-mailer-prefs.c @@ -46,6 +46,7 @@ #include "shell/e-shell-utils.h" #include "e-mail-label-manager.h" +#include "e-mail-reader-utils.h" #include "mail-config.h" #include "em-folder-selection-button.h" #include "em-junk.h" @@ -417,7 +418,7 @@ emmp_save_headers (EMMailerPrefs *prefs) header_list = NULL; valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (prefs->header_list_store), &iter); while (valid) { - struct _EMMailerPrefsHeader h; + struct _EMailReaderHeader h; gboolean enabled; gchar *xml; @@ -427,7 +428,7 @@ emmp_save_headers (EMMailerPrefs *prefs) -1); h.enabled = enabled; - if ((xml = em_mailer_prefs_header_to_xml (&h))) + if ((xml = e_mail_reader_header_to_xml (&h))) header_list = g_slist_append (header_list, xml); valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (prefs->header_list_store), &iter); @@ -1086,9 +1087,9 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs, header_add_list = NULL; default_header_hash = g_hash_table_new (g_str_hash, g_str_equal); for (i = 0; i < G_N_ELEMENTS (default_headers); i++) { - struct _EMMailerPrefsHeader *h; + EMailReaderHeader *h; - h = g_malloc (sizeof (struct _EMMailerPrefsHeader)); + h = g_malloc (sizeof (EMailReaderHeader)); h->is_default = TRUE; h->name = g_strdup (default_headers[i]); h->enabled = strcmp ((gchar *)default_headers[i], "x-evolution-mailer") != 0; @@ -1100,15 +1101,15 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs, header_config_list = gconf_client_get_list (prefs->gconf, "/apps/evolution/mail/display/headers", GCONF_VALUE_STRING, NULL); p = header_config_list; while (p) { - struct _EMMailerPrefsHeader *h, *def; + EMailReaderHeader *h, *def; gchar *xml = (gchar *) p->data; - h = em_mailer_prefs_header_from_xml (xml); + h = e_mail_reader_header_from_xml (xml); if (h) { def = g_hash_table_lookup (default_header_hash, h->name); if (def) { def->enabled = h->enabled; - em_mailer_prefs_header_free (h); + e_mail_reader_header_free (h); } else { h->is_default = FALSE; header_add_list = g_slist_append (header_add_list, h); @@ -1124,7 +1125,7 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs, p = header_add_list; while (p) { - struct _EMMailerPrefsHeader *h = (struct _EMMailerPrefsHeader *) p->data; + struct _EMailReaderHeader *h = (struct _EMailReaderHeader *) p->data; const gchar *name; if (g_ascii_strcasecmp (h->name, EM_FORMAT_HEADER_XMAILER) == 0) @@ -1140,7 +1141,7 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs, HEADER_LIST_HEADER_COLUMN, h->name, -1); - em_mailer_prefs_header_free (h); + e_mail_reader_header_free (h); p = p->next; } @@ -1237,112 +1238,3 @@ em_mailer_prefs_new (EShell *shell) return GTK_WIDGET (new); } - -static struct _EMMailerPrefsHeader * -emmp_header_from_xmldoc (xmlDocPtr doc) -{ - struct _EMMailerPrefsHeader *h; - xmlNodePtr root; - xmlChar *name; - - if (doc == NULL) - return NULL; - - root = doc->children; - if (strcmp ((gchar *)root->name, "header") != 0) - return NULL; - - name = xmlGetProp (root, (const guchar *)"name"); - if (name == NULL) - return NULL; - - h = g_malloc0 (sizeof (struct _EMMailerPrefsHeader)); - h->name = g_strdup ((gchar *)name); - xmlFree (name); - - if (xmlHasProp (root, (const guchar *)"enabled")) - h->enabled = 1; - else - h->enabled = 0; - - return h; -} - -/** - * em_mailer_prefs_header_from_xml - * @xml: XML configuration data - * - * Parses passed XML data, which should be of - * the format
, and - * returns a EMMailerPrefs structure, or NULL if there - * is an error. - **/ -struct _EMMailerPrefsHeader * -em_mailer_prefs_header_from_xml (const gchar *xml) -{ - struct _EMMailerPrefsHeader *header; - xmlDocPtr doc; - - if (!(doc = xmlParseDoc ((guchar *) xml))) - return NULL; - - header = emmp_header_from_xmldoc (doc); - xmlFreeDoc (doc); - - return header; -} - -/** - * em_mailer_prefs_header_free - * @header: header to free - * - * Frees the memory associated with the passed header - * structure. - */ -void -em_mailer_prefs_header_free (struct _EMMailerPrefsHeader *header) -{ - if (header == NULL) - return; - - g_free (header->name); - g_free (header); -} - -/** - * em_mailer_prefs_header_to_xml - * @header: header from which to generate XML - * - * Returns the passed header as a XML structure, - * or NULL on error - */ -gchar * -em_mailer_prefs_header_to_xml (struct _EMMailerPrefsHeader *header) -{ - xmlDocPtr doc; - xmlNodePtr root; - xmlChar *xml; - gchar *out; - gint size; - - g_return_val_if_fail (header != NULL, NULL); - g_return_val_if_fail (header->name != NULL, NULL); - - doc = xmlNewDoc ((const guchar *)"1.0"); - - root = xmlNewDocNode (doc, NULL, (const guchar *)"header", NULL); - xmlSetProp (root, (const guchar *)"name", (guchar *)header->name); - if (header->enabled) - xmlSetProp (root, (const guchar *)"enabled", NULL); - - xmlDocSetRootElement (doc, root); - xmlDocDumpMemory (doc, &xml, &size); - xmlFreeDoc (doc); - - out = g_malloc (size + 1); - memcpy (out, xml, size); - out[size] = '\0'; - xmlFree (xml); - - return out; -} diff --git a/modules/mail/em-mailer-prefs.h b/modules/mail/em-mailer-prefs.h index 8ad6ad2f64..db77493416 100644 --- a/modules/mail/em-mailer-prefs.h +++ b/modules/mail/em-mailer-prefs.h @@ -50,13 +50,6 @@ G_BEGIN_DECLS typedef struct _EMMailerPrefs EMMailerPrefs; typedef struct _EMMailerPrefsClass EMMailerPrefsClass; -typedef struct _EMMailerPrefsHeader EMMailerPrefsHeader; - -struct _EMMailerPrefsHeader { - gchar *name; - guint enabled:1; - guint is_default:1; -}; struct _EMMailerPrefs { GtkVBox parent_object; @@ -120,11 +113,6 @@ GtkWidget * create_combo_text_widget (void); GtkWidget * em_mailer_prefs_new (EShell *shell); -EMMailerPrefsHeader * - em_mailer_prefs_header_from_xml (const gchar *xml); -gchar * em_mailer_prefs_header_to_xml (EMMailerPrefsHeader *header); -void em_mailer_prefs_header_free (EMMailerPrefsHeader *header); - G_END_DECLS #endif /* EM_MAILER_PREFS_H */ -- cgit v1.2.3