#include "utils.h"
#include "alertpanel.h"
+#include "pixmaps/mark.xpm"
+
typedef enum
{
COL_DEFAULT = 0,
- COL_NAME = 1,
- COL_PROTOCOL = 2,
- COL_SERVER = 3
+ COL_GETALL = 1,
+ COL_NAME = 2,
+ COL_PROTOCOL = 3,
+ COL_SERVER = 4
} EditAccountColumnPos;
-# define N_EDIT_ACCOUNT_COLS 4
+# define N_EDIT_ACCOUNT_COLS 5
#define PREFSBUFSIZE 1024
GtkWidget *close_btn;
} edit_account;
+static GdkPixmap *markxpm;
+static GdkBitmap *markxpmmask;
+
static void account_edit_create (void);
static void account_edit_prefs (void);
static void account_set_default (void);
+static void account_set_recv_at_get_all (void);
+
static void account_edit_close (void);
static gint account_delete_event (GtkWidget *widget,
GdkEventAny *event,
gpointer data);
+static void account_selected (GtkCList *clist,
+ gint row,
+ gint column,
+ GdkEvent *event,
+ gpointer data);
static void account_key_pressed (GtkWidget *widget,
GdkEventKey *event,
gpointer data);
return NULL;
}
-/**
- * account_find_mail_from_address:
+/*
+ * account_find_from_address:
* @address: Email address string.
- *
+ *
* Find a mail (not news) account with the specified email address.
- *
+ *
* Return value: The found account, or NULL if not found.
- **/
-PrefsAccount *account_find_mail_from_address(const gchar *address)
+ */
+PrefsAccount *account_find_from_address(const gchar *address)
{
GList *cur;
PrefsAccount *ac;
for (cur = account_list; cur != NULL; cur = cur->next) {
ac = (PrefsAccount *)cur->data;
- if (ac->protocol != A_NNTP &&
- !strcmp2(address, ac->address))
+ if (ac->protocol != A_NNTP && !strcmp2(address, ac->address))
return ac;
}
if (ac_prefs->is_default)
account_set_as_default(ac_prefs);
+ if (ac_prefs->recv_at_getall)
+ account_set_as_recv_at_get_all(ac_prefs);
+
account_clist_set();
if (ac_prefs->protocol == A_IMAP4 || ac_prefs->protocol == A_NNTP) {
if (ac_prefs->protocol == A_IMAP4) {
folder = folder_new(F_IMAP, ac_prefs->account_name,
ac_prefs->recv_server);
- folder_item_append(FOLDER_ITEM(folder->node->data),
- folder_item_new("INBOX", "INBOX"));
} else {
folder = folder_new(F_NEWS, ac_prefs->account_name,
ac_prefs->nntp_server);
folder_add(folder);
if (ac_prefs->protocol == A_IMAP4)
folder->create_tree(folder);
- folderview_update_all();
+ folderview_set_all();
}
}
return NULL;
}
+void account_set_as_recv_at_get_all(PrefsAccount *ac_prefs)
+{
+ PrefsAccount *ap;
+ GList *cur;
+
+ for (cur = account_list; cur != NULL; cur = cur->next) {
+ ap = (PrefsAccount *)cur->data;
+ if (ap->account_name == ac_prefs->account_name) {
+ if (ap->recv_at_getall == 0)
+ ap->recv_at_getall = 1;
+ else
+ ap->recv_at_getall = 0;
+ }
+ }
+
+}
+
+
void account_set_missing_folder(void)
{
PrefsAccount *ap;
if (ap->protocol == A_IMAP4) {
folder = folder_new(F_IMAP, ap->account_name,
ap->recv_server);
- folder_item_append
- (FOLDER_ITEM(folder->node->data),
- folder_item_new("INBOX", "INBOX"));
} else {
folder = folder_new(F_NEWS, ap->account_name,
ap->nntp_server);
GtkWidget *default_btn;
+ GtkWidget *recvatgetall_btn;
+
GtkWidget *hbbox;
GtkWidget *close_btn;
GTK_SIGNAL_FUNC (manage_window_focus_in), NULL);
gtk_signal_connect (GTK_OBJECT (window), "focus_out_event",
GTK_SIGNAL_FUNC (manage_window_focus_out), NULL);
+ gtk_widget_realize(window);
vbox = gtk_vbox_new (FALSE, 12);
gtk_widget_show (vbox);
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
- titles[COL_DEFAULT] = "";
+ titles[COL_DEFAULT] = "D";
+ titles[COL_GETALL] = "G";
titles[COL_NAME] = _("Name");
titles[COL_PROTOCOL] = _("Protocol");
titles[COL_SERVER] = _("Server");
clist = gtk_clist_new_with_titles (N_EDIT_ACCOUNT_COLS, titles);
gtk_widget_show (clist);
gtk_container_add (GTK_CONTAINER (scrolledwin), clist);
- gtk_clist_set_column_width (GTK_CLIST(clist), COL_DEFAULT , 16);
+ gtk_clist_set_column_width (GTK_CLIST(clist), COL_DEFAULT , 10);
+ gtk_clist_set_column_width (GTK_CLIST(clist), COL_GETALL , 10);
gtk_clist_set_column_width (GTK_CLIST(clist), COL_NAME , 100);
gtk_clist_set_column_width (GTK_CLIST(clist), COL_PROTOCOL, 70);
gtk_clist_set_column_width (GTK_CLIST(clist), COL_SERVER , 100);
GTK_WIDGET_UNSET_FLAGS(GTK_CLIST(clist)->column[i].button,
GTK_CAN_FOCUS);
+ gtk_signal_connect (GTK_OBJECT (clist), "select_row",
+ GTK_SIGNAL_FUNC (account_selected), NULL);
+
vbox2 = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox2);
gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, 0);
gtk_widget_show (vbox2);
gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, 0);
- default_btn = gtk_button_new_with_label (_(" Set as usually used account "));
+ default_btn = gtk_button_new_with_label (_(" Set as default account "));
gtk_widget_show (default_btn);
gtk_box_pack_start (GTK_BOX (vbox2), default_btn, TRUE, FALSE, 0);
gtk_signal_connect (GTK_OBJECT(default_btn), "clicked",
GTK_SIGNAL_FUNC (account_set_default), NULL);
- gtkut_button_set_create(&hbbox, &close_btn, _("Close"),
+ recvatgetall_btn = gtk_button_new_with_label (_(" Enable/Disable 'Receive at Get all' "));
+ gtk_widget_show (recvatgetall_btn);
+ gtk_box_pack_start (GTK_BOX (vbox2), recvatgetall_btn, TRUE, FALSE, 0);
+ gtk_signal_connect (GTK_OBJECT(recvatgetall_btn), "clicked",
+ GTK_SIGNAL_FUNC (account_set_recv_at_get_all), NULL);
+
+ gtkut_button_set_create(&hbbox, &close_btn, _("Close"),
NULL, NULL, NULL, NULL);
gtk_widget_show(hbbox);
gtk_box_pack_end (GTK_BOX (hbox), hbbox, FALSE, FALSE, 0);
GTK_SIGNAL_FUNC (account_edit_close),
NULL);
+ PIXMAP_CREATE(clist, markxpm, markxpmmask, mark_xpm);
+
edit_account.window = window;
edit_account.clist = clist;
edit_account.close_btn = close_btn;
main_window_reflect_prefs_all();
}
+static void account_set_recv_at_get_all(void)
+{
+ GtkCList *clist = GTK_CLIST(edit_account.clist);
+ gint row;
+ PrefsAccount *ac_prefs;
+
+ if (!clist->selection) return;
+
+ row = GPOINTER_TO_INT(clist->selection->data);
+ ac_prefs = gtk_clist_get_row_data(clist, row);
+
+ if ((ac_prefs->protocol != A_POP3) && (ac_prefs->protocol != A_APOP)) return;
+
+ account_set_as_recv_at_get_all(ac_prefs);
+ account_clist_set();
+}
+
static void account_edit_close(void)
{
account_list_set();
return TRUE;
}
+static void account_selected(GtkCList *clist, gint row, gint column,
+ GdkEvent *event, gpointer data)
+{
+ if (event && event->type == GDK_2BUTTON_PRESS)
+ account_edit_prefs();
+}
+
static void account_key_pressed(GtkWidget *widget, GdkEventKey *event,
gpointer data)
{
gchar *text[N_EDIT_ACCOUNT_COLS];
text[COL_DEFAULT] = ac_prefs->is_default ? "*" : "";
+ text[COL_GETALL] = (ac_prefs->protocol == A_POP3 ||
+ ac_prefs->protocol == A_APOP) &&
+ ac_prefs->recv_at_getall ? "*" : "";
text[COL_NAME] = ac_prefs->account_name;
+#if !USE_SSL
text[COL_PROTOCOL] = ac_prefs->protocol == A_POP3 ? "POP3" :
ac_prefs->protocol == A_APOP ? "APOP" :
ac_prefs->protocol == A_IMAP4 ? "IMAP4" :
ac_prefs->protocol == A_LOCAL ? "Local" :
ac_prefs->protocol == A_NNTP ? "NNTP" : "";
+#else
+ text[COL_PROTOCOL] = ac_prefs->protocol == A_POP3 ? (!ac_prefs->ssl_pop ? "POP3" : "POP3 (SSL)") :
+ ac_prefs->protocol == A_APOP ? (!ac_prefs->ssl_pop ? "APOP" : "APOP (SSL)") :
+ ac_prefs->protocol == A_IMAP4 ? (!ac_prefs->ssl_imap ? "IMAP4" : "IMAP4 (SSL)") :
+ ac_prefs->protocol == A_LOCAL ? "Local" :
+ ac_prefs->protocol == A_NNTP ? "NNTP" : "";
+#endif
text[COL_SERVER] = ac_prefs->protocol == A_NNTP
? ac_prefs->nntp_server : ac_prefs->recv_server;
row = gtk_clist_append(clist, text);
else {
gtk_clist_set_text(clist, row, COL_DEFAULT, text[COL_DEFAULT]);
+ gtk_clist_set_text(clist, row, COL_GETALL, text[COL_GETALL]);
gtk_clist_set_text(clist, row, COL_NAME, text[COL_NAME]);
gtk_clist_set_text(clist, row, COL_PROTOCOL, text[COL_PROTOCOL]);
gtk_clist_set_text(clist, row, COL_SERVER, text[COL_SERVER]);
}
+ if (*text[COL_DEFAULT])
+ gtk_clist_set_pixmap(clist, row, COL_DEFAULT,
+ markxpm, markxpmmask);
+ if (*text[COL_GETALL])
+ gtk_clist_set_pixmap(clist, row, COL_GETALL,
+ markxpm, markxpmmask);
+
gtk_clist_set_row_data(clist, row, ac_prefs);
return row;
gint row;
row = account_clist_set_row((PrefsAccount *)cur->data, -1);
- if ((PrefsAccount *)cur->data == cur_account)
+ if ((PrefsAccount *)cur->data == cur_account) {
gtk_clist_select_row(clist, row, -1);
+ gtkut_clist_set_focus_row(clist, row);
+ }
}
- if (prev_row >= 0)
+ if (prev_row >= 0) {
gtk_clist_select_row(clist, prev_row, -1);
+ gtkut_clist_set_focus_row(clist, prev_row);
+ }
gtk_clist_thaw(clist);
}