/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2007 Hiroyuki Yamamoto and the Claws Mail team
+ * Copyright (C) 1999-2011 Hiroyuki Yamamoto and the Claws Mail team
*
* 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
# define N_EDIT_ACCOUNT_COLS 5
-#define PREFSBUFSIZE 1024
-
PrefsAccount *cur_account;
static GList *account_list = NULL;
static void account_list_view_set (void);
static void account_list_set (void);
+static void account_rename_path_prefix (const gchar *old_prefix,
+ const gchar *new_prefix);
typedef struct FindAccountInStore {
gint account_id;
GList *cur;
PrefsAccount *ac;
- g_return_val_if_fail(address != NULL, NULL);
- g_return_val_if_fail(smtp_server != NULL, NULL);
+ cm_return_val_if_fail(address != NULL, NULL);
+ cm_return_val_if_fail(smtp_server != NULL, NULL);
for (cur = account_list; cur != NULL; cur = cur->next) {
ac = (PrefsAccount *)cur->data;
GList *cur;
PrefsAccount *ac;
- g_return_val_if_fail(address != NULL, NULL);
+ cm_return_val_if_fail(address != NULL, NULL);
for (cur = account_list; cur != NULL; cur = cur->next) {
ac = (PrefsAccount *)cur->data;
{
PrefsAccount *ac;
- g_return_val_if_fail(item != NULL, NULL);
+ cm_return_val_if_fail(item != NULL, NULL);
ac = item->account;
if (!ac) {
manage_window_set_transient(GTK_WINDOW(edit_account.window));
gtk_widget_grab_focus(edit_account.close_btn);
gtk_widget_show(edit_account.window);
-
+ gtk_window_set_modal(GTK_WINDOW(edit_account.window), TRUE);
manage_window_focus_in(edit_account.window, NULL, NULL);
}
void account_open(PrefsAccount *ac_prefs)
{
gboolean prev_default;
- gchar *ac_name;
+ gchar *ac_name, *old_prefix, *new_prefix;
gboolean account_dirty = FALSE;
- g_return_if_fail(ac_prefs != NULL);
+ cm_return_if_fail(ac_prefs != NULL);
prev_default = ac_prefs->is_default;
Xstrdup_a(ac_name, ac_prefs->account_name ? ac_prefs->account_name : "",
account_set_as_default(ac_prefs);
if (ac_prefs->folder && strcmp2(ac_name, ac_prefs->account_name) != 0) {
+ old_prefix = folder_get_identifier(FOLDER(ac_prefs->folder));
folder_set_name(FOLDER(ac_prefs->folder),
ac_prefs->account_name);
folderview_set_all();
+ folder_prefs_save_config_recursive(FOLDER(ac_prefs->folder));
+ new_prefix = folder_get_identifier(FOLDER(ac_prefs->folder));
+
+ account_rename_path_prefix(old_prefix, new_prefix);
+ prefs_filtering_rename_path_prefix(old_prefix, new_prefix);
+
+ g_free(old_prefix);
+ g_free(new_prefix);
}
account_write_config_all();
#undef CHECK_CHANGE_FOLDER
+#define CHANGE_FOLDER_PREFIX(folder) { \
+ if (folder && g_str_has_prefix(folder, old_prefix)) { \
+ gchar *new_path = g_strconcat(new_prefix, \
+ (folder + strlen(old_prefix)), NULL); \
+ g_free(folder); \
+ folder = new_path; \
+ } \
+}
+
+static void account_rename_path_prefix(const gchar *old_prefix,
+ const gchar *new_prefix)
+{
+ GList *cur = account_list;
+ for (; cur != NULL; cur = g_list_next(cur)) {
+ PrefsAccount *ap = (PrefsAccount *)cur->data;
+ CHANGE_FOLDER_PREFIX(ap->inbox);
+ CHANGE_FOLDER_PREFIX(ap->local_inbox);
+ CHANGE_FOLDER_PREFIX(ap->queue_folder);
+ CHANGE_FOLDER_PREFIX(ap->sent_folder);
+ CHANGE_FOLDER_PREFIX(ap->draft_folder);
+ CHANGE_FOLDER_PREFIX(ap->trash_folder);
+ }
+}
+
+#undef CHANGE_FOLDER_PREFIX
+
FolderItem *account_get_special_folder(PrefsAccount *ac_prefs,
SpecialFolderItemType type)
{
FolderItem *item = NULL;
- g_return_val_if_fail(ac_prefs != NULL, NULL);
+ cm_return_val_if_fail(ac_prefs != NULL, NULL);
switch (type) {
case F_INBOX:
void account_destroy(PrefsAccount *ac_prefs)
{
- g_return_if_fail(ac_prefs != NULL);
+ cm_return_if_fail(ac_prefs != NULL);
folder_unref_account_all(ac_prefs);
static void account_size_allocate_cb(GtkWidget *widget,
GtkAllocation *allocation)
{
- g_return_if_fail(allocation != NULL);
+ cm_return_if_fail(allocation != NULL);
prefs_common.accountswin_width = allocation->width;
prefs_common.accountswin_height = allocation->height;
window = gtkut_window_new(GTK_WINDOW_TOPLEVEL, "account");
gtk_container_set_border_width (GTK_CONTAINER (window), 8);
gtk_window_set_title (GTK_WINDOW (window), _("Edit accounts"));
- gtk_window_set_modal (GTK_WINDOW (window), TRUE);
g_signal_connect (G_OBJECT (window), "delete_event",
G_CALLBACK (account_delete_event), NULL);
#ifdef MAEMO
GDK_HINT_MIN_SIZE);
gtk_widget_set_size_request(window, prefs_common.accountswin_width,
prefs_common.accountswin_height);
+#ifdef G_OS_WIN32
+ gtk_window_move(GTK_WINDOW(window), 48, 48);
+#endif
edit_account.window = window;
edit_account.list_view = list_view;
FolderItem *item;
gint account;
- g_return_val_if_fail(node->data != NULL, FALSE);
+ cm_return_val_if_fail(node->data != NULL, FALSE);
item = FOLDER_ITEM(node->data);
account = GPOINTER_TO_INT(data);
/* send */
ACP_FASSIGN(gen_msgid);
+ ACP_FASSIGN(gen_xmailer);
ACP_FASSIGN(add_customhdr);
ACP_FASSIGN(use_smtp_auth);
ACP_FASSIGN(smtp_auth_type);
account_flush_state();
gtk_widget_hide(edit_account.window);
-
+ gtk_window_set_modal(GTK_WINDOW(edit_account.window), FALSE);
inc_unlock();
}
static gboolean account_key_pressed(GtkWidget *widget, GdkEventKey *event,
gpointer data)
{
- if (event && event->keyval == GDK_Escape)
+ if (event && event->keyval == GDK_KEY_Escape)
account_edit_close(NULL, NULL);
return FALSE;
}
gboolean getall;
name = ac_prefs->account_name;
-#if (defined(USE_OPENSSL) || defined (USE_GNUTLS))
+#ifdef USE_GNUTLS
protocol = ac_prefs->protocol == A_POP3 ?
(ac_prefs->ssl_pop == SSL_TUNNEL ?
"POP3 (SSL)" :
{
GtkTreeViewColumn *column;
GtkCellRenderer *renderer;
- CLAWS_TIP_DECL();
renderer = gtk_cell_renderer_toggle_new();
g_object_set(renderer,
NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(list_view), column);
gtk_tree_view_column_set_alignment (column, 0.5);
- CLAWS_SET_TIP(column->button,
+ CLAWS_SET_TIP(gtk_tree_view_column_get_widget(column),
_("'Get Mail' retrieves mail from the checked accounts"));
g_signal_connect(G_OBJECT(renderer), "toggled",
G_CALLBACK(account_get_all_toggled),
gchar *sig_str = NULL;
gchar *utf8_sig_str = NULL;
- g_return_val_if_fail(account != NULL, NULL);
+ cm_return_val_if_fail(account != NULL, NULL);
if (!account->sig_path)
return NULL;
return utf8_sig_str;
}
+
+PrefsAccount *account_get_cur_account (void)
+{
+ return cur_account;
+}