Attached are some patches to support full headers. There is an issue of
how we want to handle a few issues like view headers and view source at
the same time. Let me know how you would like the toggling to work.
There appears to be a bonobo limitation.
w
Index: evolution-mail.xml
===================================================================
RCS file: /cvs/gnome/evolution/ui/evolution-mail.xml,v
retrieving revision 1.65
diff -u -r1.65 evolution-mail.xml
--- evolution-mail.xml 2001/05/15 16:25:19 1.65
+++ evolution-mail.xml 2001/05/16 04:43:26
@@ -174,7 +174,8 @@
_tip="Create a virtual folder for this subject"/>
<cmd name="ViewFullHeaders"
- _tip="Show all message headers in the displayed message"/>
+ _tip="Show all message headers in the displayed message"
+ type="toggle"/>
<cmd name="ViewHideRead"
_tip="Temporarily hide all messages that have already been read"
Index: folder-browser-factory.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/folder-browser-factory.c,v
retrieving revision 1.164
diff -u -r1.164 folder-browser-factory.c
--- folder-browser-factory.c 2001/05/15 16:27:02 1.164
+++ folder-browser-factory.c 2001/05/16 04:41:34
@@ -91,7 +91,7 @@
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 ("ViewFullHeaders", view_full_headers), */
BONOBO_UI_UNSAFE_VERB ("ViewHideRead", hide_read),
BONOBO_UI_UNSAFE_VERB ("ViewHideSelected", hide_selected),
BONOBO_UI_UNSAFE_VERB ("ViewShowAll", hide_none),
@@ -241,6 +241,12 @@
bonobo_ui_component_add_listener(uic, "ViewSource",
folder_browser_toggle_view_source, 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);
+
+ state = mail_config_get_view_full_headers();
+ bonobo_ui_component_set_prop(uic, "/commands/ViewFullHeaders", "state",
+state?"1":"0", NULL);
+ bonobo_ui_component_add_listener(uic, "ViewFullHeaders",
+folder_browser_toggle_view_full_headers, folder_browser);
+ /* FIXME: this kind of bypasses bonobo but seems the only way when we change
+components */
+ folder_browser_toggle_view_full_headers(uic, "",
+Bonobo_UIComponent_STATE_CHANGED, state?"1":"0", folder_browser);
if (fb->folder && CAMEL_IS_VTRASH_FOLDER(fb->folder)) {
bonobo_ui_component_set_prop(uic, "/commands/HideDeleted",
"sensitive", "0", NULL);
Index: folder-browser.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/folder-browser.c,v
retrieving revision 1.150
diff -u -r1.150 folder-browser.c
--- folder-browser.c 2001/05/14 21:28:36 1.150
+++ folder-browser.c 2001/05/16 04:24:29
@@ -398,6 +398,22 @@
}
void
+folder_browser_toggle_view_full_headers (BonoboUIComponent *component,
+ const char *path,
+ Bonobo_UIComponent_EventType type,
+ const char *state,
+ gpointer user_data)
+{
+ FolderBrowser *fb = user_data;
+
+ if (type != Bonobo_UIComponent_STATE_CHANGED)
+ return;
+
+ mail_config_set_view_full_headers (atoi (state));
+ mail_display_redisplay (fb->mail_display, TRUE);
+}
+
+void
vfolder_subject (GtkWidget *w, FolderBrowser *fb)
{
vfolder_gui_add_from_message (fb->mail_display->current_message, AUTO_SUBJECT,
fb->uri);
Index: folder-browser.h
===================================================================
RCS file: /cvs/gnome/evolution/mail/folder-browser.h,v
retrieving revision 1.33
diff -u -r1.33 folder-browser.h
--- folder-browser.h 2001/04/24 20:56:56 1.33
+++ folder-browser.h 2001/05/16 04:24:40
@@ -115,6 +115,13 @@
const char *state,
gpointer user_data);
+void folder_browser_toggle_view_full_headers (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,
Index: mail-config.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-config.c,v
retrieving revision 1.101
diff -u -r1.101 mail-config.c
--- mail-config.c 2001/05/14 17:18:03 1.101
+++ mail-config.c 2001/05/16 04:24:56
@@ -52,6 +52,7 @@
typedef struct {
gboolean thread_list;
gboolean view_source;
+ gboolean view_headers;
gboolean hide_deleted;
gint paned_size;
gboolean send_html;
@@ -699,6 +700,18 @@
mail_config_set_view_source (gboolean value)
{
config->view_source = value;
+}
+
+gboolean
+mail_config_get_view_full_headers (void)
+{
+ return config->view_headers;
+}
+
+void
+mail_config_set_view_full_headers (gboolean value)
+{
+ config->view_headers = value;
}
gboolean
Index: mail-format.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-format.c,v
retrieving revision 1.139
diff -u -r1.139 mail-format.c
--- mail-format.c 2001/05/14 17:18:03 1.139
+++ mail-format.c 2001/05/16 04:43:00
@@ -47,6 +47,8 @@
#include "mail-display.h"
#include "mail-mt.h"
#include "mail-crypto.h"
+#include "camel-mime-utils.h"
+#include "mail-config.h"
static char *get_data_wrapper_text (CamelDataWrapper *data);
@@ -749,19 +751,39 @@
"<table bgcolor=\"#EEEEEE\" width=\"100%%\" cellpadding=0
cellspacing=0>"
"<tr><td><table>\n");
- write_address(md, camel_mime_message_get_from(message),
- _("From:"), WRITE_BOLD);
- write_address(md, camel_mime_message_get_reply_to(message),
- _("Reply-To:"), 0);
- write_address(md, camel_mime_message_get_recipients(message,
CAMEL_RECIPIENT_TYPE_TO),
- _("To:"), WRITE_BOLD);
- write_address(md, camel_mime_message_get_recipients(message,
CAMEL_RECIPIENT_TYPE_CC),
- _("Cc:"), WRITE_BOLD);
-
- write_subject (camel_mime_message_get_subject (message), WRITE_BOLD, md->html,
md->stream);
-
- write_date (message,WRITE_BOLD, md->html, md->stream);
-
+ if (mail_config_get_view_full_headers()) {
+ struct _header_raw *headers = CAMEL_MIME_PART (message)->headers;
+ while (headers) {
+ char *row_begin, *row_end;
+
+ row_begin = g_strconcat (((struct _header_raw*)
+headers)->name,
+ ":", NULL);
+ write_field_row_begin (row_begin, WRITE_BOLD, md->html,
+md->stream);
+
+ row_end = g_strdup (((struct _header_raw*) headers)->value);
+ mail_html_write (md->html, md->stream, "<td>%s</td> </tr>",
+row_end);
+
+ free (row_begin);
+ free (row_end);
+
+ headers = headers->next;
+ }
+
+ } else {
+ write_address(md, camel_mime_message_get_from(message),
+ _("From:"), WRITE_BOLD);
+ write_address(md, camel_mime_message_get_reply_to(message),
+ _("Reply-To:"), 0);
+ write_address(md, camel_mime_message_get_recipients(message,
+CAMEL_RECIPIENT_TYPE_TO),
+ _("To:"), WRITE_BOLD);
+ write_address(md, camel_mime_message_get_recipients(message,
+CAMEL_RECIPIENT_TYPE_CC),
+ _("Cc:"), WRITE_BOLD);
+
+ write_subject (camel_mime_message_get_subject (message), WRITE_BOLD,
+md->html, md->stream);
+
+ write_date (message,WRITE_BOLD, md->html, md->stream);
+ }
+
mail_html_write (md->html, md->stream,
"</table></td></tr></table></td></tr></table></font>");
}