2006-06-15 [colin] 2.3.0cvs16
[claws.git] / src / messageview.c
index 4f31456841a8dcd0557cc6798f4a00d3fc98f642..d7382ace923285eadaa45a13b4dc1b73b392b362 100644 (file)
@@ -46,6 +46,7 @@
 #include "addressbook.h"
 #include "alertpanel.h"
 #include "inputdialog.h"
+#include "mainwindow.h"
 #include "manage_window.h"
 #include "procmsg.h"
 #include "procheader.h"
@@ -528,7 +529,7 @@ static gint disposition_notification_send(MsgInfo *msginfo)
        gchar *path;
         gchar *addr;
         gchar *addrp;
-
+       gchar *foo = NULL;
        if ((!msginfo->returnreceiptto) && 
            (!msginfo->dispositionnotificationto)) 
                return -1;
@@ -545,7 +546,7 @@ static gint disposition_notification_send(MsgInfo *msginfo)
                gchar *to_addr = g_strdup(to);
                extract_address(to_addr);
                extract_address(buf);
-               ok = strcmp(to_addr, buf);
+               ok = strcasecmp(to_addr, buf);
                g_free(to_addr);
        } else {
                strncpy(buf, _("<No Return-Path found>"), 
@@ -562,11 +563,11 @@ static gint disposition_notification_send(MsgInfo *msginfo)
                    "Return path: %s\n"
                    "It is advised to not to send the return receipt."),
                  to, buf);
-               val = alertpanel_full(_("Warning"), message, _("_Send"),
-                                       _("+_Don't Send"), NULL, FALSE,
-                                       NULL, ALERT_WARNING, G_ALERTALTERNATE);
+               val = alertpanel_full(_("Warning"), message,
+                               _("_Don't Send"), _("_Send"), NULL, FALSE,
+                               NULL, ALERT_WARNING, G_ALERTDEFAULT);
                g_free(message);                                
-               if (val != G_ALERTDEFAULT)
+               if (val != G_ALERTALTERNATE)
                        return -1;
        }
 
@@ -580,9 +581,9 @@ static gint disposition_notification_send(MsgInfo *msginfo)
                    "but according to its 'To:' and 'CC:' headers it was not\n"
                    "officially addressed to you.\n"
                    "It is advised to not to send the return receipt."),
-                 _("_Send"), _("+_Don't Send"),NULL, FALSE,
-                 NULL, ALERT_WARNING, G_ALERTALTERNATE);
-               if (val != G_ALERTDEFAULT)
+                 _("_Don't Send"), _("_Send"), NULL, FALSE,
+                 NULL, ALERT_WARNING, G_ALERTDEFAULT);
+               if (val != G_ALERTALTERNATE)
                        return -1;
        }
 
@@ -653,7 +654,7 @@ static gint disposition_notification_send(MsgInfo *msginfo)
                g_free(path);
        }               
 
-       fprintf(fp, "\n");
+       fprintf(fp, "X-Sylpheed-End-Special-Headers: 1\n");
        
        /* Date */
        get_rfc822_date(buf, sizeof(buf));
@@ -708,8 +709,9 @@ static gint disposition_notification_send(MsgInfo *msginfo)
 
        /* send it */
        path = folder_item_fetch_msg(queue, num);
-       ok = procmsg_send_message_queue(path);
+       ok = procmsg_send_message_queue(path, &foo);
        g_free(path);
+       g_free(foo);
        folder_item_remove_msg(queue, num);
 
        return ok;
@@ -770,7 +772,15 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo,
                                messageview->toolbar->learn_spam_btn, 
                                procmsg_spam_can_learn());
        }
+       messageview->updating = TRUE;
        mimeinfo = procmime_scan_message(msginfo);
+       messageview->updating = FALSE;
+       
+       if (messageview->deferred_destroy) {
+               messageview_destroy(messageview);
+               return 0;
+       }
+
        if (!mimeinfo) {
                textview_show_error(messageview->mimeview->textview);
                return -1;
@@ -778,18 +788,30 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo,
 
        while ((encinfo = find_encrypted_part(mimeinfo)) != NULL) {
                debug_print("decrypting message part\n");
-               if (privacy_mimeinfo_decrypt(encinfo) < 0)
+               if (privacy_mimeinfo_decrypt(encinfo) < 0) {
+                       alertpanel_error(_("Couldn't decrypt: %s"),
+                               privacy_get_error());
                        break;
+               }
        }
        
+       messageview->updating = TRUE;
        file = procmsg_get_message_file_path(msginfo);
+       messageview->updating = FALSE;
+       
+       if (messageview->deferred_destroy) {
+               g_free(file);
+               messageview_destroy(messageview);
+               return 0;
+       }
+
        if (!file) {
                g_warning("can't get message file path.\n");
                procmime_mimeinfo_free_all(mimeinfo);
                textview_show_error(messageview->mimeview->textview);
                return -1;
        }
-
+       
        if (messageview->msginfo != msginfo) {
                procmsg_msginfo_free(messageview->msginfo);
                messageview->msginfo = procmsg_msginfo_get_full_info(msginfo);
@@ -822,6 +844,8 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo,
 
        messageview_set_position(messageview, 0);
 
+       main_create_mailing_list_menu(messageview->mainwin, messageview->msginfo);
+
        if (messageview->msginfo->partial_recv)
                partial_recv_show(messageview->noticeview, 
                                  messageview->msginfo);
@@ -1538,7 +1562,7 @@ static void reedit_cb(gpointer data, guint action, GtkWidget *widget)
            !folder_has_parent_of_type(msginfo->folder, F_QUEUE)) 
                return;
 
-       compose_reedit(msginfo);
+       compose_reedit(msginfo, FALSE);
 }
 
 static void addressbook_open_cb(gpointer data, guint action, GtkWidget *widget)