static struct Receive {
GtkWidget *pop3_frame;
+ GtkWidget *use_apop_chkbtn;
GtkWidget *rmmail_chkbtn;
GtkWidget *leave_time_entry;
GtkWidget *getall_chkbtn;
} compose;
static struct Privacy {
+ GtkWidget *default_privacy_system;
GtkWidget *default_encrypt_chkbtn;
GtkWidget *default_sign_chkbtn;
+ GtkWidget *save_clear_text_chkbtn;
} privacy;
#if USE_OPENSSL
static void prefs_account_protocol_set_optmenu (PrefParam *pparam);
static void prefs_account_protocol_activated (GtkMenuItem *menuitem);
+static void prefs_account_set_string_from_optmenu (PrefParam *pparam);
+static void prefs_account_set_optmenu_from_string (PrefParam *pparam);
+
static void prefs_account_imap_auth_type_set_data_from_optmenu
(PrefParam *pparam);
static void prefs_account_imap_auth_type_set_optmenu (PrefParam *pparam);
&receive.inbox_entry, prefs_set_data_from_entry, prefs_set_entry},
/* Receive */
+ {"use_apop_auth", "FALSE", &tmp_ac_prefs.use_apop_auth, P_BOOL,
+ &receive.use_apop_chkbtn,
+ prefs_set_data_from_toggle, prefs_set_toggle},
+
{"remove_mail", "TRUE", &tmp_ac_prefs.rmmail, P_BOOL,
&receive.rmmail_chkbtn,
prefs_set_data_from_toggle, prefs_set_toggle},
prefs_set_data_from_entry, prefs_set_entry},
/* Privacy */
+ {"default_privacy_system", "", &tmp_ac_prefs.default_privacy_system, P_STRING,
+ &privacy.default_privacy_system,
+ prefs_account_set_string_from_optmenu, prefs_account_set_optmenu_from_string},
{"default_encrypt", "FALSE", &tmp_ac_prefs.default_encrypt, P_BOOL,
&privacy.default_encrypt_chkbtn,
prefs_set_data_from_toggle, prefs_set_toggle},
{"default_sign", "FALSE", &tmp_ac_prefs.default_sign, P_BOOL,
&privacy.default_sign_chkbtn,
prefs_set_data_from_toggle, prefs_set_toggle},
+ {"save_clear_text", "FALSE", &tmp_ac_prefs.save_encrypted_as_clear_text, P_BOOL,
+ &privacy.save_clear_text_chkbtn,
+ prefs_set_data_from_toggle, prefs_set_toggle},
#if USE_OPENSSL
/* SSL */
if (id < 0) g_warning("wrong account id: %d\n", id);
ac_prefs->account_id = id;
+ if (ac_prefs->protocol == A_APOP) {
+ debug_print("converting protocol A_APOP to new prefs.\n");
+ ac_prefs->protocol = A_POP3;
+ ac_prefs->use_apop_auth = TRUE;
+ }
+
prefs_custom_header_read_config(ac_prefs);
}
return last_id + 1;
}
+void update_privacy_system_menu() {
+ GtkWidget *menu;
+ GtkWidget *menuitem;
+ GSList *system_ids, *cur;
+
+ menu = gtk_menu_new();
+
+ menuitem = gtk_menu_item_new_with_label(_("None"));
+ gtk_widget_show(menuitem);
+ g_object_set_data(G_OBJECT(menuitem), MENU_VAL_ID, "");
+ gtk_menu_append(GTK_MENU(menu), menuitem);
+
+ system_ids = privacy_get_system_ids();
+ for (cur = system_ids; cur != NULL; cur = g_slist_next(cur)) {
+ gchar *id = (gchar *) cur->data;
+ const gchar *name;
+
+ name = privacy_system_get_name(id);
+ menuitem = gtk_menu_item_new_with_label(name);
+ gtk_widget_show(menuitem);
+ g_object_set_data_full(G_OBJECT(menuitem), MENU_VAL_ID, id, g_free);
+ gtk_menu_append(GTK_MENU(menu), menuitem);
+ }
+
+ gtk_option_menu_set_menu(GTK_OPTION_MENU(privacy.default_privacy_system), menu);
+}
+
PrefsAccount *prefs_account_open(PrefsAccount *ac_prefs)
{
gboolean new_account = FALSE;
tmp_ac_prefs = *ac_prefs;
+ update_privacy_system_menu();
+
if (new_account) {
PrefsAccount *def_ac;
gchar *buf;
optmenu_menu = gtk_menu_new ();
- MENUITEM_ADD (optmenu_menu, menuitem, _("POP3 (normal)"), A_POP3);
- SET_ACTIVATE (menuitem);
- MENUITEM_ADD (optmenu_menu, menuitem, _("POP3 (APOP auth)"), A_APOP);
+ MENUITEM_ADD (optmenu_menu, menuitem, _("POP3"), A_POP3);
SET_ACTIVATE (menuitem);
MENUITEM_ADD (optmenu_menu, menuitem, _("IMAP4"), A_IMAP4);
SET_ACTIVATE (menuitem);
GtkWidget *vbox1;
GtkWidget *frame1;
GtkWidget *vbox2;
+ GtkWidget *use_apop_chkbtn;
GtkWidget *rmmail_chkbtn;
GtkWidget *hbox_spc;
GtkWidget *leave_time_label;
gtk_container_add (GTK_CONTAINER (frame1), vbox2);
gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
+ PACK_CHECK_BUTTON (vbox2, use_apop_chkbtn,
+ _("Use secure authentication (APOP)"));
+
PACK_CHECK_BUTTON (vbox2, rmmail_chkbtn,
_("Remove messages on server when received"));
_("`Get all' checks for new messages on this account"));
receive.pop3_frame = frame1;
+ receive.use_apop_chkbtn = use_apop_chkbtn;
receive.rmmail_chkbtn = rmmail_chkbtn;
receive.leave_time_entry = leave_time_entry;
receive.getall_chkbtn = getall_chkbtn;
static void prefs_account_privacy_create(void)
{
GtkWidget *vbox1;
- GtkWidget *frame_mode;
- GtkWidget *vbox_mode;
- GtkWidget *frame1;
GtkWidget *vbox2;
GtkWidget *hbox1;
GtkWidget *label;
+ GtkWidget *default_privacy_system;
GtkWidget *default_encrypt_chkbtn;
GtkWidget *default_sign_chkbtn;
- GtkWidget *gnupg_mime_radiobtn;
- GtkWidget *gnupg_inline_radiobtn;
- GtkWidget *defaultkey_radiobtn;
- GtkWidget *emailkey_radiobtn;
- GtkWidget *customkey_radiobtn;
- GtkWidget *customkey_entry;
+ GtkWidget *save_clear_text_chkbtn;
vbox1 = gtk_vbox_new (FALSE, VSPACING);
gtk_widget_show (vbox1);
gtk_widget_show (vbox2);
gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
+ hbox1 = gtk_hbox_new(FALSE, 8);
+ gtk_widget_show (hbox1);
+ gtk_container_add (GTK_CONTAINER(vbox2), hbox1);
+
+ label = gtk_label_new(_("Default privacy system"));
+ gtk_widget_show(label);
+ gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
+
+ default_privacy_system = gtk_option_menu_new();
+ gtk_widget_show (default_privacy_system);
+ gtk_box_pack_start (GTK_BOX(hbox1), default_privacy_system, TRUE, TRUE, 0);
+
PACK_CHECK_BUTTON (vbox2, default_encrypt_chkbtn,
_("Encrypt message by default"));
PACK_CHECK_BUTTON (vbox2, default_sign_chkbtn,
_("Sign message by default"));
-
+ PACK_CHECK_BUTTON (vbox2, save_clear_text_chkbtn,
+ _("Save sent encrypted messages as clear text"));
+
+ privacy.default_privacy_system = default_privacy_system;
privacy.default_encrypt_chkbtn = default_encrypt_chkbtn;
privacy.default_sign_chkbtn = default_sign_chkbtn;
+ privacy.save_clear_text_chkbtn = save_clear_text_chkbtn;
}
#if USE_OPENSSL
return -1;
}
if (((protocol == A_POP3) ||
- (protocol == A_APOP) ||
(protocol == A_LOCAL && !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(basic.mailcmd_chkbtn))) ||
(protocol == A_NONE)) &&
*gtk_entry_get_text(GTK_ENTRY(basic.smtpserv_entry)) == '\0') {
alertpanel_error(_("SMTP server is not entered."));
return -1;
}
- if ((protocol == A_POP3 || protocol == A_APOP || protocol == A_IMAP4) &&
+ if ((protocol == A_POP3 || protocol == A_IMAP4) &&
*gtk_entry_get_text(GTK_ENTRY(basic.uid_entry)) == '\0') {
alertpanel_error(_("User ID is not entered."));
return -1;
}
- if ((protocol == A_POP3 || protocol == A_APOP) &&
+ if (protocol == A_POP3 &&
*gtk_entry_get_text(GTK_ENTRY(basic.recvserv_entry)) == '\0') {
alertpanel_error(_("POP3 server is not entered."));
return -1;
GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
GtkWidget *menu;
GtkWidget *menuitem;
- GList *children;
- gint list_order[] = {
- 0, /* A_POP3 */
- 1, /* A_APOP */
- -1, /* A_RPOP */
- 2, /* A_IMAP4 */
- 3, /* A_NNTP */
- 4, /* A_LOCAL */
- 5, /* A_NONE */
- };
+ gint index;
protocol = *((RecvProtocol *)pparam->data);
- if (protocol < 0 || protocol > A_NONE) return;
- if (list_order[protocol] < 0) return;
- gtk_option_menu_set_history(optmenu, list_order[protocol]);
+ index = menu_find_option_menu_index
+ (optmenu, GINT_TO_POINTER(protocol), NULL);
+ if (index < 0) return;
+ gtk_option_menu_set_history(optmenu, index);
menu = gtk_option_menu_get_menu(optmenu);
menu_set_insensitive_all(GTK_MENU_SHELL(menu));
-#define SET_NTH_SENSITIVE(proto) \
-{ \
- menuitem = g_list_nth_data(children, list_order[proto]); \
- if (menuitem) \
- gtk_widget_set_sensitive(menuitem, TRUE); \
-}
-
- children = GTK_MENU_SHELL(menu)->children;
- SET_NTH_SENSITIVE(protocol);
- if (protocol == A_POP3) {
- SET_NTH_SENSITIVE(A_APOP);
- } else if (protocol == A_APOP) {
- SET_NTH_SENSITIVE(A_POP3);
- }
-
-#undef SET_NTH_SENSITIVE
-
menuitem = gtk_menu_get_active(GTK_MENU(menu));
+ gtk_widget_set_sensitive(menuitem, TRUE);
gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
}
gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
}
+static void prefs_account_set_string_from_optmenu(PrefParam *pparam)
+{
+ GtkWidget *menu;
+ GtkWidget *menuitem;
+ gchar **str;
+
+ g_return_if_fail(*pparam->widget != NULL);
+
+ menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
+ menuitem = gtk_menu_get_active(GTK_MENU(menu));
+ if (menuitem == NULL)
+ return;
+
+ str = (gchar **) pparam->data;
+ g_free(*str);
+ *str = g_strdup(g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID));
+}
+
+static void prefs_account_set_optmenu_from_string(PrefParam *pparam)
+{
+ GtkWidget *optionmenu;
+ GtkWidget *menu;
+ gboolean found = FALSE;
+ GList *children, *cur;
+ gchar *prefsid;
+ guint i = 0;
+
+ g_return_if_fail(*pparam->widget != NULL);
+
+ prefsid = *((gchar **) pparam->data);
+ if (prefsid == NULL)
+ return;
+
+ optionmenu = *pparam->widget;
+ menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(optionmenu));
+ children = gtk_container_children(GTK_CONTAINER(menu));
+ for (cur = children; cur != NULL; cur = g_list_next(cur)) {
+ GtkWidget *item = (GtkWidget *) cur->data;
+ gchar *id;
+
+ id = g_object_get_data(G_OBJECT(item), MENU_VAL_ID);
+ if (id != NULL && strcmp(id, prefsid) == 0) {
+ found = TRUE;
+ gtk_option_menu_set_history(GTK_OPTION_MENU(optionmenu), i);
+ }
+ i++;
+ }
+
+ if (!found) {
+ gchar *name;
+ GtkWidget *menuitem;
+
+ name = g_strdup_printf(_("Unsupported (%s)"), prefsid);
+ menuitem = gtk_menu_item_new_with_label(name);
+ gtk_widget_show(menuitem);
+ g_object_set_data_full(G_OBJECT(menuitem), MENU_VAL_ID, g_strdup(prefsid), g_free);
+ gtk_menu_append(GTK_MENU(menu), menuitem);
+ g_free(name);
+
+ gtk_option_menu_set_history(GTK_OPTION_MENU(optionmenu), i);
+ }
+
+ g_list_free(children);
+}
+
static void prefs_account_protocol_activated(GtkMenuItem *menuitem)
{
RecvProtocol protocol;