implement saving of outgoing messages to current folder.
[claws.git] / src / compose.c
index 30c016952b8c24649cef4f9232fd38faca2e4cac..aa1959c073a668671b4a2d7e2da14cb7aee12e4b 100644 (file)
@@ -598,6 +598,17 @@ Compose *compose_generic_new(PrefsAccount *account, const gchar *mailto, FolderI
                        compose_entry_append(compose, mailto, COMPOSE_NEWSGROUPS);
                }
        }
+
+       /* Set save folder */
+       if(item && item->prefs && item->prefs->save_copy_to_folder) {
+               gchar *folderidentifier;
+
+               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), prefs_common.savemsg);
+               folderidentifier = folder_item_get_identifier(item);
+               gtk_entry_set_text(GTK_ENTRY(compose->savemsg_entry), folderidentifier);
+               g_free(folderidentifier);
+       }
+
        gtk_widget_grab_focus(compose->subject_entry);
 
        if (prefs_common.auto_exteditor)
@@ -730,6 +741,16 @@ static void compose_generic_reply(MsgInfo *msginfo, gboolean quote,
                menu_set_toggle(ifactory, "/Message/Request Return Receipt", TRUE);
        }
 
+       /* Set save folder */
+       if(msginfo->folder && msginfo->folder->prefs && msginfo->folder->prefs->save_copy_to_folder) {
+               gchar *folderidentifier;
+
+               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), TRUE);
+               folderidentifier = folder_item_get_identifier(msginfo->folder);
+               gtk_entry_set_text(GTK_ENTRY(compose->savemsg_entry), folderidentifier);
+               g_free(folderidentifier);
+       }
+
        if (compose_parse_header(compose, msginfo) < 0) return;
        compose_reply_set_entry(compose, msginfo, to_all, ignore_replyto,
                                followup_and_reply_to);
@@ -4014,7 +4035,9 @@ static GtkWidget *compose_create_others(Compose *compose)
        savemsg_checkbtn = gtk_check_button_new_with_label(_("Save Message to "));
        gtk_widget_show(savemsg_checkbtn);
        gtk_table_attach(GTK_TABLE(table), savemsg_checkbtn, 0, 1, rowcount, rowcount + 1, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 0, 0);
-       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(savemsg_checkbtn), prefs_common.savemsg);
+       if(folder_get_default_outbox()) {
+               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(savemsg_checkbtn), prefs_common.savemsg);
+       }
        gtk_signal_connect(GTK_OBJECT(savemsg_checkbtn), "toggled",
                            GTK_SIGNAL_FUNC(compose_savemsg_checkbtn_cb), compose);
 
@@ -4022,9 +4045,11 @@ static GtkWidget *compose_create_others(Compose *compose)
        gtk_widget_show(savemsg_entry);
        gtk_table_attach_defaults(GTK_TABLE(table), savemsg_entry, 1, 2, rowcount, rowcount + 1);
        gtk_editable_set_editable(GTK_EDITABLE(savemsg_entry), prefs_common.savemsg);
-       folderidentifier = folder_item_get_identifier(folder_get_default_outbox());
-       gtk_entry_set_text(GTK_ENTRY(savemsg_entry), folderidentifier);
-       g_free(folderidentifier);
+       if(folder_get_default_outbox()) {
+               folderidentifier = folder_item_get_identifier(folder_get_default_outbox());
+               gtk_entry_set_text(GTK_ENTRY(savemsg_entry), folderidentifier);
+               g_free(folderidentifier);
+       }
 
        savemsg_select = gtk_button_new_with_label (_("Select ..."));
        gtk_widget_show (savemsg_select);