Add QContactType::TypeFacet value
authorMatt Vogt <matthew.vogt@jollamobile.com>
Fri, 13 Jun 2014 04:00:13 +0000 (14:00 +1000)
committerMatthew Vogt <matthew.vogt@qinetic.com.au>
Tue, 24 Jun 2014 02:57:40 +0000 (04:57 +0200)
commit03be9e28b081145887072748d2d19a3c69b16510
treead7658ade44aa71aa143c015189f2c44e0a39204
parent98b975206c638f9b624bfa184367880bfc08949a
Add QContactType::TypeFacet value

Allow a contacts backend to provide explicit support for composition
of contact representations into a single composite contact.

A single logical contact can be represented in a QtContacts system
as multiple separate elements, each created and maintained by separate
software systems. To support this use-case, provide the 'Facet'
contact type, which has the same structure as a TypeContact contact,
but different semantics.  A facet is defined as the portion of an
individual contact known by any one system, which is probably incomplete.
For example, an email service will be able to know the name and email
address of a contact from message metadata, but has no access to phone
numbers or mailing addresses. By storing contact details as facets, it
explicitly allows them to be aggregated into more comprehensive contact
representations.

Facet contacts are made available to clients as regular contacts by
producing contacts of type TypeContact, which aggregate the details of
the facets together into a composite whole. The correspondence between
facets and their composing contacts is defined by QContactRelationship
records with type 'Aggregates'.

The semantics governing the behavior of facets and composite contacts
when modified or deleted are left to be defined by each backend
that implements the Facet type.

Change-Id: I486e2d9140fca5d306dc56fb5de9bb6ca2327686
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
src/contacts/details/qcontactdetails.cpp
src/contacts/details/qcontacttype.h
src/contacts/filters/qcontactrelationshipfilter.cpp
src/contacts/qcontactmanagerengine.cpp
src/imports/contacts/details/qdeclarativecontacttype_p.h
src/imports/contacts/qdeclarativecontact.cpp
src/plugins/contacts/memory/qcontactmemorybackend.cpp
tests/auto/contacts/qmlcontacts/testcases/tst_contactdetail.qml