aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@ximian.com>2001-01-17 09:34:22 +0800
committerJeffrey Stedfast <fejj@src.gnome.org>2001-01-17 09:34:22 +0800
commita8acf02a64906ad1f3d84dd047ef1ad1bc61ac3e (patch)
treede455398d0209053942308a21f69f99454f00cd2 /mail
parent4f5effdf884b53299fb85bf344ccd5441f01d7fe (diff)
downloadgsoc2013-evolution-a8acf02a64906ad1f3d84dd047ef1ad1bc61ac3e.tar
gsoc2013-evolution-a8acf02a64906ad1f3d84dd047ef1ad1bc61ac3e.tar.gz
gsoc2013-evolution-a8acf02a64906ad1f3d84dd047ef1ad1bc61ac3e.tar.bz2
gsoc2013-evolution-a8acf02a64906ad1f3d84dd047ef1ad1bc61ac3e.tar.lz
gsoc2013-evolution-a8acf02a64906ad1f3d84dd047ef1ad1bc61ac3e.tar.xz
gsoc2013-evolution-a8acf02a64906ad1f3d84dd047ef1ad1bc61ac3e.tar.zst
gsoc2013-evolution-a8acf02a64906ad1f3d84dd047ef1ad1bc61ac3e.zip
Modify to be able to handle a NULL source_url. (source_auth_init): Allow
2001-01-16 Jeffrey Stedfast <fejj@ximian.com> * mail-account-editor.c (apply_changes): Modify to be able to handle a NULL source_url. (source_auth_init): Allow for a NULL source url. (source_check): Same. * mail-config.c (mail_config_write): Allow for NULL source URLs. And while we're at it, NULL transport URLs as well. Might as well save the use_ssl variable too. (config_read): Same. * mail-config-druid.c (druid_finish): Modify to allow a NULL source url. (incoming_next): Modify to check for a NULL source and jump to the transport page if one is encountered (this means the user decided not to config a source). (incoming_type_changed): Modify to set all widgets insensitive if the user selected the "None" source menu item (aka NULL provider). (incoming_check): Modify to allow the user to go to the next page when he/she has chosen "None" for their source type. (mail_config_druid_get_source_url): Return NULL if the provider is NULL. (mail_config_druid_get_transport_url): Same. svn path=/trunk/; revision=7561
Diffstat (limited to 'mail')
-rw-r--r--mail/ChangeLog25
-rw-r--r--mail/mail-account-editor.c133
-rw-r--r--mail/mail-config-druid.c107
-rw-r--r--mail/mail-config.c24
4 files changed, 199 insertions, 90 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index e7258dcc1e..3a07712f10 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,28 @@
+2001-01-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * mail-account-editor.c (apply_changes): Modify to be able to
+ handle a NULL source_url.
+ (source_auth_init): Allow for a NULL source url.
+ (source_check): Same.
+
+ * mail-config.c (mail_config_write): Allow for NULL source
+ URLs. And while we're at it, NULL transport URLs as well. Might as
+ well save the use_ssl variable too.
+ (config_read): Same.
+
+ * mail-config-druid.c (druid_finish): Modify to allow a NULL
+ source url.
+ (incoming_next): Modify to check for a NULL source and jump to the
+ transport page if one is encountered (this means the user decided
+ not to config a source).
+ (incoming_type_changed): Modify to set all widgets insensitive if
+ the user selected the "None" source menu item (aka NULL provider).
+ (incoming_check): Modify to allow the user to go to the next page
+ when he/she has chosen "None" for their source type.
+ (mail_config_druid_get_source_url): Return NULL if the provider is
+ NULL.
+ (mail_config_druid_get_transport_url): Same.
+
2001-01-16 Dan Winship <danw@ximian.com>
* mail-display.c (on_object_requested): Don't do thumbnails for
diff --git a/mail/mail-account-editor.c b/mail/mail-account-editor.c
index 7c727c63b0..dc19646f75 100644
--- a/mail/mail-account-editor.c
+++ b/mail/mail-account-editor.c
@@ -108,7 +108,7 @@ apply_changes (MailAccountEditor *editor)
{
MailConfigAccount *account;
char *host, *pport, *str;
- CamelURL *source_url, *transport_url;
+ CamelURL *source_url = NULL, *transport_url;
gboolean retval = TRUE;
int port;
@@ -143,40 +143,42 @@ apply_changes (MailAccountEditor *editor)
}
/* source */
- source_url = camel_url_new (account->source->url, NULL);
-
- g_free (source_url->user);
- str = gtk_entry_get_text (editor->source_user);
- source_url->user = str && *str ? g_strdup (str) : NULL;
-
- g_free (source_url->passwd);
- str = gtk_entry_get_text (editor->source_passwd);
- source_url->passwd = str && *str ? g_strdup (str) : NULL;
-
- g_free (source_url->authmech);
- str = gtk_object_get_data (GTK_OBJECT (editor), "source_authmech");
- source_url->authmech = str && *str ? g_strdup (str) : NULL;
-
- g_free (source_url->host);
- host = g_strdup (gtk_entry_get_text (editor->source_host));
- if (host && (pport = strchr (host, ':'))) {
- *pport = '\0';
- port = atoi (pport + 1);
- } else {
- port = 0;
+ if (account->source->url) {
+ source_url = camel_url_new (account->source->url, NULL);
+
+ g_free (source_url->user);
+ str = gtk_entry_get_text (editor->source_user);
+ source_url->user = str && *str ? g_strdup (str) : NULL;
+
+ g_free (source_url->passwd);
+ str = gtk_entry_get_text (editor->source_passwd);
+ source_url->passwd = str && *str ? g_strdup (str) : NULL;
+
+ g_free (source_url->authmech);
+ str = gtk_object_get_data (GTK_OBJECT (editor), "source_authmech");
+ source_url->authmech = str && *str ? g_strdup (str) : NULL;
+
+ g_free (source_url->host);
+ host = g_strdup (gtk_entry_get_text (editor->source_host));
+ if (host && (pport = strchr (host, ':'))) {
+ *pport = '\0';
+ port = atoi (pport + 1);
+ } else {
+ port = 0;
+ }
+ source_url->host = host;
+ source_url->port = port;
+
+ g_free (source_url->path);
+ str = gtk_entry_get_text (editor->source_path);
+ source_url->path = str && *str ? g_strdup (str) : NULL;
+
+ account->source->save_passwd = GTK_TOGGLE_BUTTON (editor->save_passwd)->active;
+ account->source->keep_on_server = GTK_TOGGLE_BUTTON (editor->keep_on_server)->active;
+
+ if (editor->source_ssl)
+ account->source->use_ssl = GTK_TOGGLE_BUTTON (editor->source_ssl)->active;
}
- source_url->host = host;
- source_url->port = port;
-
- g_free (source_url->path);
- str = gtk_entry_get_text (editor->source_path);
- source_url->path = str && *str ? g_strdup (str) : NULL;
-
- account->source->save_passwd = GTK_TOGGLE_BUTTON (editor->save_passwd)->active;
- account->source->keep_on_server = GTK_TOGGLE_BUTTON (editor->keep_on_server)->active;
-
- if (editor->source_ssl)
- account->source->use_ssl = GTK_TOGGLE_BUTTON (editor->source_ssl)->active;
/* transport */
transport_url = g_new0 (CamelURL, 1);
@@ -209,20 +211,22 @@ apply_changes (MailAccountEditor *editor)
*/
/* check to make sure the source works */
- if (!mail_config_check_service (source_url, CAMEL_PROVIDER_STORE, NULL)) {
- /* set the new source url */
- g_free (account->source->url);
- account->source->url = camel_url_to_string (source_url, FALSE);
-
- /* save the password if we were requested to do so */
- if (account->source->save_passwd && source_url->passwd) {
- mail_session_set_password (account->source->url, source_url->passwd);
- mail_session_remember_password (account->source->url);
+ if (source_url) {
+ if (!mail_config_check_service (source_url, CAMEL_PROVIDER_STORE, NULL)) {
+ /* set the new source url */
+ g_free (account->source->url);
+ account->source->url = camel_url_to_string (source_url, FALSE);
+
+ /* save the password if we were requested to do so */
+ if (account->source->save_passwd && source_url->passwd) {
+ mail_session_set_password (account->source->url, source_url->passwd);
+ mail_session_remember_password (account->source->url);
+ }
+ } else {
+ retval = FALSE;
}
- } else {
- retval = FALSE;
+ camel_url_free (source_url);
}
- camel_url_free (source_url);
/* check to make sure the transport works */
if (mail_config_check_service (transport_url, CAMEL_PROVIDER_TRANSPORT, NULL)) {
@@ -299,8 +303,7 @@ source_auth_init (MailAccountEditor *editor, CamelURL *url)
menu = gtk_menu_new ();
gtk_option_menu_remove_menu (editor->source_auth);
- /* If we can't connect, don't let them continue. */
- if (!mail_config_check_service (url, CAMEL_PROVIDER_STORE, &authtypes)) {
+ if (!url || !mail_config_check_service (url, CAMEL_PROVIDER_STORE, &authtypes)) {
gtk_option_menu_set_menu (editor->source_auth, menu);
return;
@@ -364,7 +367,7 @@ transport_construct_authmenu (MailAccountEditor *editor, CamelURL *url)
menu = gtk_menu_new ();
gtk_option_menu_remove_menu (editor->transport_auth);
- if (!mail_config_check_service (url, CAMEL_PROVIDER_TRANSPORT, &authtypes)) {
+ if (!url || !mail_config_check_service (url, CAMEL_PROVIDER_TRANSPORT, &authtypes)) {
gtk_option_menu_set_menu (editor->transport_auth, menu);
return;
@@ -516,18 +519,18 @@ source_check (MailAccountEditor *editor, CamelURL *url)
}
if (provider->object_types[CAMEL_PROVIDER_STORE] && provider->flags & CAMEL_PROVIDER_IS_SOURCE) {
- if (!g_strcasecmp (provider->protocol, url->protocol)) {
+ if (!url || !g_strcasecmp (provider->protocol, url->protocol)) {
GtkWidget *label;
/* keep-on-server */
- if (!(provider->flags & CAMEL_PROVIDER_IS_STORAGE))
+ if (url && !(provider->flags & CAMEL_PROVIDER_IS_STORAGE))
gtk_widget_set_sensitive (GTK_WIDGET (editor->keep_on_server), TRUE);
else
gtk_widget_set_sensitive (GTK_WIDGET (editor->keep_on_server), FALSE);
/* host */
label = glade_xml_get_widget (editor->gui, "lblSourceHost");
- if (provider->url_flags & CAMEL_URL_ALLOW_HOST) {
+ if (url && provider->url_flags & CAMEL_URL_ALLOW_HOST) {
gtk_widget_set_sensitive (GTK_WIDGET (editor->source_host), TRUE);
gtk_widget_set_sensitive (label, TRUE);
} else {
@@ -537,7 +540,7 @@ source_check (MailAccountEditor *editor, CamelURL *url)
/* user */
label = glade_xml_get_widget (editor->gui, "lblSourceUser");
- if (provider->url_flags & CAMEL_URL_ALLOW_USER) {
+ if (url && provider->url_flags & CAMEL_URL_ALLOW_USER) {
gtk_widget_set_sensitive (GTK_WIDGET (editor->source_user), TRUE);
gtk_widget_set_sensitive (label, TRUE);
} else {
@@ -547,7 +550,7 @@ source_check (MailAccountEditor *editor, CamelURL *url)
/* path */
label = glade_xml_get_widget (editor->gui, "lblSourcePath");
- if (provider->url_flags & CAMEL_URL_ALLOW_PATH) {
+ if (url && provider->url_flags & CAMEL_URL_ALLOW_PATH) {
gtk_widget_set_sensitive (GTK_WIDGET (editor->source_path), TRUE);
gtk_widget_set_sensitive (label, TRUE);
} else {
@@ -557,7 +560,7 @@ source_check (MailAccountEditor *editor, CamelURL *url)
/* auth */
label = glade_xml_get_widget (editor->gui, "lblSourceAuth");
- if (provider->url_flags & CAMEL_URL_ALLOW_AUTH) {
+ if (url && provider->url_flags & CAMEL_URL_ALLOW_AUTH) {
gtk_widget_set_sensitive (GTK_WIDGET (editor->source_auth), TRUE);
gtk_widget_set_sensitive (label, TRUE);
} else {
@@ -567,7 +570,7 @@ source_check (MailAccountEditor *editor, CamelURL *url)
/* passwd */
label = glade_xml_get_widget (editor->gui, "lblSourcePasswd");
- if (provider->url_flags & CAMEL_URL_ALLOW_PASSWORD) {
+ if (url && provider->url_flags & CAMEL_URL_ALLOW_PASSWORD) {
gtk_widget_set_sensitive (GTK_WIDGET (editor->source_passwd), TRUE);
gtk_widget_set_sensitive (GTK_WIDGET (editor->save_passwd), TRUE);
gtk_widget_set_sensitive (label, TRUE);
@@ -645,23 +648,23 @@ construct (MailAccountEditor *editor, const MailConfigAccount *account)
url = camel_url_new (account->source->url, NULL);
editor->source_type = glade_xml_get_widget (gui, "txtSourceType");
if (GTK_IS_LABEL (editor->source_type))
- gtk_label_set_text (GTK_LABEL (editor->source_type), url->protocol);
+ gtk_label_set_text (GTK_LABEL (editor->source_type), url ? url->protocol : _("None"));
else
- gtk_entry_set_text (GTK_ENTRY (editor->source_type), url->protocol);
+ gtk_entry_set_text (GTK_ENTRY (editor->source_type), url ? url->protocol : _("None"));
editor->source_host = GTK_ENTRY (glade_xml_get_widget (gui, "txtSourceHost"));
- gtk_entry_set_text (editor->source_host, url->host ? url->host : "");
- if (url->port) {
+ gtk_entry_set_text (editor->source_host, url && url->host ? url->host : "");
+ if (url && url->port) {
char port[10];
g_snprintf (port, 9, ":%d", url->port);
gtk_entry_append_text (editor->source_host, port);
}
editor->source_user = GTK_ENTRY (glade_xml_get_widget (gui, "txtSourceUser"));
- gtk_entry_set_text (editor->source_user, url->user ? url->user : "");
+ gtk_entry_set_text (editor->source_user, url && url->user ? url->user : "");
editor->source_passwd = GTK_ENTRY (glade_xml_get_widget (gui, "txtSourcePasswd"));
- gtk_entry_set_text (editor->source_passwd, url->passwd ? url->passwd : "");
+ gtk_entry_set_text (editor->source_passwd, url && url->passwd ? url->passwd : "");
editor->source_path = GTK_ENTRY (glade_xml_get_widget (gui, "txtSourcePath"));
- gtk_entry_set_text (editor->source_path, url->path);
+ gtk_entry_set_text (editor->source_path, url && url->path);
editor->save_passwd = GTK_CHECK_BUTTON (glade_xml_get_widget (gui, "chkSavePasswd"));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (editor->save_passwd), account->source->save_passwd);
editor->source_auth = GTK_OPTION_MENU (glade_xml_get_widget (gui, "omenuSourceAuth"));
@@ -679,8 +682,8 @@ construct (MailAccountEditor *editor, const MailConfigAccount *account)
url = camel_url_new (account->transport->url, NULL);
editor->transport_type = GTK_OPTION_MENU (glade_xml_get_widget (gui, "omenuTransportType"));
editor->transport_host = GTK_ENTRY (glade_xml_get_widget (gui, "txtTransportHost"));
- gtk_entry_set_text (editor->transport_host, url->host ? url->host : "");
- if (url->port) {
+ gtk_entry_set_text (editor->transport_host, url && url->host ? url->host : "");
+ if (url && url->port) {
char port[10];
g_snprintf (port, 9, ":%d", url->port);
diff --git a/mail/mail-config-druid.c b/mail/mail-config-druid.c
index 67c1663839..ba9537593e 100644
--- a/mail/mail-config-druid.c
+++ b/mail/mail-config-druid.c
@@ -204,14 +204,16 @@ druid_finish (GnomeDruidPage *page, gpointer arg1, gpointer user_data)
source->keep_on_server = mail_config_druid_get_keep_mail_on_server (druid);
source->save_passwd = mail_config_druid_get_save_password (druid);
str = mail_config_druid_get_source_url (druid);
- url = camel_url_new (str, NULL);
- g_free (str);
- source->url = camel_url_to_string (url, FALSE);
- if (source->save_passwd && url->passwd) {
- mail_session_set_password (source->url, url->passwd);
- mail_session_remember_password (source->url);
+ if (str) {
+ /* cache the password and rewrite the url without the password part */
+ url = camel_url_new (str, NULL);
+ source->url = camel_url_to_string (url, FALSE);
+ if (source->save_passwd && url->passwd) {
+ mail_session_set_password (source->url, url->passwd);
+ mail_session_remember_password (source->url);
+ }
+ camel_url_free (url);
}
- camel_url_free (url);
/* construct the transport */
transport = g_new0 (MailConfigService, 1);
@@ -275,13 +277,13 @@ incoming_check (MailConfigDruid *druid)
gboolean host = TRUE, user = TRUE, path = TRUE;
gboolean next_sensitive = TRUE;
- if (prov->url_flags & CAMEL_URL_NEED_HOST)
+ if (prov && prov->url_flags & CAMEL_URL_NEED_HOST)
host = gtk_entry_get_text (druid->incoming_hostname) != NULL;
- if (prov->url_flags & CAMEL_URL_NEED_USER)
+ if (prov && prov->url_flags & CAMEL_URL_NEED_USER)
user = gtk_entry_get_text (druid->incoming_username) != NULL;
- if (prov->url_flags & CAMEL_URL_NEED_PATH)
+ if (prov && prov->url_flags & CAMEL_URL_NEED_PATH)
path = gtk_entry_get_text (druid->incoming_path) != NULL;
next_sensitive = host && user && path;
@@ -332,6 +334,18 @@ incoming_next (GnomeDruidPage *page, GnomeDruid *druid, gpointer data)
config->have_auth_page = TRUE;
source_url = mail_config_druid_get_source_url (config);
+ if (!source_url) {
+ /* User opted to not setup a source for this account,
+ * so jump past the auth page */
+
+ /* Skip to transport page. */
+ config->have_auth_page = FALSE;
+ transport_page = glade_xml_get_widget (config->gui, "druidTransportPage");
+ gnome_druid_set_page (config->druid, GNOME_DRUID_PAGE (transport_page));
+
+ return TRUE;
+ }
+
url = camel_url_new (source_url, NULL);
g_free (source_url);
@@ -388,7 +402,7 @@ incoming_type_changed (GtkWidget *widget, gpointer user_data)
/* hostname */
label = glade_xml_get_widget (druid->gui, "lblSourceHost");
- if (provider->url_flags & CAMEL_URL_ALLOW_HOST) {
+ if (provider && provider->url_flags & CAMEL_URL_ALLOW_HOST) {
dwidget = GTK_WIDGET (druid->incoming_hostname);
gtk_widget_set_sensitive (GTK_WIDGET (druid->incoming_hostname), TRUE);
gtk_widget_set_sensitive (label, TRUE);
@@ -400,7 +414,7 @@ incoming_type_changed (GtkWidget *widget, gpointer user_data)
/* username */
label = glade_xml_get_widget (druid->gui, "lblSourceUser");
- if (provider->url_flags & CAMEL_URL_ALLOW_USER) {
+ if (provider && provider->url_flags & CAMEL_URL_ALLOW_USER) {
if (!dwidget)
dwidget = GTK_WIDGET (druid->incoming_username);
gtk_widget_set_sensitive (GTK_WIDGET (druid->incoming_username), TRUE);
@@ -413,7 +427,7 @@ incoming_type_changed (GtkWidget *widget, gpointer user_data)
/* password */
label = glade_xml_get_widget (druid->gui, "lblSourcePasswd");
- if (provider->url_flags & CAMEL_URL_ALLOW_PASSWORD) {
+ if (provider && provider->url_flags & CAMEL_URL_ALLOW_PASSWORD) {
if (!dwidget)
dwidget = GTK_WIDGET (druid->password);
gtk_widget_set_sensitive (GTK_WIDGET (druid->password), TRUE);
@@ -426,7 +440,7 @@ incoming_type_changed (GtkWidget *widget, gpointer user_data)
/* auth */
label = glade_xml_get_widget (druid->gui, "lblSourceAuth");
- if (provider->url_flags & CAMEL_URL_ALLOW_AUTH) {
+ if (provider && provider->url_flags & CAMEL_URL_ALLOW_AUTH) {
gtk_widget_set_sensitive (GTK_WIDGET (druid->auth_type), TRUE);
gtk_widget_set_sensitive (label, TRUE);
} else {
@@ -436,7 +450,7 @@ incoming_type_changed (GtkWidget *widget, gpointer user_data)
/* path */
label = glade_xml_get_widget (druid->gui, "lblSourcePath");
- if (provider->url_flags & CAMEL_URL_ALLOW_PATH) {
+ if (provider && provider->url_flags & CAMEL_URL_ALLOW_PATH) {
if (!dwidget)
dwidget = GTK_WIDGET (druid->incoming_path);
@@ -456,7 +470,7 @@ incoming_type_changed (GtkWidget *widget, gpointer user_data)
}
/* keep mail on server */
- if (!(provider->flags & CAMEL_PROVIDER_IS_STORAGE))
+ if (provider && !(provider->flags & CAMEL_PROVIDER_IS_STORAGE))
gtk_widget_set_sensitive (GTK_WIDGET (druid->incoming_keep_mail), TRUE);
else
gtk_widget_set_sensitive (GTK_WIDGET (druid->incoming_keep_mail), FALSE);
@@ -719,11 +733,27 @@ management_next (GnomeDruidPage *page, GnomeDruid *druid, gpointer data)
return FALSE;
}
+static gint
+provider_compare (const CamelProvider *p1, const CamelProvider *p2)
+{
+ /* sort providers based on "location" (ie. local or remote) */
+ if (p1->flags & CAMEL_PROVIDER_IS_REMOTE) {
+ if (p2->flags & CAMEL_PROVIDER_IS_REMOTE)
+ return 0;
+ return -1;
+ } else {
+ if (p2->flags & CAMEL_PROVIDER_IS_REMOTE)
+ return 1;
+ return 0;
+ }
+}
+
static void
set_defaults (MailConfigDruid *druid)
{
- GtkWidget *stores, *transports;
+ GtkWidget *stores, *transports, *item;
GtkWidget *fstore = NULL, *ftransport = NULL;
+ int si = 0, hstore = 0, ti = 0, htransport = 0;
char *user, *realname;
char hostname[1024];
char domain[1024];
@@ -753,6 +783,10 @@ set_defaults (MailConfigDruid *druid)
stores = gtk_menu_new ();
transports = gtk_menu_new ();
druid->providers = camel_session_list_providers (session, TRUE);
+
+ /* sort the providers, remote first */
+ druid->providers = g_list_sort (druid->providers, (GCompareFunc) provider_compare);
+
l = druid->providers;
while (l) {
CamelProvider *provider = l->data;
@@ -763,8 +797,6 @@ set_defaults (MailConfigDruid *druid)
}
if (provider->object_types[CAMEL_PROVIDER_STORE] && provider->flags & CAMEL_PROVIDER_IS_SOURCE) {
- GtkWidget *item;
-
item = gtk_menu_item_new_with_label (provider->name);
gtk_object_set_data (GTK_OBJECT (item), "provider", provider);
gtk_signal_connect (GTK_OBJECT (item), "activate",
@@ -775,13 +807,15 @@ set_defaults (MailConfigDruid *druid)
gtk_widget_show (item);
- if (!fstore)
+ if (!fstore) {
fstore = item;
+ hstore = si;
+ }
+
+ si++;
}
if (provider->object_types[CAMEL_PROVIDER_TRANSPORT]) {
- GtkWidget *item;
-
item = gtk_menu_item_new_with_label (provider->name);
gtk_object_set_data (GTK_OBJECT (item), "provider", provider);
gtk_signal_connect (GTK_OBJECT (item), "activate",
@@ -792,18 +826,41 @@ set_defaults (MailConfigDruid *druid)
gtk_widget_show (item);
- if (!ftransport)
+ if (!ftransport) {
ftransport = item;
+ htransport = ti;
+ }
+
+ ti++;
}
l = l->next;
}
+ /* add a "None" option to the stores menu */
+ item = gtk_menu_item_new_with_label (_("None"));
+ gtk_object_set_data (GTK_OBJECT (item), "provider", NULL);
+ gtk_signal_connect (GTK_OBJECT (item), "activate",
+ GTK_SIGNAL_FUNC (incoming_type_changed),
+ druid);
+
+ gtk_menu_append (GTK_MENU (stores), item);
+
+ gtk_widget_show (item);
+
+ if (!fstore) {
+ fstore = item;
+ hstore = si;
+ }
+
+ /* set the menus on the optionmenus */
gtk_option_menu_remove_menu (druid->incoming_type);
gtk_option_menu_set_menu (druid->incoming_type, stores);
+ gtk_option_menu_set_history (druid->incoming_type, hstore);
gtk_option_menu_remove_menu (druid->outgoing_type);
gtk_option_menu_set_menu (druid->outgoing_type, transports);
+ gtk_option_menu_set_history (druid->outgoing_type, htransport);
if (fstore)
gtk_signal_emit_by_name (GTK_OBJECT (fstore), "activate", druid);
@@ -1036,6 +1093,8 @@ mail_config_druid_get_source_url (MailConfigDruid *druid)
g_return_val_if_fail (IS_MAIL_CONFIG_DRUID (druid), NULL);
provider = druid->source_provider;
+ if (!provider)
+ return NULL;
url = g_new0 (CamelURL, 1);
url->protocol = g_strdup (provider->protocol);
@@ -1095,6 +1154,8 @@ mail_config_druid_get_transport_url (MailConfigDruid *druid)
g_return_val_if_fail (IS_MAIL_CONFIG_DRUID (druid), NULL);
provider = druid->transport_provider;
+ if (!provider)
+ return NULL;
url = g_new0 (CamelURL, 1);
url->protocol = g_strdup (provider->protocol);
diff --git a/mail/mail-config.c b/mail/mail-config.c
index 04d59f7f17..47a2392767 100644
--- a/mail/mail-config.c
+++ b/mail/mail-config.c
@@ -246,12 +246,22 @@ config_read (void)
path = g_strdup_printf ("source_url_%d", i);
source->url = gnome_config_get_string (path);
g_free (path);
+
+ if (!*source->url) {
+ /* no source associated with this account */
+ g_free (source->url);
+ source->url = NULL;
+ }
+
path = g_strdup_printf ("source_keep_on_server_%d", i);
source->keep_on_server = gnome_config_get_bool (path);
g_free (path);
path = g_strdup_printf ("source_save_passwd_%d", i);
source->save_passwd = gnome_config_get_bool (path);
g_free (path);
+ path = g_strdup_printf ("source_use_ssl_%d", i);
+ source->use_ssl = gnome_config_get_bool (path);
+ g_free (path);
/* get the transport */
transport = g_new0 (MailConfigService, 1);
@@ -259,6 +269,16 @@ config_read (void)
transport->url = gnome_config_get_string (path);
g_free (path);
+ if (!*transport->url) {
+ /* no transport associated with this account */
+ g_free (transport->url);
+ transport->url = NULL;
+ }
+
+ path = g_strdup_printf ("transport_use_ssl_%d", i);
+ transport->use_ssl = gnome_config_get_bool (path);
+ g_free (path);
+
account->id = id;
account->source = source;
account->transport = transport;
@@ -357,7 +377,7 @@ mail_config_write (void)
/* source info */
path = g_strdup_printf ("source_url_%d", i);
- gnome_config_set_string (path, account->source->url);
+ gnome_config_set_string (path, account->source->url ? account->source->url : "");
g_free (path);
path = g_strdup_printf ("source_keep_on_server_%d", i);
gnome_config_set_bool (path, account->source->keep_on_server);
@@ -368,7 +388,7 @@ mail_config_write (void)
/* transport info */
path = g_strdup_printf ("transport_url_%d", i);
- gnome_config_set_string (path, account->transport->url);
+ gnome_config_set_string (path, account->transport->url ? account->transport->url : "");
g_free (path);
}
gnome_config_pop_prefix ();