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>");
 }

Reply via email to