diff options
author | JP Rosevear <jpr@ximian.com> | 2001-12-19 23:16:32 +0800 |
---|---|---|
committer | JP Rosevear <jpr@src.gnome.org> | 2001-12-19 23:16:32 +0800 |
commit | b64f547cdd71098035e9b055ee7f0ec4de2b9e1c (patch) | |
tree | 08ca63a7b0166c5bbe565f44a55ba0aef6997fd9 /addressbook/conduit/address-conduit.c | |
parent | d7e3011f5135db26ab911a65e8e5d6ad4faa45df (diff) | |
download | gsoc2013-evolution-b64f547cdd71098035e9b055ee7f0ec4de2b9e1c.tar.gz gsoc2013-evolution-b64f547cdd71098035e9b055ee7f0ec4de2b9e1c.tar.zst gsoc2013-evolution-b64f547cdd71098035e9b055ee7f0ec4de2b9e1c.zip |
go slow and clear the map if the last uri and the current uri do not match
2001-12-18 JP Rosevear <jpr@ximian.com>
* conduit/address-conduit.c (check_for_slow_setting): go slow and
clear the map if the last uri and the current uri do not match
(post_sync): save the last uri
* conduits/address-conduit-config.h: handle a last uri config
option
2001-12-18 Chris Toshok <toshok@ximian.com>
* gui/component/addressbook.c (addressbook_default_book_open):
change this to match its e-book counterpart, and only failover to
the local addressbook if the protocol wasn't supported. that way
errors like "failure to connect" are still reported to the user.
* backend/ebook/e-book-util.h: add prototypes for
e_book_load_default_book and e_book_get_config_database.
* backend/ebook/e-book-util.c (e_book_default_book_open): new
function, basically cut and paste addressbook_default_book_open
from addressbook.c here.
(e_book_load_default_book): cut and past
addressbook_load_default_book here, pretty much, except leave off
the auth stuff.
(e_book_get_config_database): new function, returns the
Bonobo_ConfigDatabase for e_book_load_default_book to use.
* conduit/address-conduit.c (start_addressbook_server): use
e_book_load_default_book here.
svn path=/trunk/; revision=15178
Diffstat (limited to 'addressbook/conduit/address-conduit.c')
-rw-r--r-- | addressbook/conduit/address-conduit.c | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/addressbook/conduit/address-conduit.c b/addressbook/conduit/address-conduit.c index 6791d0e445..3d6e3eca1f 100644 --- a/addressbook/conduit/address-conduit.c +++ b/addressbook/conduit/address-conduit.c @@ -31,6 +31,7 @@ #include <pi-file.h> #include <pi-dlp.h> #include <ebook/e-book.h> +#include <ebook/e-book-util.h> #include <ebook/e-card-types.h> #include <ebook/e-card-cursor.h> #include <ebook/e-card.h> @@ -38,9 +39,11 @@ #include <e-pilot-util.h> #define ADDR_CONFIG_LOAD 1 +#define ADDR_CONFIG_SAVE 1 #define ADDR_CONFIG_DESTROY 1 #include "address-conduit-config.h" #undef ADDR_CONFIG_LOAD +#undef ADDR_CONFIG_SAVE #undef ADDR_CONFIG_DESTROY #include "address-conduit.h" @@ -311,25 +314,18 @@ book_open_cb (EBook *book, EBookStatus status, gpointer closure) static int start_addressbook_server (EAddrConduitContext *ctxt) { - gchar *uri, *path; - + gboolean result; + g_return_val_if_fail(ctxt!=NULL,-2); ctxt->ebook = e_book_new (); - path = g_concat_dir_and_file (g_get_home_dir (), - "evolution/local/Contacts/addressbook.db"); - uri = g_strdup_printf ("file://%s", path); - g_free (path); - - e_book_load_uri (ctxt->ebook, uri, book_open_cb, ctxt); - + result = e_book_load_default_book (ctxt->ebook, book_open_cb, ctxt); + /* run a sub event loop to turn ebook's async loading into a synchronous call */ gtk_main (); - g_free (uri); - if (ctxt->address_load_success) return 0; @@ -956,11 +952,20 @@ check_for_slow_setting (GnomePilotConduit *c, EAddrConduitContext *ctxt) { GnomePilotConduitStandard *conduit = GNOME_PILOT_CONDUIT_STANDARD (c); int map_count; - + const char *uri; + map_count = g_hash_table_size (ctxt->map->pid_map); if (map_count == 0) gnome_pilot_conduit_standard_set_slow (conduit, TRUE); + /* Or if the URI's don't match */ + uri = e_book_get_uri (ctxt->ebook); + LOG(" Current URI %s (%s)\n", uri, ctxt->cfg->last_uri ? ctxt->cfg->last_uri : "<NONE>"); + if (ctxt->cfg->last_uri != NULL && strcmp (ctxt->cfg->last_uri, uri)) { + gnome_pilot_conduit_standard_set_slow (conduit, TRUE); + e_pilot_map_clear (ctxt->map); + } + if (gnome_pilot_conduit_standard_get_slow (conduit)) { ctxt->map->write_touched_only = TRUE; LOG (" doing slow sync\n"); @@ -1148,6 +1153,10 @@ post_sync (GnomePilotConduit *conduit, LOG ("post_sync: Address Conduit v.%s", CONDUIT_VERSION); + g_free (ctxt->cfg->last_uri); + ctxt->cfg->last_uri = g_strdup (e_book_get_uri (ctxt->ebook)); + addrconduit_save_configuration (ctxt->cfg); + filename = map_name (ctxt); e_pilot_map_write (filename, ctxt->map); g_free (filename); |