#include <string.h>
#include <stdlib.h>
#include <ctype.h>
-#if !GTK_CHECK_VERSION(3, 0, 0)
#include "gtkcmoptionmenu.h"
-#endif
#include "main.h"
#include "prefs_gtk.h"
#include "prefs_account.h"
+#include "prefs_receive.h"
#include "prefs_common.h"
#include "prefs_customheader.h"
#include "account.h"
#include "inputdialog.h"
#include "ssl_certificate.h"
#include "passwordstore.h"
+#include "file-utils.h"
static gboolean cancelled;
static gboolean new_account;
static GtkWidget *out_ssl_cert_browse_button;
#endif
+struct AutocheckWidgets {
+ GtkWidget *autochk_hour_spinbtn;
+ GtkWidget *autochk_min_spinbtn;
+ GtkWidget *autochk_sec_spinbtn;
+};
+
static GSList *prefs_pages = NULL;
typedef struct BasicPage
GtkWidget *inbox_entry;
GtkWidget *inbox_btn;
+ GtkWidget *autochk_frame;
+
GtkWidget *local_frame;
GtkWidget *local_inbox_label;
GtkWidget *local_inbox_entry;
GtkWidget *maxarticle_label;
GtkWidget *maxarticle_spinbtn;
GtkAdjustment *maxarticle_spinbtn_adj;
+
+ GtkWidget *autochk_checkbtn;
+ GtkWidget *autochk_use_default_checkbtn;
+ struct AutocheckWidgets *autochk_widgets;
} ReceivePage;
typedef struct SendPage
GtkWidget *nntpport_spinbtn;
GtkWidget *domain_checkbtn;
GtkWidget *domain_entry;
-#if !GTK_CHECK_VERSION(3, 0, 0)
GtkWidget *crosspost_checkbtn;
GtkWidget *crosspost_colormenu;
-#endif
#ifndef G_OS_WIN32
GtkWidget *tunnelcmd_checkbtn;
(PrefParam *pparam);
static void prefs_account_smtp_auth_type_set_optmenu (PrefParam *pparam);
+static void prefs_account_set_autochk_interval_from_widgets(PrefParam *pparam);
+static void prefs_account_set_autochk_interval_to_widgets(PrefParam *pparam);
+
static void prefs_account_enum_set_data_from_radiobtn (PrefParam *pparam);
static void prefs_account_enum_set_radiobtn (PrefParam *pparam);
-#if !GTK_CHECK_VERSION(3, 0, 0)
static void crosspost_color_toggled(void);
static void prefs_account_crosspost_set_data_from_colormenu(PrefParam *pparam);
static void prefs_account_crosspost_set_colormenu(PrefParam *pparam);
-#endif
static void prefs_account_nntpauth_toggled(GtkToggleButton *button,
gpointer user_data);
&receive_page.low_bandwidth_checkbtn,
prefs_set_data_from_toggle, prefs_set_toggle},
+ {"autochk_use_default", "TRUE", &tmp_ac_prefs.autochk_use_default, P_BOOL,
+ &receive_page.autochk_use_default_checkbtn,
+ prefs_set_data_from_toggle, prefs_set_toggle},
+
+ {"autochk_use_custom", "FALSE", &tmp_ac_prefs.autochk_use_custom, P_BOOL,
+ &receive_page.autochk_checkbtn,
+ prefs_set_data_from_toggle, prefs_set_toggle},
+
+ /* Here we lie a bit, passing a pointer to our custom struct,
+ * disguised as a GtkWidget pointer, to get around the
+ * inflexibility of PrefParam system. */
+ {"autochk_interval", "600", &tmp_ac_prefs.autochk_itv, P_INT,
+ (GtkWidget **)&receive_page.autochk_widgets,
+ prefs_account_set_autochk_interval_from_widgets,
+ prefs_account_set_autochk_interval_to_widgets},
+
{NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
};
&proxy_page.proxy_name_entry,
prefs_set_data_from_entry, prefs_set_entry},
- {"proxy_pass", "", &tmp_ac_prefs.proxy_info.proxy_pass, P_PASSWORD,
- &proxy_page.proxy_pass_entry,
- prefs_set_data_from_entry, prefs_set_entry},
+ {"proxy_pass", NULL, &tmp_ac_prefs.proxy_info.proxy_pass, P_PASSWORD,
+ NULL, NULL, NULL},
{NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
&advanced_page.tunnelcmd_entry,
prefs_set_data_from_entry, prefs_set_entry},
#endif
-#if !GTK_CHECK_VERSION(3, 0, 0)
{"mark_crosspost_read", "FALSE", &tmp_ac_prefs.mark_crosspost_read, P_BOOL,
&advanced_page.crosspost_checkbtn,
prefs_set_data_from_toggle, prefs_set_toggle},
&advanced_page.crosspost_colormenu,
prefs_account_crosspost_set_data_from_colormenu,
prefs_account_crosspost_set_colormenu},
-#endif
{"set_sent_folder", "FALSE", &tmp_ac_prefs.set_sent_folder, P_BOOL,
&advanced_page.sent_folder_checkbtn,
#endif
static void prefs_account_edit_custom_header (void);
+static void prefs_account_receive_itv_spinbutton_value_changed_cb(GtkWidget *w,
+ gpointer data);
#define COMBOBOX_PRIVACY_PLUGIN_ID 3
ReceivePage *page = (ReceivePage *) _page;
PrefsAccount *ac_prefs = (PrefsAccount *) data;
- GtkWidget *vbox1;
+ GtkWidget *vbox1, *vbox2, *vbox3, *vbox4;
+ GtkWidget *hbox1, *hbox2;
GtkWidget *frame1;
- GtkWidget *vbox2;
GtkWidget *use_apop_checkbtn;
GtkWidget *rmmail_checkbtn;
GtkWidget *hbox_spc;
GtkWidget *leave_time_spinbtn;
GtkWidget *leave_hour_label;
GtkWidget *leave_hour_spinbtn;
- GtkWidget *hbox1;
GtkWidget *size_limit_checkbtn;
GtkWidget *size_limit_spinbtn;
GtkWidget *label;
GtkWidget *filter_on_recv_checkbtn;
GtkWidget *filterhook_on_recv_checkbtn;
- GtkWidget *vbox3;
GtkWidget *inbox_label;
GtkWidget *inbox_entry;
GtkWidget *inbox_btn;
GtkWidget *local_inbox_label;
GtkWidget *local_inbox_entry;
GtkWidget *local_inbox_btn;
+ GtkWidget *autochk_checkbtn;
+ GtkWidget *autochk_hour_spinbtn, *autochk_hour_label;
+ GtkWidget *autochk_min_spinbtn, *autochk_min_label;
+ GtkWidget *autochk_sec_spinbtn, *autochk_sec_label;
+ GtkWidget *autochk_use_default_checkbtn;
+ GtkObject *adj;
+ struct AutocheckWidgets *autochk_widgets;
GtkWidget *optmenu;
GtkListStore *menu;
GtkTreeIter iter;
GtkWidget *recvatgetall_checkbtn;
- GtkWidget *hbox2;
- GtkWidget *frame2;
+ GtkWidget *frame, *frame2;
GtkWidget *maxarticle_label;
GtkWidget *maxarticle_spinbtn;
GtkAdjustment *maxarticle_spinbtn_adj;
gtk_widget_show (hbox1);
gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 4);
+ /* Auto-checking */
+ vbox4 = gtkut_get_options_frame(vbox1, &frame, _("Automatic checking"));
+
+ PACK_CHECK_BUTTON(vbox4, autochk_use_default_checkbtn,
+ _("Use global settings"));
+
+ hbox2 = gtk_hbox_new(FALSE, 8);
+ gtk_box_pack_start(GTK_BOX(vbox4), hbox2, FALSE, FALSE, 0);
+
+ PACK_CHECK_BUTTON(hbox2, autochk_checkbtn,
+ _("Check for new mail every"));
+
+ adj = gtk_adjustment_new(5, 0, 99, 1, 10, 0);
+ autochk_hour_spinbtn = gtk_spin_button_new(GTK_ADJUSTMENT(adj), 1, 0);
+ gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(autochk_hour_spinbtn), TRUE);
+ gtk_box_pack_start(GTK_BOX(hbox2), autochk_hour_spinbtn, FALSE, FALSE, 0);
+ autochk_hour_label = gtk_label_new(_("hours"));
+ gtk_box_pack_start(GTK_BOX(hbox2), autochk_hour_label, FALSE, FALSE, 0);
+
+ adj = gtk_adjustment_new(5, 0, 99, 1, 10, 0);
+ autochk_min_spinbtn = gtk_spin_button_new(GTK_ADJUSTMENT(adj), 1, 0);
+ gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(autochk_min_spinbtn), TRUE);
+ gtk_box_pack_start(GTK_BOX(hbox2), autochk_min_spinbtn, FALSE, FALSE, 0);
+ autochk_min_label = gtk_label_new(_("minutes"));
+ gtk_box_pack_start(GTK_BOX(hbox2), autochk_min_label, FALSE, FALSE, 0);
+
+ adj = gtk_adjustment_new(5, 0, 99, 1, 10, 0);
+ autochk_sec_spinbtn = gtk_spin_button_new(GTK_ADJUSTMENT(adj), 1, 0);
+ gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(autochk_sec_spinbtn), TRUE);
+ gtk_box_pack_start(GTK_BOX(hbox2), autochk_sec_spinbtn, FALSE, FALSE, 0);
+ autochk_sec_label = gtk_label_new(_("seconds"));
+ gtk_box_pack_start(GTK_BOX(hbox2), autochk_sec_label, FALSE, FALSE, 0);
+
+ autochk_widgets = g_new0(struct AutocheckWidgets, 1);
+ autochk_widgets->autochk_hour_spinbtn = autochk_hour_spinbtn;
+ autochk_widgets->autochk_min_spinbtn = autochk_min_spinbtn;
+ autochk_widgets->autochk_sec_spinbtn = autochk_sec_spinbtn;
+
+ gtk_widget_show_all(vbox4);
+
+ SET_TOGGLE_SENSITIVITY_REVERSE(autochk_use_default_checkbtn, hbox2);
+ SET_TOGGLE_SENSITIVITY(autochk_checkbtn, autochk_hour_spinbtn);
+ SET_TOGGLE_SENSITIVITY(autochk_checkbtn, autochk_min_spinbtn);
+ SET_TOGGLE_SENSITIVITY(autochk_checkbtn, autochk_sec_spinbtn);
+ SET_TOGGLE_SENSITIVITY(autochk_checkbtn, autochk_hour_label);
+ SET_TOGGLE_SENSITIVITY(autochk_checkbtn, autochk_min_label);
+ SET_TOGGLE_SENSITIVITY(autochk_checkbtn, autochk_sec_label);
+
PACK_CHECK_BUTTON (vbox1, filter_on_recv_checkbtn,
_("Filter messages on receiving"));
g_signal_connect(G_OBJECT(filter_on_recv_checkbtn), "toggled",
G_CALLBACK(prefs_account_filter_on_recv_toggled),
NULL);
+ g_signal_connect(G_OBJECT(autochk_hour_spinbtn), "value-changed",
+ G_CALLBACK(prefs_account_receive_itv_spinbutton_value_changed_cb),
+ (gpointer) page);
+ g_signal_connect(G_OBJECT(autochk_min_spinbtn), "value-changed",
+ G_CALLBACK(prefs_account_receive_itv_spinbutton_value_changed_cb),
+ (gpointer) page);
+ g_signal_connect(G_OBJECT(autochk_sec_spinbtn), "value-changed",
+ G_CALLBACK(prefs_account_receive_itv_spinbutton_value_changed_cb),
+ (gpointer) page);
PACK_CHECK_BUTTON (vbox1, filterhook_on_recv_checkbtn,
_("Allow filtering using plugins on receiving"));
page->inbox_entry = inbox_entry;
page->inbox_btn = inbox_btn;
+ page->autochk_frame = frame;
+
page->imap_frame = imap_frame;
page->imap_auth_type_optmenu = optmenu;
page->maxarticle_spinbtn = maxarticle_spinbtn;
page->maxarticle_spinbtn_adj = maxarticle_spinbtn_adj;
+ page->autochk_checkbtn = autochk_checkbtn;
+ page->autochk_widgets = autochk_widgets;
+ page->autochk_use_default_checkbtn = autochk_use_default_checkbtn;
+
tmp_ac_prefs = *ac_prefs;
if (new_account) {
GtkWidget *proxy_frame;
GtkWidget *proxy_checkbtn;
GtkWidget *default_proxy_checkbtn;
- GtkWidget *hbox2;
+ GtkWidget *hbox;
GtkWidget *label;
GtkWidget *socks4_radiobtn;
GtkWidget *socks5_radiobtn;
GtkWidget *proxy_name_entry;
GtkWidget *proxy_pass_entry;
GtkWidget *proxy_send_checkbtn;
+ GtkWidget *table;
+ GtkWidget *button;
gchar *buf;
vbox1 = gtk_vbox_new (FALSE, VSPACING);
vbox3 = gtk_vbox_new (FALSE, VSPACING_NARROW);
gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
- hbox2 = gtk_hbox_new (FALSE, 8);
- gtk_box_pack_start (GTK_BOX (vbox3), hbox2, FALSE, FALSE, 0);
+ hbox = gtk_hbox_new (FALSE, 8);
+ gtk_box_pack_start (GTK_BOX (vbox3), hbox, FALSE, FALSE, 0);
socks4_radiobtn = gtk_radio_button_new_with_label(NULL, "SOCKS4");
- gtk_box_pack_start (GTK_BOX (hbox2), socks4_radiobtn, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox), socks4_radiobtn, FALSE, FALSE, 0);
g_object_set_data(G_OBJECT(socks4_radiobtn), MENU_VAL_ID,
GINT_TO_POINTER(PROXY_SOCKS4));
- CREATE_RADIO_BUTTON(hbox2, socks5_radiobtn, socks4_radiobtn, "SOCKS5",
+ CREATE_RADIO_BUTTON(hbox, socks5_radiobtn, socks4_radiobtn, "SOCKS5",
PROXY_SOCKS5);
- hbox2 = gtk_hbox_new (FALSE, 8);
- gtk_box_pack_start (GTK_BOX (vbox3), hbox2, FALSE, FALSE, 0);
+ hbox = gtk_hbox_new (FALSE, 8);
+ gtk_box_pack_start (GTK_BOX (vbox3), hbox, FALSE, FALSE, 0);
label = gtk_label_new(_("Hostname"));
- gtk_box_pack_start(GTK_BOX(hbox2), label, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
proxy_host_entry = gtk_entry_new();
gtk_widget_set_size_request(proxy_host_entry, DEFAULT_ENTRY_WIDTH, -1);
- gtk_box_pack_start(GTK_BOX(hbox2), proxy_host_entry, TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(hbox), proxy_host_entry, TRUE, TRUE, 0);
label = gtk_label_new(_("Port"));
- gtk_box_pack_start(GTK_BOX(hbox2), label, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
proxy_port_spinbtn = gtk_spin_button_new_with_range(0, 65535, 1080);
gtk_widget_set_size_request(proxy_port_spinbtn, 64, -1);
- gtk_box_pack_start(GTK_BOX(hbox2), proxy_port_spinbtn, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(hbox), proxy_port_spinbtn, FALSE, FALSE, 0);
vbox4 = gtk_vbox_new (FALSE, VSPACING_NARROW);
gtk_box_pack_start(GTK_BOX(vbox3), vbox4, FALSE, FALSE, 0);
PACK_CHECK_BUTTON (vbox4, proxy_auth_checkbtn, _("Use authentication"));
- hbox2 = gtk_hbox_new (FALSE, 8);
- gtk_box_pack_start (GTK_BOX (vbox4), hbox2, FALSE, FALSE, 0);
+ table = gtk_table_new(2, 4, FALSE);
+ gtk_box_pack_start (GTK_BOX (vbox4), table, FALSE, FALSE, 0);
label = gtk_label_new(_("Username"));
- gtk_box_pack_start(GTK_BOX(hbox2), label, FALSE, FALSE, 0);
+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1,
+ GTK_SHRINK | GTK_FILL,
+ GTK_SHRINK | GTK_FILL, 0, 0);
proxy_name_entry = gtk_entry_new();
gtk_widget_set_size_request(proxy_name_entry, DEFAULT_ENTRY_WIDTH, -1);
- gtk_box_pack_start(GTK_BOX(hbox2), proxy_name_entry, TRUE, TRUE, 0);
+ gtk_table_attach(GTK_TABLE(table), proxy_name_entry, 1, 2, 0, 1,
+ GTK_EXPAND | GTK_SHRINK | GTK_FILL,
+ GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
label = gtk_label_new(_("Password"));
- gtk_box_pack_start(GTK_BOX(hbox2), label, FALSE, FALSE, 0);
+ gtk_table_attach(GTK_TABLE(table), label, 2, 3, 0, 1,
+ GTK_SHRINK | GTK_FILL,
+ GTK_SHRINK | GTK_FILL, 0, 0);
proxy_pass_entry = gtk_entry_new();
gtk_widget_set_size_request(proxy_pass_entry, DEFAULT_ENTRY_WIDTH, -1);
gtk_entry_set_visibility(GTK_ENTRY(proxy_pass_entry), FALSE);
- gtk_box_pack_start(GTK_BOX(hbox2), proxy_pass_entry, TRUE, TRUE, 0);
+ gtk_table_attach(GTK_TABLE(table), proxy_pass_entry, 3, 4, 0, 1,
+ GTK_EXPAND | GTK_SHRINK | GTK_FILL,
+ GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
+
+ button = gtk_check_button_new_with_label(_("Show password"));
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), FALSE);
+ gtk_table_attach(GTK_TABLE(table), button, 3, 4, 1, 2,
+ GTK_SHRINK | GTK_FILL,
+ GTK_SHRINK | GTK_FILL, 0, 0);
+ g_signal_connect(G_OBJECT(button), "toggled",
+ G_CALLBACK(prefs_account_showpwd_checkbtn_toggled), proxy_pass_entry);
gtk_box_pack_start(GTK_BOX(vbox2), gtk_hseparator_new(), FALSE, FALSE, 0);
CLAWS_SET_TIP(proxy_send_checkbtn,
_("If disabled, messages will be sent using direct connection to configured outgoing server, bypassing any configured proxy server."));
- SET_TOGGLE_SENSITIVITY(proxy_auth_checkbtn, hbox2);
+ SET_TOGGLE_SENSITIVITY(proxy_auth_checkbtn, table);
SET_TOGGLE_SENSITIVITY(socks5_radiobtn, vbox4);
SET_TOGGLE_SENSITIVITY(proxy_checkbtn, vbox2);
SET_TOGGLE_SENSITIVITY_REVERSE(default_proxy_checkbtn, vbox3);
GtkWidget *checkbtn_domain;
GtkWidget *entry_domain;
gchar *tip_domain;
-#if !GTK_CHECK_VERSION(3, 0, 0)
GtkWidget *checkbtn_crosspost;
GtkWidget *colormenu_crosspost;
GtkWidget *menu;
-#endif
#ifndef G_OS_WIN32
GtkWidget *checkbtn_tunnelcmd;
GtkWidget *entry_tunnelcmd;
SET_TOGGLE_SENSITIVITY (checkbtn_tunnelcmd, entry_tunnelcmd);
#endif
-#if !GTK_CHECK_VERSION(3, 0, 0)
+ PACK_HBOX (hbox1);
PACK_CHECK_BUTTON (hbox1, checkbtn_crosspost,
_("Mark cross-posted messages as read and color:"));
g_signal_connect (G_OBJECT (checkbtn_crosspost), "toggled",
menu = colorlabel_create_color_menu();
gtk_cmoption_menu_set_menu (GTK_CMOPTION_MENU(colormenu_crosspost), menu);
SET_TOGGLE_SENSITIVITY(checkbtn_crosspost, colormenu_crosspost);
-#endif
-
- PACK_HBOX (hbox1);
#undef PACK_HBOX
#undef PACK_PORT_SPINBTN
page->nntpport_spinbtn = spinbtn_nntpport;
page->domain_checkbtn = checkbtn_domain;
page->domain_entry = entry_domain;
-#if !GTK_CHECK_VERSION(3, 0, 0)
page->crosspost_checkbtn = checkbtn_crosspost;
page->crosspost_colormenu = colormenu_crosspost;
-#endif
#ifndef G_OS_WIN32
page->tunnelcmd_checkbtn = checkbtn_tunnelcmd;
}
prefs_set_data_from_dialog(receive_param);
+
return 0;
}
static gint prefs_advanced_apply(void)
{
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(advanced_page.domain_checkbtn)) &&
+ *gtk_entry_get_text(GTK_ENTRY(advanced_page.domain_entry)) == '\0') {
+ alertpanel_error(_("domain is not specified."));
+ return -1;
+ }
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(advanced_page.sent_folder_checkbtn)) &&
+ *gtk_entry_get_text(GTK_ENTRY(advanced_page.sent_folder_entry)) == '\0') {
+ alertpanel_error(_("sent folder is not selected."));
+ return -1;
+ }
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(advanced_page.queue_folder_checkbtn)) &&
+ *gtk_entry_get_text(GTK_ENTRY(advanced_page.queue_folder_entry)) == '\0') {
+ alertpanel_error(_("queue folder is not selected."));
+ return -1;
+ }
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(advanced_page.draft_folder_checkbtn)) &&
+ *gtk_entry_get_text(GTK_ENTRY(advanced_page.draft_folder_entry)) == '\0') {
+ alertpanel_error(_("draft folder is not selected."));
+ return -1;
+ }
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(advanced_page.trash_folder_checkbtn)) &&
+ *gtk_entry_get_text(GTK_ENTRY(advanced_page.trash_folder_entry)) == '\0') {
+ alertpanel_error(_("trash folder is not selected."));
+ return -1;
+ }
+
prefs_set_data_from_dialog(advanced_param);
return 0;
}
prefs_custom_header_read_config(ac_prefs);
+ /* Start the auto-check interval, if needed. */
+ if (!ac_prefs->autochk_use_default && ac_prefs->autochk_use_custom
+ && ac_prefs->autochk_itv > PREFS_RECV_AUTOCHECK_MIN_INTERVAL) {
+ inc_account_autocheck_timer_set_interval(ac_prefs);
+ }
+
return ac_prefs;
}
privacy_prefs = NULL;
if (cur->next) {
- if (fputc('\n', pfile->fp) == EOF) {
- FILE_OP_ERROR(rcpath, "fputc");
+ if (claws_fputc('\n', pfile->fp) == EOF) {
+ FILE_OP_ERROR(rcpath, "claws_fputc");
prefs_file_close_revert(pfile);
return;
}
*ac_prefs = tmp_ac_prefs;
if (update_fld_list)
folderview_rescan_tree(ac_prefs->folder, FALSE);
+
+ inc_account_autocheck_timer_set_interval(ac_prefs);
+
} else /* the customhdr_list may have changed, update it anyway */
ac_prefs->customhdr_list = (&tmp_ac_prefs)->customhdr_list;
}
}
-#if !GTK_CHECK_VERSION(3, 0, 0)
static void crosspost_color_toggled(void)
{
gboolean is_active;
menuitem = gtk_menu_get_active(GTK_MENU(menu));
gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
}
-#endif
static void pop_bfr_smtp_tm_set_sens(GtkWidget *widget, gpointer data)
{
{
const gchar *sigpath = gtk_entry_get_text(GTK_ENTRY(data));
if (!is_file_exist(sigpath))
- str_write_to_file(sigpath, "");
+ str_write_to_file(sigpath, "", TRUE);
open_txt_editor(sigpath, prefs_common_get_ext_editor_cmd());
}
combobox_select_by_data(optmenu, type);
}
+static void prefs_account_set_autochk_interval_from_widgets(PrefParam *pparam)
+{
+ struct AutocheckWidgets *autochk_widgets =
+ (struct AutocheckWidgets *)*pparam->widget;
+
+ *(gint *)pparam->data =
+ (3600 * gtk_spin_button_get_value_as_int(
+ GTK_SPIN_BUTTON(autochk_widgets->autochk_hour_spinbtn)))
+ + (60 * gtk_spin_button_get_value_as_int(
+ GTK_SPIN_BUTTON(autochk_widgets->autochk_min_spinbtn)))
+ + gtk_spin_button_get_value_as_int(
+ GTK_SPIN_BUTTON(autochk_widgets->autochk_sec_spinbtn));
+}
+
+static void prefs_account_set_autochk_interval_to_widgets(PrefParam *pparam)
+{
+ gint val = *((gint *)pparam->data);
+ struct AutocheckWidgets *autochk_widgets =
+ (struct AutocheckWidgets *)*pparam->widget;
+
+ gtk_spin_button_set_value(
+ GTK_SPIN_BUTTON(autochk_widgets->autochk_hour_spinbtn),
+ val / 3600);
+ gtk_spin_button_set_value(
+ GTK_SPIN_BUTTON(autochk_widgets->autochk_min_spinbtn),
+ (val % 3600) / 60);
+ gtk_spin_button_set_value(
+ GTK_SPIN_BUTTON(autochk_widgets->autochk_sec_spinbtn),
+ (val % 3600) % 60);
+}
+
static void prefs_account_set_string_from_combobox(PrefParam *pparam)
{
GtkWidget *combobox;
gtk_widget_hide(receive_page.pop3_frame);
gtk_widget_hide(receive_page.imap_frame);
gtk_widget_hide(receive_page.local_frame);
+ gtk_widget_show(receive_page.autochk_frame);
gtk_widget_show(receive_page.frame_maxarticle);
gtk_widget_set_sensitive(receive_page.filter_on_recv_checkbtn, TRUE);
prefs_account_filter_on_recv_toggled
gtk_widget_hide(advanced_page.popport_hbox);
gtk_widget_hide(advanced_page.imapport_hbox);
gtk_widget_show(advanced_page.nntpport_hbox);
-#if !GTK_CHECK_VERSION(3, 0, 0)
gtk_widget_show(advanced_page.crosspost_checkbtn);
gtk_widget_show(advanced_page.crosspost_colormenu);
-#endif
#ifndef G_OS_WIN32
gtk_widget_hide(advanced_page.tunnelcmd_checkbtn);
gtk_widget_hide(advanced_page.tunnelcmd_entry);
gtk_widget_hide(receive_page.pop3_frame);
gtk_widget_hide(receive_page.imap_frame);
gtk_widget_show(receive_page.local_frame);
+ gtk_widget_show(receive_page.autochk_frame);
gtk_widget_hide(receive_page.frame_maxarticle);
gtk_widget_set_sensitive(receive_page.filter_on_recv_checkbtn, TRUE);
prefs_account_filter_on_recv_toggled
gtk_widget_hide(advanced_page.popport_hbox);
gtk_widget_hide(advanced_page.imapport_hbox);
gtk_widget_hide(advanced_page.nntpport_hbox);
-#if !GTK_CHECK_VERSION(3, 0, 0)
gtk_widget_hide(advanced_page.crosspost_checkbtn);
gtk_widget_hide(advanced_page.crosspost_colormenu);
-#endif
#ifndef G_OS_WIN32
gtk_widget_hide(advanced_page.tunnelcmd_checkbtn);
gtk_widget_hide(advanced_page.tunnelcmd_entry);
gtk_widget_hide(receive_page.pop3_frame);
gtk_widget_show(receive_page.imap_frame);
gtk_widget_hide(receive_page.local_frame);
+ gtk_widget_show(receive_page.autochk_frame);
gtk_widget_hide(receive_page.frame_maxarticle);
gtk_widget_set_sensitive(receive_page.filter_on_recv_checkbtn, TRUE);
prefs_account_filter_on_recv_toggled
gtk_widget_hide(advanced_page.popport_hbox);
gtk_widget_show(advanced_page.imapport_hbox);
gtk_widget_hide(advanced_page.nntpport_hbox);
-#if !GTK_CHECK_VERSION(3, 0, 0)
gtk_widget_hide(advanced_page.crosspost_checkbtn);
gtk_widget_hide(advanced_page.crosspost_colormenu);
-#endif
#ifndef G_OS_WIN32
gtk_widget_show(advanced_page.tunnelcmd_checkbtn);
gtk_widget_show(advanced_page.tunnelcmd_entry);
gtk_widget_hide(receive_page.pop3_frame);
gtk_widget_hide(receive_page.imap_frame);
gtk_widget_hide(receive_page.local_frame);
+ gtk_widget_hide(receive_page.autochk_frame);
gtk_widget_hide(receive_page.frame_maxarticle);
gtk_widget_set_sensitive(receive_page.filter_on_recv_checkbtn, FALSE);
prefs_account_filter_on_recv_toggled
gtk_widget_hide(advanced_page.popport_hbox);
gtk_widget_hide(advanced_page.imapport_hbox);
gtk_widget_hide(advanced_page.nntpport_hbox);
-#if !GTK_CHECK_VERSION(3, 0, 0)
gtk_widget_hide(advanced_page.crosspost_checkbtn);
gtk_widget_hide(advanced_page.crosspost_colormenu);
-#endif
#ifndef G_OS_WIN32
gtk_widget_hide(advanced_page.tunnelcmd_checkbtn);
gtk_widget_hide(advanced_page.tunnelcmd_entry);
gtk_widget_show(receive_page.pop3_frame);
gtk_widget_hide(receive_page.imap_frame);
gtk_widget_hide(receive_page.local_frame);
+ gtk_widget_show(receive_page.autochk_frame);
gtk_widget_hide(receive_page.frame_maxarticle);
gtk_widget_set_sensitive(receive_page.filter_on_recv_checkbtn, TRUE);
prefs_account_filter_on_recv_toggled
gtk_widget_show(advanced_page.popport_hbox);
gtk_widget_hide(advanced_page.imapport_hbox);
gtk_widget_hide(advanced_page.nntpport_hbox);
-#if !GTK_CHECK_VERSION(3, 0, 0)
gtk_widget_hide(advanced_page.crosspost_checkbtn);
gtk_widget_hide(advanced_page.crosspost_colormenu);
-#endif
#ifndef G_OS_WIN32
gtk_widget_hide(advanced_page.tunnelcmd_checkbtn);
gtk_widget_hide(advanced_page.tunnelcmd_entry);
static void prefs_account_entry_changed_newline_check_cb(GtkWidget *entry,
gpointer user_data)
{
-#if !GTK_CHECK_VERSION(3, 0, 0)
static GdkColor red;
static gboolean colors_initialised = FALSE;
-#else
- static GdkColor red = { (guint32)0, (guint16)0xff, (guint16)0x70, (guint16)0x70 };
-#endif
-#if !GTK_CHECK_VERSION(3, 0, 0)
if (strchr(gtk_entry_get_text(GTK_ENTRY(entry)), '\n') != NULL) {
/* Entry contains a newline, light it up. */
debug_print("found newline in string, painting entry red\n");
} else {
gtk_widget_modify_base(entry, GTK_STATE_NORMAL, NULL);
}
-#endif
}
static void prefs_account_filter_on_recv_toggled(GtkToggleButton *button,
return dir;
}
+
+static void prefs_account_receive_itv_spinbutton_value_changed_cb(GtkWidget *w, gpointer data)
+{
+ ReceivePage *page = (ReceivePage *)data;
+ gint seconds = gtk_spin_button_get_value_as_int (
+ GTK_SPIN_BUTTON (page->autochk_widgets->autochk_sec_spinbtn));
+ gint minutes = gtk_spin_button_get_value_as_int (
+ GTK_SPIN_BUTTON (page->autochk_widgets->autochk_min_spinbtn));
+ gint hours = gtk_spin_button_get_value_as_int (
+ GTK_SPIN_BUTTON(page->autochk_widgets->autochk_hour_spinbtn));
+ if (seconds < PREFS_RECV_AUTOCHECK_MIN_INTERVAL && minutes == 0 && hours == 0) {
+ gtk_spin_button_set_value (
+ GTK_SPIN_BUTTON (page->autochk_widgets->autochk_sec_spinbtn),
+ PREFS_RECV_AUTOCHECK_MIN_INTERVAL);
+ }
+}