summaryrefslogtreecommitdiff
path: root/src/backends/qtcontacts/QtContactsSource.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/qtcontacts/QtContactsSource.cpp')
-rw-r--r--src/backends/qtcontacts/QtContactsSource.cpp40
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);
}