Meego Wiki
Views

Architecture/planning/evolution-data-server/QtContacts storage plugin

From MeeGo wiki
(Difference between revisions)
Jump to: navigation, search
(QtContacts-EDS)
(QtContacts-EDS)
Line 11: Line 11:
Goals for initial milestone:
Goals for initial milestone:
* full support for all QContactDetails, including custom ones and additional fields of details which map to well-known vCard properties (QContactUrl::SubTypeFavourite, QContactAvatar::videoUrl, QContactOrganization::FieldLocation...)
* full support for all QContactDetails, including custom ones and additional fields of details which map to well-known vCard properties (QContactUrl::SubTypeFavourite, QContactAvatar::videoUrl, QContactOrganization::FieldLocation...)
-
** MISSING: QContactAnniversary::FieldEvent, QContactAnniversary::FieldCalendarId
+
** The following fields are not saved: QContactAnniversary::FieldEvent, QContactAnniversary::FieldCalendarId
** QContactGeoLocation detail is not interoperable with libebook/EDS because QtVersit reverses latitude/longitude in the vCard [[http://bugreports.qt.nokia.com/browse/QTMOBILITY-1589 QTMOBILITY-1589]]
** QContactGeoLocation detail is not interoperable with libebook/EDS because QtVersit reverses latitude/longitude in the vCard [[http://bugreports.qt.nokia.com/browse/QTMOBILITY-1589 QTMOBILITY-1589]]
** QContactOnlineAccount is not interoperable with libebook/EDS (not direct equivalent is available in vCard)
** QContactOnlineAccount is not interoperable with libebook/EDS (not direct equivalent is available in vCard)

Revision as of 10:34, 27 May 2011

QtContacts-EDS

Can be based on [existing Harmattan EDS plugin], which does not work as-is because of Nokia-specific API extensions.

Necessary changes:

  • avoid ID mapping because it requires reading all contacts at startup:
    • must change EDS to use 32 bit integers as local IDs for that (patch ready)
    • QtContacts-EDS supports (collision-safe) ID hashing as fallback if EDS is not patched (Define USE_ID_HASHING at compilation time to enable)
  • convert between QtContacts and vCard using QtVersit, with EDS specific properties and including custom properties for QtContactDetails which have no other mapping to vCard (same approach as in SyncEvolution QtContacts backend)

Goals for initial milestone:

  • full support for all QContactDetails, including custom ones and additional fields of details which map to well-known vCard properties (QContactUrl::SubTypeFavourite, QContactAvatar::videoUrl, QContactOrganization::FieldLocation...)
    • The following fields are not saved: QContactAnniversary::FieldEvent, QContactAnniversary::FieldCalendarId
    • QContactGeoLocation detail is not interoperable with libebook/EDS because QtVersit reverses latitude/longitude in the vCard [QTMOBILITY-1589]
    • QContactOnlineAccount is not interoperable with libebook/EDS (not direct equivalent is available in vCard)
    • There does not seem to be any equivalent for X-EVOLUTION-MANAGER in QtContacts, no mapping is done for this extension
    • QContactOrganization::FieldDepartment is not fully interoperable with libebook/EDS (libebook can only parse one department)
    • QContactOrganization does not have any API for binary (QImage) organization logo (Only URL: QContactOrganization::FieldLocation) but libebook supports both
    • The following details are not interoperable with libebook/EDS (but they can be saved): QContactGender, QContactFamily::FieldChildren (X-CHILDREN), QContactGlobalPresence, QContactFavorite, QContactHobby, QContactPresence, QContactRingtone, QContactSyncTarget.
  • change notifications (added/updated/removed)
    • There does not seem to be any signal in ebook view for selfContactIdChange?
  • mapping of QtContacts filters to EDS queries, with unsupported filters implemented by QtContacts after retrieving contacts (slower than filtering in EDS daemon)
    • Non-native search used for QContactFavorite::FieldIndex, QContactGeoLocation, QContactGlobalPresence, QContactOnlineAccount, QContactPresence, QContactRingtone.
    • Partially native search is used when CaseSentive match flag is set because EDS does not support case sensitive matching
  • Errors are properly handled and reported to the client application

Goals for later milestones:

  • performance

Related bugs:

  • [QTMOBILITY-1298] QtVersit does not allow custom properties to have complex types
  • [QTMOBILITY-1592] QContactManagerEngine schema definitions are incomplete
  • [QTMOBILITY-1590] QtVersit contact importer does not follow RFC-2426 for LOGO/PHOTO value (MERGED for v1.2.1)
  • [QTMOBILITY-1589] QtVersit writes/reads QContactGeoLocation's latitude/longitude in reverse order (Compared to RFC-2426 and libebook)
  • [QTMOBILITY-1623] QContactManagerEngine::CompareVariant() does not support QVariant::StringList
  • [QTMOBILITY-1667] QContactManagerEngine::CompareVariant() does not support QVariant::Url
  • [GNOME #650952] EDS displays misleading warnings such as "libebook-WARNING **: unknown field name `X-GENDER'" (ACCEPTED UPSTREAM)
  • [GNOME #650950] EDS: Queries should iterate over all attributes with the same name for proper matching (ACCEPTED UPSTREAM)
  • [GNOME #651054] EDS: Support queries based on "photo" contact field. This is needed for EDS-side QContactAvatar::FieldImageUrl filtering. (ACCEPTED UPSTREAM)
  • [GNOME #651113] EDS: Support queries based on date field (e.g. birthday, anniversary). (ACCEPTED UPSTREAM)
  • [GNOME #651226] EDS: e_book_new_system_addressbook() should create source in GConf (REVIEWED by dwmw2)
Personal tools