diff --git a/src/backends/evolution/EvolutionSyncSource.cpp b/src/backends/evolution/EvolutionSyncSource.cpp index c38f185d..c22d3e93 100644 --- a/src/backends/evolution/EvolutionSyncSource.cpp +++ b/src/backends/evolution/EvolutionSyncSource.cpp @@ -136,6 +136,22 @@ SyncSource::Database EvolutionSyncSource::createDatabase(const Database &databas ESourceBackend *backend = static_cast(e_source_get_extension(source, sourceExtension())); e_source_backend_set_backend_name(backend, "local"); + // hack: detect databases requested by the PIM Manager and create + // them with a special summary. Long-term we need a better way of + // selecting extensions, for example with a new + // e_source_new_from_string(). + if (boost::starts_with(database.m_uri, "pim-manager-")) { + g_type_ensure (E_TYPE_SOURCE_BACKEND_SUMMARY_SETUP); + ESourceBackendSummarySetup *setup = + static_cast(e_source_get_extension(source, E_SOURCE_EXTENSION_BACKEND_SUMMARY_SETUP)); + e_source_backend_summary_setup_set_summary_fields(setup, + E_CONTACT_TEL, + 0); + e_source_backend_summary_setup_set_indexed_fields(setup, + E_CONTACT_TEL, E_BOOK_INDEX_PHONE, + 0); + } + ESourceRegistryCXX registry = EDSRegistryLoader::getESourceRegistry(); ESourceListCXX sources; sources.push_back(source.ref()); // ESourceListCXX unrefs sources it points to diff --git a/src/backends/evolution/configure-sub.in b/src/backends/evolution/configure-sub.in index eaa69c4b..940f2b16 100644 --- a/src/backends/evolution/configure-sub.in +++ b/src/backends/evolution/configure-sub.in @@ -68,6 +68,9 @@ if test "$enable_evo" = "yes"; then # Only the EClient code supports the API in EDS 3.5.x. PKG_CHECK_MODULES(EDS_VERSION, [libedataserver-1.2 >= 3.5], [AC_DEFINE(USE_EDS_CLIENT, 1, [use e_book/cal_client_* calls]) + # When using it, then we also need libebook-contacts-1.2 + # for the ESourceBackendSummary extension. + PKG_CHECK_MODULES(EBOOKCONTACTS, libebook-contacts-1.2) AC_CHECK_LIB(ebook-1.2, e_book_client_new_direct, [AC_DEFINE(HAVE_E_BOOK_CLIENT_NEW_DIRECT, 1, [use e_book_client_new_direct])], [true], @@ -86,4 +89,4 @@ else EPACKAGE_LIBS= fi -BACKEND_CPPFLAGS="$BACKEND_CPPFLAGS $EPACKAGE_CFLAGS $ECAL_CFLAGS $EBOOK_CFLAGS" +BACKEND_CPPFLAGS="$BACKEND_CPPFLAGS $EPACKAGE_CFLAGS $ECAL_CFLAGS $EBOOK_CFLAGS $EBOOKCONTACTS_CFLAGS" diff --git a/src/backends/evolution/evolution.am b/src/backends/evolution/evolution.am index a546342b..8e0482b4 100644 --- a/src/backends/evolution/evolution.am +++ b/src/backends/evolution/evolution.am @@ -36,7 +36,9 @@ src_backends_evolution_cppflags = \ -I$(top_srcdir)/src/backends/evolution src_backends_evolution_syncecal_la_SOURCES = $(src_backends_evolution_syncecal_src) -src_backends_evolution_syncecal_la_LIBADD = $(ECAL_LIBS) $(SYNCEVOLUTION_LIBS) $(GLIB_LIBS) $(GOBJECT_LIBS) +# $(EBOOKCONTACTS_LIBS) is needed for ESourceBackendSummary, which we +# use in EvolutionSyncSource and thus in syncecal. +src_backends_evolution_syncecal_la_LIBADD = $(ECAL_LIBS) $(EBOOKCONTACTS_LIBS) $(SYNCEVOLUTION_LIBS) $(GLIB_LIBS) $(GOBJECT_LIBS) # _GNU_SOURCE and -ldl for libical.c + dlsym(): src_backends_evolution_syncecal_la_CPPFLAGS = -D_GNU_SOURCE \ -De_cal_check_timezones=syncevolution_check_timezones \ @@ -49,7 +51,7 @@ src_backends_evolution_syncecal_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(SYNCEV src_backends_evolution_syncecal_la_DEPENDENCIES = src/syncevo/libsyncevolution.la src_backends_evolution_syncebook_la_SOURCES = $(src_backends_evolution_syncebook_src) -src_backends_evolution_syncebook_la_LIBADD = $(EBOOK_LIBS) $(SYNCEVOLUTION_LIBS) $(GLIB_LIBS) $(GOBJECT_LIBS) +src_backends_evolution_syncebook_la_LIBADD = $(EBOOK_LIBS) $(EBOOKCONTACTS_LIBS) $(SYNCEVOLUTION_LIBS) $(GLIB_LIBS) $(GOBJECT_LIBS) src_backends_evolution_syncebook_la_LDFLAGS = -module -avoid-version src_backends_evolution_syncebook_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS) $(SYNCEVO_WFLAGS) $(GLIB_CFLAGS) $(GOBJECT_CFLAGS) src_backends_evolution_syncebook_la_CPPFLAGS = $(src_backends_evolution_cppflags)