diff options
-rw-r--r-- | addressbook/gui/widgets/eab-gui-util.c | 23 | ||||
-rw-r--r-- | calendar/gui/dialogs/calendar-setup.c | 2 | ||||
-rw-r--r-- | mail/em-utils.c | 2 | ||||
-rw-r--r-- | modules/addressbook/addressbook-config.c | 4 |
4 files changed, 25 insertions, 6 deletions
diff --git a/addressbook/gui/widgets/eab-gui-util.c b/addressbook/gui/widgets/eab-gui-util.c index 4cf5219e71..a40a3a3ff5 100644 --- a/addressbook/gui/widgets/eab-gui-util.c +++ b/addressbook/gui/widgets/eab-gui-util.c @@ -74,11 +74,30 @@ eab_load_error_dialog (GtkWidget *parent, ESource *source, const GError *error) "to download its contents."); } - else if (uri && !strncmp (uri, "file:", 5)) { - gchar *path = g_filename_from_uri (uri, NULL, NULL); + else if (uri && g_str_has_prefix (uri, "local:")) { + const gchar *user_data_dir; + const gchar *source_dir; + gchar *mangled_source_dir; + gchar *path; + + user_data_dir = e_get_user_data_dir (); + source_dir = e_source_peek_relative_uri (source); + + if (!source_dir || !g_str_equal (source_dir, "system")) + source_dir = e_source_peek_uid (source); + + /* Mangle the URI to not contain invalid characters. */ + mangled_source_dir = g_strdelimit (g_strdup (source_dir), ":/", '_'); + + path = g_build_filename ( + user_data_dir, "addressbook", mangled_source_dir, NULL); + + g_free (mangled_source_dir); + label = g_strdup_printf ( _("This address book cannot be opened. Please check that the " "path %s exists and that permissions are set to access it."), path); + g_free (path); label_string = label; } diff --git a/calendar/gui/dialogs/calendar-setup.c b/calendar/gui/dialogs/calendar-setup.c index b21c027fe1..5df14cf368 100644 --- a/calendar/gui/dialogs/calendar-setup.c +++ b/calendar/gui/dialogs/calendar-setup.c @@ -259,7 +259,7 @@ eccp_general_offline (EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidg const gchar *offline_sync; guint row; const gchar *base_uri = e_source_group_peek_base_uri (sdialog->source_group); - gboolean is_local = base_uri && (g_str_has_prefix (base_uri, "file://") || g_str_has_prefix (base_uri, "contacts://")); + gboolean is_local = base_uri && (g_str_has_prefix (base_uri, "local:") || g_str_has_prefix (base_uri, "contacts://")); offline_sync = e_source_get_property (sdialog->source, "offline_sync"); if (old) return old; diff --git a/mail/em-utils.c b/mail/em-utils.c index cf00c73a28..c7b7020b4b 100644 --- a/mail/em-utils.c +++ b/mail/em-utils.c @@ -1703,7 +1703,7 @@ search_address_in_addressbooks (const gchar *address, gboolean local_only, gbool if (!group) continue; - if (local_only && !(e_source_group_peek_base_uri (group) && g_str_has_prefix (e_source_group_peek_base_uri (group), "file://"))) + if (local_only && !(e_source_group_peek_base_uri (group) && g_str_has_prefix (e_source_group_peek_base_uri (group), "local:"))) continue; for (s = e_source_group_peek_sources (group); s; s = g_slist_next (s)) { diff --git a/modules/addressbook/addressbook-config.c b/modules/addressbook/addressbook-config.c index b275590cf5..0c0bda4753 100644 --- a/modules/addressbook/addressbook-config.c +++ b/modules/addressbook/addressbook-config.c @@ -609,7 +609,7 @@ eabc_general_use_in_cal (EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkW if (group) base_uri = e_source_group_peek_base_uri (group); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (use_in_cal_setting), (use_in_cal && g_str_equal (use_in_cal, "1")) || (!use_in_cal && base_uri && g_str_has_prefix (base_uri, "file://"))); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (use_in_cal_setting), (use_in_cal && g_str_equal (use_in_cal, "1")) || (!use_in_cal && base_uri && g_str_has_prefix (base_uri, "local:"))); g_signal_connect (use_in_cal_setting, "toggled", G_CALLBACK (use_in_cal_changed_cb), sdialog); @@ -630,7 +630,7 @@ eabc_general_offline (EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidg const gchar *offline_sync; gboolean is_local_book; - is_local_book = g_str_has_prefix (e_source_group_peek_base_uri (sdialog->source_group), "file:"); + is_local_book = g_str_has_prefix (e_source_group_peek_base_uri (sdialog->source_group), "local:"); offline_sync = e_source_get_property (sdialog->source, "offline_sync"); if (old) return old; |