/*
* Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2016 Hiroyuki Yamamoto and the Claws Mail team
+ * Copyright (C) 1999-2018 the Claws Mail team and Hiroyuki Yamamoto
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#include "autofaces.h"
#include "spell_entry.h"
#include "headers.h"
-#include "claws_io.h"
+#include "file-utils.h"
#ifdef USE_LDAP
#include "password.h"
compose = compose_create(account, item, COMPOSE_NEW, FALSE);
compose_apply_folder_privacy_settings(compose, item);
+ if (privacy_system_can_sign(compose->privacy_system) == FALSE &&
+ (account->default_encrypt || account->default_sign))
+ alertpanel_error(_("You have opted to sign and/or encrypt this "
+ "message but have not selected a privacy system.\n\n"
+ "Signing and encrypting have been disabled for this "
+ "message."));
+
/* override from name if mailto asked for it */
if (mailto_from) {
gtk_entry_set_text(GTK_ENTRY(compose->from_name), mailto_from);
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);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(compose->savemsg_combo), TRUE);
folderidentifier = folder_item_get_identifier(item);
compose_set_save_to(compose, folderidentifier);
g_free(folderidentifier);
cm_return_if_fail(compose != NULL);
cm_return_if_fail(account != NULL);
- if (override_pref == FALSE && account->default_encrypt_reply == FALSE)
+ if (privacy_system_can_encrypt(compose->privacy_system) == FALSE ||
+ (override_pref == FALSE && account->default_encrypt_reply == FALSE))
return;
if (account->default_privacy_system && strlen(account->default_privacy_system))
static void compose_force_signing(Compose *compose, PrefsAccount *account, const gchar *system)
{
const gchar *privacy = NULL;
+ if (privacy_system_can_sign(compose->privacy_system) == FALSE)
+ return;
if (account->default_privacy_system && strlen(account->default_privacy_system))
privacy = account->default_privacy_system;
gchar *folderidentifier;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(compose->savemsg_combo), TRUE);
folderidentifier = folder_item_get_identifier(msginfo->folder);
compose_set_save_to(compose, folderidentifier);
g_free(folderidentifier);
}
g_free(s_system);
+ if (privacy_system_can_sign(compose->privacy_system) == FALSE &&
+ ((account->default_encrypt_reply && MSG_IS_ENCRYPTED(compose->replyinfo->flags)) ||
+ (account->default_sign_reply && MSG_IS_SIGNED(compose->replyinfo->flags))))
+ alertpanel_error(_("You have opted to sign and/or encrypt this "
+ "message but have not selected a privacy system.\n\n"
+ "Signing and encrypting have been disabled for this "
+ "message."));
+
SIGNAL_BLOCK(textbuf);
if (account->auto_sig)
gchar *folderidentifier;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(compose->savemsg_combo), TRUE);
folderidentifier = folder_item_get_identifier(msginfo->folder);
compose_set_save_to(compose, folderidentifier);
g_free(folderidentifier);
/* Set message save folder */
if (!procheader_get_header_from_msginfo(msginfo, &queueheader_buf, "SCF:")) {
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(compose->savemsg_combo), TRUE);
compose_set_save_to(compose, &queueheader_buf[4]);
g_free(queueheader_buf);
}
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);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(compose->savemsg_combo), TRUE);
folderidentifier = folder_item_get_identifier(item);
compose_set_save_to(compose, folderidentifier);
g_free(folderidentifier);
compose_set_title(compose);
- if (account->default_sign && compose->mode != COMPOSE_REDIRECT)
+ compose_activate_privacy_system(compose, account, FALSE);
+
+ if (account->default_sign && privacy_system_can_sign(compose->privacy_system) &&
+ compose->mode != COMPOSE_REDIRECT)
cm_toggle_menu_set_active_full(compose->ui_manager, "Menu/Options/Sign", TRUE);
else
cm_toggle_menu_set_active_full(compose->ui_manager, "Menu/Options/Sign", FALSE);
- if (account->default_encrypt && compose->mode != COMPOSE_REDIRECT)
+ if (account->default_encrypt && privacy_system_can_encrypt(compose->privacy_system) &&
+ compose->mode != COMPOSE_REDIRECT)
cm_toggle_menu_set_active_full(compose->ui_manager, "Menu/Options/Encrypt", TRUE);
else
cm_toggle_menu_set_active_full(compose->ui_manager, "Menu/Options/Encrypt", FALSE);
-
- compose_activate_privacy_system(compose, account, FALSE);
if (!init && compose->mode != COMPOSE_REDIRECT) {
undo_block(compose->undostruct);
rewind(fp);
content = file_read_stream_to_str(fp);
- str_write_to_file(content, tmp_enc_file);
+ str_write_to_file(content, tmp_enc_file, TRUE);
g_free(content);
/* Now write the unencrypted body. */
return attach_scrwin;
}
-static void compose_savemsg_checkbtn_cb(GtkWidget *widget, Compose *compose);
static void compose_savemsg_select_cb(GtkWidget *widget, Compose *compose);
static GtkWidget *compose_create_others(Compose *compose)
if (account_get_special_folder(compose->account, F_OUTBOX)) {
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(savemsg_checkbtn), prefs_common.savemsg);
}
- g_signal_connect(G_OBJECT(savemsg_checkbtn), "toggled",
- G_CALLBACK(compose_savemsg_checkbtn_cb), compose);
savemsg_combo = gtk_combo_box_text_new_with_entry();
compose->savemsg_checkbtn = savemsg_checkbtn;
g_signal_connect_after(G_OBJECT(savemsg_combo), "grab_focus",
G_CALLBACK(compose_grab_focus_cb), compose);
if (account_get_special_folder(compose->account, F_OUTBOX)) {
+ if (compose->account->set_sent_folder)
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(savemsg_checkbtn), TRUE);
+ else
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(savemsg_checkbtn), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(savemsg_combo), TRUE);
folderidentifier = folder_item_get_identifier(account_get_special_folder
(compose->account, F_OUTBOX));
compose_set_save_to(compose, folderidentifier);
return table;
}
-static void compose_savemsg_checkbtn_cb(GtkWidget *widget, Compose *compose)
-{
- gtk_widget_set_sensitive(GTK_WIDGET(compose->savemsg_combo),
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn)));
-}
-
static void compose_savemsg_select_cb(GtkWidget *widget, Compose *compose)
{
FolderItem *dest;
clipboard = gtk_clipboard_get(GDK_SELECTION_PRIMARY);
gtk_text_buffer_remove_selection_clipboard(buffer, clipboard);
+ message_search_close(compose);
gtk_widget_destroy(compose->window);
toolbar_destroy(compose->toolbar);
g_free(compose->toolbar);
}
/* Set message save folder */
- if (account_get_special_folder(compose->account, F_OUTBOX)) {
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), prefs_common.savemsg);
- }
- g_signal_connect(G_OBJECT(compose->savemsg_checkbtn), "toggled",
- G_CALLBACK(compose_savemsg_checkbtn_cb), compose);
-
compose_set_save_to(compose, NULL);
- if (account_get_special_folder(compose->account, F_OUTBOX)) {
+ if (compose->folder && compose->folder->prefs && compose->folder->prefs->save_copy_to_folder) {
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(compose->savemsg_combo), TRUE);
+ folderidentifier = folder_item_get_identifier(compose->folder);
+ compose_set_save_to(compose, folderidentifier);
+ g_free(folderidentifier);
+ } else if (account_get_special_folder(compose->account, F_OUTBOX)) {
+ if (compose->account->set_sent_folder)
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), TRUE);
+ else
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(compose->savemsg_combo), TRUE);
folderidentifier = folder_item_get_identifier(account_get_special_folder
(compose->account, F_OUTBOX));
compose_set_save_to(compose, folderidentifier);
static void compose_apply_folder_privacy_settings(Compose *compose, FolderItem *folder_item)
{
if (folder_item != NULL) {
- if (folder_item->prefs->always_sign != SIGN_OR_ENCRYPT_DEFAULT) {
+ if (folder_item->prefs->always_sign != SIGN_OR_ENCRYPT_DEFAULT &&
+ privacy_system_can_sign(compose->privacy_system)) {
compose_use_signing(compose,
(folder_item->prefs->always_sign == SIGN_OR_ENCRYPT_ALWAYS) ? TRUE : FALSE);
}
- if (folder_item->prefs->always_encrypt != SIGN_OR_ENCRYPT_DEFAULT) {
+ if (folder_item->prefs->always_encrypt != SIGN_OR_ENCRYPT_DEFAULT &&
+ privacy_system_can_encrypt(compose->privacy_system)) {
compose_use_encryption(compose,
(folder_item->prefs->always_encrypt == SIGN_OR_ENCRYPT_ALWAYS) ? TRUE : FALSE);
}
/* Assume a list of no files, and data has ://, is a remote link */
gchar *tmpdata = g_strstrip(g_strdup(ddata));
gchar *tmpfile = get_tmp_file();
- str_write_to_file(tmpdata, tmpfile);
+ str_write_to_file(tmpdata, tmpfile, TRUE);
g_free(tmpdata);
compose_insert_file(compose, tmpfile);
claws_unlink(tmpfile);