diff options
-rw-r--r-- | addressbook/ChangeLog | 15 | ||||
-rw-r--r-- | addressbook/conduit/Makefile.am | 3 | ||||
-rw-r--r-- | addressbook/conduit/address-conduit.c | 49 |
3 files changed, 60 insertions, 7 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog index 6dc495fa19..41f77c51eb 100644 --- a/addressbook/ChangeLog +++ b/addressbook/ChangeLog @@ -1,3 +1,18 @@ +2004-08-02 JP Rosevear <jpr@novell.com> + + * conduit/address-conduit.c (addrconduit_load_configuration): get + source uid + (addrconduit_dupe_configuration): copy source_uid + (addrconduit_destroy_configuration): free source_uid + (e_addr_context_new): get the source list + (e_addr_context_destroy): unref the source list + (pre_sync): open the source that was set earlier + (fill_widgets): set the source option menu value + (create_settings_window): pass source list to pilot settings + (save_settings): save source uid + + * conduit/Makefile.am: link to and include misc. widgets + 2004-08-02 Rodney Dawes <dobey@novell.com> * gui/component/ldap-config.glade: Make the main dialog here be diff --git a/addressbook/conduit/Makefile.am b/addressbook/conduit/Makefile.am index 3c6b0f2314..cde1ac2092 100644 --- a/addressbook/conduit/Makefile.am +++ b/addressbook/conduit/Makefile.am @@ -5,6 +5,8 @@ INCLUDES = \ -I$(top_builddir)/addressbook/backend \ -I$(top_srcdir)/e-util \ -I$(top_builddir)/e-util \ + -I$(top_srcdir)/widgets/misc \ + -I$(top_builddir)/widgets/misc \ $(EVOLUTION_ADDRESSBOOK_CONDUIT_CFLAGS) # Address Conduit @@ -17,6 +19,7 @@ libeaddress_conduit_la_LDFLAGS = -module -avoid-version libeaddress_conduit_la_LIBADD = \ $(top_builddir)/e-util/libeutil.la \ $(top_builddir)/e-util/libeconduit.la \ + $(top_builddir)/widgets/misc/libemiscwidgets.la \ $(top_builddir)/camel/libcamel.la \ $(EVOLUTION_ADDRESSBOOK_CONDUIT_LIBS) diff --git a/addressbook/conduit/address-conduit.c b/addressbook/conduit/address-conduit.c index 02ab7102c6..a80b1e2b67 100644 --- a/addressbook/conduit/address-conduit.c +++ b/addressbook/conduit/address-conduit.c @@ -143,6 +143,8 @@ struct _EAddrConduitCfg { guint32 pilot_id; GnomePilotConduitSyncType sync_type; + ESourceList *source_list; + ESource *source; gboolean secret; EContactField default_address; @@ -177,6 +179,20 @@ addrconduit_load_configuration (guint32 pilot_id) /* Custom settings */ gnome_config_push_prefix (prefix); + if (!e_book_get_addressbooks (&c->source_list, NULL)) + c->source_list = NULL; + if (c->source_list) { + c->source = e_pilot_get_sync_source (c->source_list); + if (!c->source) + c->source = e_source_list_peek_source_any (c->source_list); + if (c->source) { + g_object_ref (c->source); + } else { + g_object_unref (c->source_list); + c->source_list = NULL; + } + } + c->secret = gnome_config_get_bool ("secret=FALSE"); address = gnome_config_get_string ("default_address=business"); if (!strcmp (address, "business")) @@ -202,6 +218,7 @@ addrconduit_save_configuration (EAddrConduitCfg *c) c->pilot_id); gnome_config_push_prefix (prefix); + e_pilot_set_sync_source (c->source_list, c->source); gnome_config_set_bool ("secret", c->secret); switch (c->default_address) { case E_CONTACT_ADDRESS_WORK: @@ -234,6 +251,10 @@ addrconduit_dupe_configuration (EAddrConduitCfg *c) retval->sync_type = c->sync_type; retval->pilot_id = c->pilot_id; + if (c->source_list) + retval->source_list = g_object_ref (c->source_list); + if (c->source) + retval->source = g_object_ref (c->source); retval->secret = c->secret; retval->default_address = c->default_address; retval->last_uri = g_strdup (c->last_uri); @@ -246,6 +267,8 @@ addrconduit_destroy_configuration (EAddrConduitCfg *c) { g_return_if_fail (c != NULL); + g_object_unref (c->source_list); + g_object_unref (c->source); g_free (c->last_uri); g_free (c); } @@ -1149,13 +1172,15 @@ pre_sync (GnomePilotConduit *conduit, ctxt->dbi = dbi; - /* FIXME Need to allow our own concept of "local" */ - ctxt->ebook = e_book_new_system_addressbook (NULL); - if (!ctxt->ebook - || !e_book_open (ctxt->ebook, FALSE, NULL)) { + if (ctxt->cfg->source) { + ctxt->ebook = e_book_new (ctxt->cfg->source, NULL); + } else { + ctxt->ebook = e_book_new_default_addressbook (NULL); + } + if (!ctxt->ebook || !e_book_open (ctxt->ebook, TRUE, NULL)) { WARN(_("Could not load addressbook")); gnome_pilot_conduit_error (conduit, _("Could not load addressbook")); - + return -1; } @@ -1617,6 +1642,9 @@ prepare (GnomePilotConduitSyncAbs *conduit, static void fill_widgets (EAddrConduitContext *ctxt) { + if (ctxt->cfg->source) + e_pilot_settings_set_source (E_PILOT_SETTINGS (ctxt->ps), + ctxt->cfg->source); e_pilot_settings_set_secret (E_PILOT_SETTINGS (ctxt->ps), ctxt->cfg->secret); @@ -1629,8 +1657,11 @@ create_settings_window (GnomePilotConduit *conduit, EAddrConduitContext *ctxt) { LOG (g_message ( "create_settings_window" )); + + if (!ctxt->cfg->source_list) + return -1; - ctxt->ps = e_pilot_settings_new (); + ctxt->ps = e_pilot_settings_new (ctxt->cfg->source_list); ctxt->gui = e_addr_gui_new (E_PILOT_SETTINGS (ctxt->ps)); gtk_container_add (GTK_CONTAINER (parent), ctxt->ps); @@ -1651,8 +1682,12 @@ display_settings (GnomePilotConduit *conduit, EAddrConduitContext *ctxt) static void save_settings (GnomePilotConduit *conduit, EAddrConduitContext *ctxt) { - LOG (g_message ( "save_settings" )); + LOG (g_message ( "save_settings" )); + if (ctxt->new_cfg->source) + g_object_unref (ctxt->new_cfg->source); + ctxt->new_cfg->source = e_pilot_settings_get_source (E_PILOT_SETTINGS (ctxt->ps)); + g_object_ref (ctxt->new_cfg->source); ctxt->new_cfg->secret = e_pilot_settings_get_secret (E_PILOT_SETTINGS (ctxt->ps)); e_addr_gui_fill_config (ctxt->gui, ctxt->new_cfg); |