diff options
Diffstat (limited to 'mail/em-account-editor.c')
-rw-r--r-- | mail/em-account-editor.c | 237 |
1 files changed, 129 insertions, 108 deletions
diff --git a/mail/em-account-editor.c b/mail/em-account-editor.c index a9d0fccd39..5179815609 100644 --- a/mail/em-account-editor.c +++ b/mail/em-account-editor.c @@ -51,10 +51,11 @@ #include <libgnomeui/gnome-druid.h> #include <libgnomeui/gnome-druid-page-standard.h> -#include <libedataserver/e-account-list.h> #include <e-util/e-signature-list.h> #include "e-util/e-error.h" +#include "e-util/e-account-utils.h" +#include "e-util/e-signature-utils.h" #include "e-util/e-util-private.h" #include "em-config.h" @@ -62,14 +63,15 @@ #include "em-account-editor.h" #include "mail-session.h" #include "mail-send-recv.h" -#include "mail-signature-editor.h" -#include "mail-component.h" +#include "e-signature-editor.h" #include "em-utils.h" #include "em-composer-prefs.h" #include "mail-config.h" #include "mail-ops.h" #include "mail-mt.h" +#include "e-mail-shell-backend.h" + #if defined (HAVE_NSS) #include "smime/gui/e-cert-selector.h" #endif @@ -89,34 +91,34 @@ typedef struct _EMAccountEditorService { EMAccountEditor *emae; /* parent pointer, for callbacks */ /* NOTE: keep all widgets together, first frame last check_dialog */ - struct _GtkWidget *frame; - struct _GtkWidget *container; - - struct _GtkComboBox *providers; - - struct _GtkLabel *description; - struct _GtkLabel *hostlabel; - struct _GtkEntry *hostname; - struct _GtkLabel *userlabel; - struct _GtkEntry *username; - struct _GtkEntry *path; - struct _GtkLabel *pathlabel; - struct _GtkWidget *pathentry; - - struct _GtkWidget *ssl_frame; - struct _GtkComboBox *use_ssl; - struct _GtkWidget *ssl_hbox; - struct _GtkWidget *no_ssl; - - struct _GtkWidget *auth_frame; - struct _GtkComboBox *authtype; - - struct _GtkWidget *authitem; - struct _GtkToggleButton *remember; - struct _GtkButton *check_supported; - struct _GtkToggleButton *needs_auth; - - struct _GtkWidget *check_dialog; + GtkWidget *frame; + GtkWidget *container; + + GtkComboBox *providers; + + GtkLabel *description; + GtkLabel *hostlabel; + GtkEntry *hostname; + GtkLabel *userlabel; + GtkEntry *username; + GtkEntry *path; + GtkLabel *pathlabel; + GtkWidget *pathentry; + + GtkWidget *ssl_frame; + GtkComboBox *use_ssl; + GtkWidget *ssl_hbox; + GtkWidget *no_ssl; + + GtkWidget *auth_frame; + GtkComboBox *authtype; + + GtkWidget *authitem; + GtkToggleButton *remember; + GtkButton *check_supported; + GtkToggleButton *needs_auth; + + GtkWidget *check_dialog; gint check_id; GList *authtypes; /* if "Check supported" */ @@ -126,12 +128,12 @@ typedef struct _EMAccountEditorService { gint auth_changed_id; } EMAccountEditorService; -typedef struct _EMAccountEditorPrivate { +struct _EMAccountEditorPrivate { struct _EMConfig *config; GList *providers; /* signatures */ - struct _GtkComboBox *signatures_dropdown; + GtkComboBox *signatures_dropdown; guint sig_added_id; guint sig_removed_id; guint sig_changed_id; @@ -149,31 +151,31 @@ typedef struct _EMAccountEditorPrivate { /* account management */ GtkEntry *identity_entries[5]; - struct _GtkToggleButton *default_account; - struct _GtkWidget *management_frame; + GtkToggleButton *default_account; + GtkWidget *management_frame; /* special folders */ - struct _GtkButton *drafts_folder_button; - struct _GtkButton *sent_folder_button; - struct _GtkButton *restore_folders_button; + GtkButton *drafts_folder_button; + GtkButton *sent_folder_button; + GtkButton *restore_folders_button; /* Security */ - struct _GtkEntry *pgp_key; - struct _GtkToggleButton *pgp_encrypt_to_self; - struct _GtkToggleButton *pgp_always_sign; - struct _GtkToggleButton *pgp_no_imip_sign; - struct _GtkToggleButton *pgp_always_trust; - - struct _GtkToggleButton *smime_sign_default; - struct _GtkEntry *smime_sign_key; - struct _GtkButton *smime_sign_key_select; - struct _GtkButton *smime_sign_key_clear; - struct _GtkButton *smime_sign_select; - struct _GtkToggleButton *smime_encrypt_default; - struct _GtkToggleButton *smime_encrypt_to_self; - struct _GtkEntry *smime_encrypt_key; - struct _GtkButton *smime_encrypt_key_select; - struct _GtkButton *smime_encrypt_key_clear; + GtkEntry *pgp_key; + GtkToggleButton *pgp_encrypt_to_self; + GtkToggleButton *pgp_always_sign; + GtkToggleButton *pgp_no_imip_sign; + GtkToggleButton *pgp_always_trust; + + GtkToggleButton *smime_sign_default; + GtkEntry *smime_sign_key; + GtkButton *smime_sign_key_select; + GtkButton *smime_sign_key_clear; + GtkButton *smime_sign_select; + GtkToggleButton *smime_encrypt_default; + GtkToggleButton *smime_encrypt_to_self; + GtkEntry *smime_encrypt_key; + GtkButton *smime_encrypt_key_select; + GtkButton *smime_encrypt_key_clear; /* for e-config callbacks, each page sets up its widgets, then they are dealed out by the get_widget callback in order*/ GtkWidget *widgets[5]; @@ -183,9 +185,8 @@ typedef struct _EMAccountEditorPrivate { /* for druid page preparation */ guint identity_set:1; guint receive_set:1; - guint send_set:1; guint management_set:1; -} EMAccountEditorPrivate; +}; static void emae_refresh_authtype(EMAccountEditor *emae, EMAccountEditorService *service); static void em_account_editor_construct(EMAccountEditor *emae, EAccount *account, em_account_editor_t type, const gchar *id); @@ -210,7 +211,7 @@ emae_finalise(GObject *o) EMAccountEditorPrivate *p = emae->priv; if (p->sig_added_id) { - ESignatureList *signatures = mail_config_get_signatures(); + ESignatureList *signatures = e_get_signature_list (); g_signal_handler_disconnect(signatures, p->sig_added_id); g_signal_handler_disconnect(signatures, p->sig_removed_id); @@ -468,11 +469,13 @@ default_folders_clicked (GtkButton *button, gpointer user_data) EMAccountEditor *emae = user_data; const gchar *uri; - uri = mail_component_get_folder_uri(NULL, MAIL_COMPONENT_FOLDER_DRAFTS); + uri = e_mail_shell_backend_get_folder_uri ( + global_mail_shell_backend, E_MAIL_FOLDER_DRAFTS); em_folder_selection_button_set_selection((EMFolderSelectionButton *)emae->priv->drafts_folder_button, uri); emae_account_folder_changed((EMFolderSelectionButton *)emae->priv->drafts_folder_button, emae); - uri = mail_component_get_folder_uri(NULL, MAIL_COMPONENT_FOLDER_SENT); + uri = e_mail_shell_backend_get_folder_uri ( + global_mail_shell_backend, E_MAIL_FOLDER_SENT); em_folder_selection_button_set_selection((EMFolderSelectionButton *)emae->priv->sent_folder_button, uri); emae_account_folder_changed((EMFolderSelectionButton *)emae->priv->sent_folder_button, emae); } @@ -483,7 +486,10 @@ GtkWidget *em_account_editor_folder_selector_button_new (gchar *widget_name, gch GtkWidget * em_account_editor_folder_selector_button_new (gchar *widget_name, gchar *string1, gchar *string2, gint int1, gint int2) { - return (GtkWidget *)em_folder_selection_button_new(string1 ? string1 : _("Select Folder"), NULL); + EMFolderTreeModel *model; + + model = e_mail_shell_backend_get_folder_tree_model (global_mail_shell_backend); + return (GtkWidget *)em_folder_selection_button_new(model, string1 ? string1 : _("Select Folder"), NULL); } GtkWidget *em_account_editor_dropdown_new(gchar *widget_name, gchar *string1, gchar *string2, gint int1, gint int2); @@ -676,10 +682,19 @@ emae_signaturetype_changed(GtkComboBox *dropdown, EMAccountEditor *emae) static void emae_signature_new(GtkWidget *w, EMAccountEditor *emae) { - /* TODO: why is this in composer prefs? apart from it being somewhere to put it? */ - em_composer_prefs_new_signature((GtkWindow *)gtk_widget_get_toplevel(w), - gconf_client_get_bool(mail_config_get_gconf_client(), - "/apps/evolution/mail/composer/send_html", NULL)); + EShell *shell; + EShellSettings *shell_settings; + GtkWidget *parent; + gboolean html_mode; + + shell = e_shell_get_default (); + shell_settings = e_shell_get_shell_settings (shell); + parent = gtk_widget_get_toplevel (w); + + html_mode = e_shell_settings_get_boolean ( + shell_settings, "composer-format-html"); + + em_composer_prefs_new_signature (GTK_WINDOW (parent), html_mode); } static GtkWidget * @@ -704,7 +719,7 @@ emae_setup_signatures(EMAccountEditor *emae, GladeXML *xml) gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, 0, _("None"), 1, NULL, -1); - signatures = mail_config_get_signatures (); + signatures = e_get_signature_list (); if (p->sig_added_id == 0) { p->sig_added_id = g_signal_connect(signatures, "signature-added", G_CALLBACK(emae_signature_added), emae); @@ -910,7 +925,11 @@ emae_account_folder(EMAccountEditor *emae, const gchar *name, gint item, gint de em_folder_selection_button_set_selection(folder, tmp); g_free(tmp); } else { - em_folder_selection_button_set_selection(folder, mail_component_get_folder_uri(NULL, deffolder)); + const gchar *uri; + + uri = e_mail_shell_backend_get_folder_uri ( + global_mail_shell_backend, deffolder); + em_folder_selection_button_set_selection(folder, uri); } g_object_set_data((GObject *)folder, "account-item", GINT_TO_POINTER(item)); @@ -1403,8 +1422,8 @@ emae_refresh_providers(EMAccountEditor *emae, EMAccountEditorService *service) gint active = 0, i; struct _service_info *info = &emae_service_info[service->type]; const gchar *uri = e_account_get_string(account, info->account_uri_key); - const gchar *tmp; gchar *current = NULL; + const gchar *tmp; CamelURL *url; dropdown = service->providers; @@ -1421,7 +1440,7 @@ emae_refresh_providers(EMAccountEditor *emae, EMAccountEditorService *service) current[len] = 0; } } else { - current = (gchar *)"imap"; + current = (gchar *) "imap"; } store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_POINTER); @@ -1467,6 +1486,7 @@ emae_refresh_providers(EMAccountEditor *emae, EMAccountEditorService *service) i++; } + gtk_cell_layout_clear((GtkCellLayout *)dropdown); gtk_combo_box_set_model(dropdown, (GtkTreeModel *)store); gtk_cell_layout_pack_start((GtkCellLayout *)dropdown, cell, TRUE); @@ -1789,7 +1809,7 @@ emae_queue_widgets(EMAccountEditor *emae, GladeXML *xml, const gchar *first, ... } static GtkWidget * -emae_identity_page(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, struct _GtkWidget *old, gpointer data) +emae_identity_page(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *old, gpointer data) { EMAccountEditor *emae = data; EMAccountEditorPrivate *gui = emae->priv; @@ -1815,8 +1835,8 @@ emae_identity_page(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, st gui->management_frame = glade_xml_get_widget(xml, "management_frame"); gui->default_account = GTK_TOGGLE_BUTTON (glade_xml_get_widget (xml, "management_default")); - if (!mail_config_get_default_account () - || (account == mail_config_get_default_account ()) + if (!e_get_default_account () + || (account == e_get_default_account ()) || (GPOINTER_TO_INT(g_object_get_data (G_OBJECT (emae->account), "default_flagged"))) ) gtk_toggle_button_set_active (gui->default_account, TRUE); @@ -1862,7 +1882,7 @@ emae_identity_page(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, st } static GtkWidget * -emae_receive_page(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, struct _GtkWidget *old, gpointer data) +emae_receive_page(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *old, gpointer data) { EMAccountEditor *emae = data; EMAccountEditorPrivate *gui = emae->priv; @@ -2157,7 +2177,7 @@ emae_option_options (EMAccountEditorService *service, CamelURL *url, const gchar } static GtkWidget * -emae_receive_options_item(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, struct _GtkWidget *old, gpointer data) +emae_receive_options_item(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *old, gpointer data) { EMAccountEditor *emae = data; GtkWidget *w, *box, *spin; @@ -2194,7 +2214,7 @@ emae_receive_options_item(EConfig *ec, EConfigItem *item, struct _GtkWidget *par } static GtkWidget * -emae_receive_options_extra_item(EConfig *ec, EConfigItem *eitem, struct _GtkWidget *parent, struct _GtkWidget *old, gpointer data) +emae_receive_options_extra_item(EConfig *ec, EConfigItem *eitem, GtkWidget *parent, GtkWidget *old, gpointer data) { EMAccountEditor *emae = data; struct _receive_options_item *item = (struct _receive_options_item *)eitem; @@ -2328,7 +2348,7 @@ section: } static GtkWidget * -emae_send_page(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, struct _GtkWidget *old, gpointer data) +emae_send_page(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *old, gpointer data) { EMAccountEditor *emae = data; EMAccountEditorPrivate *gui = emae->priv; @@ -2383,7 +2403,7 @@ emae_send_page(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, struct } static GtkWidget * -emae_defaults_page(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, struct _GtkWidget *old, gpointer data) +emae_defaults_page(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *old, gpointer data) { EMAccountEditor *emae = data; EMAccountEditorPrivate *gui = emae->priv; @@ -2401,8 +2421,8 @@ emae_defaults_page(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, st g_free (gladefile); /* Special folders */ - gui->drafts_folder_button = (GtkButton *)emae_account_folder(emae, "drafts_button", E_ACCOUNT_DRAFTS_FOLDER_URI, MAIL_COMPONENT_FOLDER_DRAFTS, xml); - gui->sent_folder_button = (GtkButton *)emae_account_folder(emae, "sent_button", E_ACCOUNT_SENT_FOLDER_URI, MAIL_COMPONENT_FOLDER_SENT, xml); + gui->drafts_folder_button = (GtkButton *)emae_account_folder(emae, "drafts_button", E_ACCOUNT_DRAFTS_FOLDER_URI, E_MAIL_FOLDER_DRAFTS, xml); + gui->sent_folder_button = (GtkButton *)emae_account_folder(emae, "sent_button", E_ACCOUNT_SENT_FOLDER_URI, E_MAIL_FOLDER_SENT, xml); /* Special Folders "Reset Defaults" button */ gui->restore_folders_button = (GtkButton *)glade_xml_get_widget (xml, "default_folders_button"); @@ -2441,7 +2461,7 @@ emae_defaults_page(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, st } static GtkWidget * -emae_security_page(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, struct _GtkWidget *old, gpointer data) +emae_security_page(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *old, gpointer data) { EMAccountEditor *emae = data; #if defined (HAVE_NSS) @@ -2505,7 +2525,7 @@ emae_security_page(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, st } static GtkWidget * -emae_widget_glade(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, struct _GtkWidget *old, gpointer data) +emae_widget_glade(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *old, gpointer data) { EMAccountEditor *emae = data; gint i; @@ -2556,7 +2576,7 @@ static EMConfigItem emae_editor_items[] = { static gboolean emae_editor_items_translated = FALSE; static GtkWidget * -emae_management_page(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, struct _GtkWidget *old, gpointer data) +emae_management_page(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *old, gpointer data) { EMAccountEditor *emae = data; EMAccountEditorPrivate *gui = emae->priv; @@ -2586,7 +2606,7 @@ emae_management_page(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, } static GtkWidget * -emae_widget_druid_glade(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, struct _GtkWidget *old, gpointer data) +emae_widget_druid_glade(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *old, gpointer data) { GladeXML *druidxml; GtkWidget *w; @@ -2786,36 +2806,26 @@ emae_check_complete(EConfig *ec, const gchar *pageid, gpointer data) gtk_entry_set_text(emae->priv->transport.username, user); if (uri && (url = camel_url_new(uri, NULL)) != NULL) { refresh = TRUE; + camel_url_set_protocol(url, mail_servers[index].proto); + camel_url_set_param(url, "use_ssl", mail_servers[index].ssl); + camel_url_set_host (url, mail_servers[index].recv); camel_url_set_user (url, user); - if (index != -1) { - camel_url_set_protocol(url, mail_servers[index].proto); - camel_url_set_param(url, "use_ssl", mail_servers[index].ssl); - camel_url_set_host (url, mail_servers[index].recv); - gtk_entry_set_text(emae->priv->source.hostname, mail_servers[index].recv); - gtk_entry_set_text(emae->priv->transport.hostname, mail_servers[index].send); - camel_url_set_host (url, mail_servers[index].recv); - - } else { - camel_url_set_host (url, ""); - } - camel_url_set_user (url, user); - g_free (uri); + gtk_entry_set_text(emae->priv->source.hostname, mail_servers[index].recv); + gtk_entry_set_text(emae->priv->transport.hostname, mail_servers[index].send); uri = camel_url_to_string(url, 0); e_account_set_string(emae->account, E_ACCOUNT_SOURCE_URL, uri); + g_free(uri); camel_url_free(url); - } else { - g_free(uri); } } } else if (!strcmp(pageid, "30.send")) { - if (!emae->priv->send_set) { CamelURL *url; gchar *at, *user; gint index; gchar *uri = (gchar *)e_account_get_string(emae->account, E_ACCOUNT_TRANSPORT_URL); - emae->priv->send_set = 1; + tmp = e_account_get_string(emae->account, E_ACCOUNT_ID_ADDRESS); at = strchr(tmp, '@'); user = g_alloca(at-tmp+1); @@ -2824,7 +2834,7 @@ emae_check_complete(EConfig *ec, const gchar *pageid, gpointer data) at++; index = check_servers(at); - if (index != -1 && uri && (url = camel_url_new(uri, NULL)) != NULL) { + if (uri && (url = camel_url_new(uri, NULL)) != NULL) { refresh = TRUE; camel_url_set_protocol (url, "smtp"); camel_url_set_param(url, "use_ssl", mail_servers[index].ssl); @@ -2834,9 +2844,10 @@ emae_check_complete(EConfig *ec, const gchar *pageid, gpointer data) e_account_set_string(emae->account, E_ACCOUNT_TRANSPORT_URL, uri); g_free(uri); camel_url_free(url); + } else { + g_warning("buz2\n"); } - } } else if (!strcmp(pageid, "20.receive_options")) { if (emae->priv->source.provider && emae->priv->extra_provider != emae->priv->source.provider) { @@ -2853,7 +2864,7 @@ emae_check_complete(EConfig *ec, const gchar *pageid, gpointer data) len = strlen(tmp); template = alloca(len + 14); strcpy(template, tmp); - while (mail_config_get_account_by_name(template)) + while (e_get_account_by_name (template)) sprintf(template + len, " (%d)", i++); gtk_entry_set_text(emae->priv->identity_entries[0], template); @@ -2906,7 +2917,7 @@ emae_check_complete(EConfig *ec, const gchar *pageid, gpointer data) if (ok && (pageid == NULL || !strcmp(pageid, "40.management"))) { ok = (tmp = e_account_get_string(emae->account, E_ACCOUNT_NAME)) && tmp[0] - && ((ea = mail_config_get_account_by_name(tmp)) == NULL + && ((ea = e_get_account_by_name (tmp)) == NULL || ea == emae->original); if (!ok) { d(printf("management page incomplete\n")); @@ -2926,6 +2937,7 @@ em_account_editor_check (EMAccountEditor *emae, const gchar *page) static void add_new_store (gchar *uri, CamelStore *store, gpointer user_data) { +#if 0 /* KILL-BONOBO: Try to actually fix this? */ MailComponent *component = mail_component_peek (); EAccount *account = user_data; @@ -2933,13 +2945,14 @@ add_new_store (gchar *uri, CamelStore *store, gpointer user_data) return; mail_component_add_store (component, store, account->name); +#endif } static void emae_commit(EConfig *ec, GSList *items, gpointer data) { EMAccountEditor *emae = data; - EAccountList *accounts = mail_config_get_accounts(); + EAccountList *accounts = e_get_account_list (); EAccount *account; /* the mail-config*acconts* api needs a lot of work */ @@ -3005,13 +3018,21 @@ em_account_editor_construct(EMAccountEditor *emae, EAccount *account, em_account emae->do_signature = TRUE; } else { + const gchar *uri; + /* TODO: have a get_default_account thing?? */ emae->account = e_account_new(); emae->account->enabled = TRUE; - e_account_set_string(emae->account, E_ACCOUNT_DRAFTS_FOLDER_URI, - mail_component_get_folder_uri(NULL, MAIL_COMPONENT_FOLDER_DRAFTS)); - e_account_set_string(emae->account, E_ACCOUNT_SENT_FOLDER_URI, - mail_component_get_folder_uri(NULL, MAIL_COMPONENT_FOLDER_SENT)); + + uri = e_mail_shell_backend_get_folder_uri ( + global_mail_shell_backend, E_MAIL_FOLDER_DRAFTS); + e_account_set_string ( + emae->account, E_ACCOUNT_DRAFTS_FOLDER_URI, uri); + + uri = e_mail_shell_backend_get_folder_uri ( + global_mail_shell_backend, E_MAIL_FOLDER_SENT); + e_account_set_string ( + emae->account, E_ACCOUNT_SENT_FOLDER_URI, uri); } /* sort the providers, remote first */ |