diff options
-rw-r--r-- | addressbook/ChangeLog | 8 | ||||
-rw-r--r-- | addressbook/backend/ebook/e-book-util.c | 33 |
2 files changed, 34 insertions, 7 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog index 8be281e512..8099c016ac 100644 --- a/addressbook/ChangeLog +++ b/addressbook/ChangeLog @@ -1,3 +1,11 @@ +2003-03-31 Chris Toshok <toshok@ximian.com> + + * backend/ebook/e-book-util.c (get_local_book_uri): new function, + just return the local uri. + (set_default_book_uri_local): use get_local_book_uri. + (e_book_default_book_open): only try and reload the default book + if it's not already the local book. + 2003-03-31 JP Rosevear <jpr@ximian.com> * conduit/address-conduit.c (card_removed): it emits a list now diff --git a/addressbook/backend/ebook/e-book-util.c b/addressbook/backend/ebook/e-book-util.c index 0fd50f7d5c..cc00d045f4 100644 --- a/addressbook/backend/ebook/e-book-util.c +++ b/addressbook/backend/ebook/e-book-util.c @@ -178,16 +178,28 @@ e_book_use_default_book (EBookCommonCallback cb, gpointer closure) static char *default_book_uri; -static void -set_default_book_uri_local (void) +static char* +get_local_book_uri (void) { char *filename; + char *uri; filename = g_build_filename (g_get_home_dir(), "evolution/local/Contacts/addressbook.db", NULL); - default_book_uri = g_strdup_printf ("file://%s", filename); + uri = g_strdup_printf ("file://%s", filename); + g_free (filename); + + return uri; +} + +static void +set_default_book_uri_local (void) +{ + g_free (default_book_uri); + + default_book_uri = get_local_book_uri (); } static void @@ -250,13 +262,20 @@ e_book_default_book_open (EBook *book, EBookStatus status, gpointer closure) g_free (default_book_closure); /* If there's a transient error, report it to the caller, but - * if the old default folder has disappeared, fall back to - * the local contacts folder instead. + * if the old default folder has disappeared, fall back to the + * local contacts folder instead, except when the default + * folder is also the local folder. */ if (status == E_BOOK_STATUS_PROTOCOL_NOT_SUPPORTED || status == E_BOOK_STATUS_NO_SUCH_BOOK) { - set_default_book_uri_local (); - e_book_load_default_book (book, user_response, user_closure); + char *local_uri = get_local_book_uri(); + if (strcmp (local_uri, default_book_uri)) { + set_default_book_uri_local (); + e_book_load_default_book (book, user_response, user_closure); + } + else + user_response (book, status, user_closure); + g_free (local_uri); } else { user_response (book, status, user_closure); } |