diff options
Diffstat (limited to 'src/backends/qtcontacts/QtContactsSource.cpp')
-rw-r--r-- | src/backends/qtcontacts/QtContactsSource.cpp | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/src/backends/qtcontacts/QtContactsSource.cpp b/src/backends/qtcontacts/QtContactsSource.cpp index da7b5f8b..2b94cfd5 100644 --- a/src/backends/qtcontacts/QtContactsSource.cpp +++ b/src/backends/qtcontacts/QtContactsSource.cpp @@ -36,6 +36,8 @@ #include <QContactLocalIdFilter> #include <QContactThumbnail> #include <QContactAvatar> +#include <QContactSyncTarget> +#include <QContactDetailFilter> #include <QVersitContactExporter> #include <QVersitContactImporter> @@ -422,17 +424,42 @@ QtContactsSource::Databases QtContactsSource::getDatabases() { Databases result; QStringList availableManagers = QContactManager::availableManagers(); + bool isDefault = true; +#if 0 result.push_back(Database("select database via QtContacts Manager URL", "qtcontacts:tracker:")); +#endif + + foreach (QString manager, availableManagers) { + QMap<QString, QString> params; + QString uri = QContactManager::buildUri(manager, params); + result.push_back(Database(manager.toStdString(), + uri.toStdString(), + isDefault)); + isDefault = false; + } return result; } void QtContactsSource::listAllItems(RevisionMap_t &revisions) { +#ifdef ENABLE_MAEMO + QContactLocalId self_id = m_data->m_manager->selfContactId(); +#endif + QContactFetchRequest fetch; fetch.setManager(m_data->m_manager.get()); +#ifdef ENABLE_MAEMO + // only sync contacts from addressbook, not from Telepathy or wherever + QContactDetailFilter filter; + filter.setDetailDefinitionName(QContactSyncTarget::DefinitionName, QContactSyncTarget::FieldSyncTarget); + filter.setValue("addressbook"); + filter.setMatchFlags(QContactFilter::MatchExactly); + fetch.setFilter(filter); +#endif + // only need ID and time stamps QContactFetchHint hint; hint.setOptimizationHints(QContactFetchHint::OptimizationHints(QContactFetchHint::NoRelationships|QContactFetchHint::NoBinaryBlobs)); @@ -443,6 +470,13 @@ void QtContactsSource::listAllItems(RevisionMap_t &revisions) fetch.waitForFinished(); m_data->checkError("read all items", fetch); foreach (const QContact &contact, fetch.contacts()) { +#ifdef ENABLE_MAEMO + if (contact.localId() == self_id) { + // Do not synchronize "self" contact + continue; + } +#endif + string revision = QtContactsData::getRev(contact); string luid = QtContactsData::getLUID(contact); if (luid == "2147483647" && @@ -478,6 +512,10 @@ void QtContactsSource::readItem(const string &uid, std::string &item, bool raw) thumbnail.setThumbnail(image); contact.saveDetail(&thumbnail); } + +// foreach (const QContactSyncTarget &target, contact.details<QContactSyncTarget>()) { +// std::cout << " Sync Target: " << target.syncTarget().toUtf8().data() << std::endl; +// } } QStringList profiles; @@ -559,7 +597,7 @@ TrackingSyncSource::InsertItemResult QtContactsSource::insertItem(const string & return InsertItemResult(QtContactsData::getLUID(savedContact), QtContactsData::getRev(finalContact), - false); + ITEM_OKAY); } |