/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999,2000 Hiroyuki Yamamoto
+ * Copyright (C) 1999-2001 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
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:
+ * @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)
+{
+ 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))
+ return ac;
+ }
+
+ return NULL;
+}
+
PrefsAccount *account_find_from_id(gint id)
{
GList *cur;
void account_edit_open(void)
{
inc_autocheck_timer_remove();
-
+
if (compose_get_compose_list()) {
alertpanel_notice(_("Some composing windows are open.\n"
"Please close all the composing windows before editing the accounts."));
- inc_autocheck_timer_set();
+ inc_autocheck_timer_set();
return;
}
folder = folder_new(F_NEWS, ac_prefs->account_name,
ac_prefs->nntp_server);
}
+
folder->account = ac_prefs;
ac_prefs->folder = REMOTE_FOLDER(folder);
folder_add(folder);
- folderview_update_all();
+ if (ac_prefs->protocol == A_IMAP4)
+ folder->create_tree(folder);
+ folderview_set_all();
}
}
folder = folder_new(F_NEWS, ap->account_name,
ap->nntp_server);
}
+
folder->account = ap;
ap->folder = REMOTE_FOLDER(folder);
folder_add(folder);
+ if (ap->protocol == A_IMAP4)
+ folder->create_tree(folder);
}
}
}
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);
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)
{
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);
}