EDS + PIM: create phone number summary in contacts DB (part of FDO #59571)
A quick-and-dirty solution for enabling phone number summaries when creating contact databases in the PIM Manager: let the EDS backend recognize the special UIDs used by the PIM Manager and then hard-code the minimal set of summary fields and indexed fields which allow executing the E_CONTACT_TEL, E_BOOK_QUERY_EQUALS_NATIONAL_PHONE_NUMBER query quickly. A proper solution would use a new EDS function for parsing ESource defaults from a string and then providing these defaults to the backend from the PIM Manager. Also note that configuring the EDS system address book must be covered elsewhere, because it wouldn't be correct for SyncEvolution as only one of many clients to change the configuration of that. To enable the special support, add the following section to share/evolution-data-server-3.6/rw-sources/system-address-book.source: [Backend Summary Setup] SummaryFields=phone IndexedFields=phone,phone This patch adds new function calls to code shared by syncecal and syncebook, so we have to add libebook-contacts to both to avoid link errors.
This commit is contained in:
parent
e2647f4962
commit
d8ca8b64cf
|
@ -136,6 +136,22 @@ SyncSource::Database EvolutionSyncSource::createDatabase(const Database &databas
|
|||
ESourceBackend *backend = static_cast<ESourceBackend *>(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<ESourceBackendSummarySetup *>(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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue