From: Mikel Astiz <mikel.astiz(a)bmw-carit.de>
This instantiates the D-Bus wrapper and thus requests a obex-client
session.
A local cache of the addressbook has been added which will be loaded
when the database is opened.
---
src/backends/pbap/PbapSyncSource.cpp | 15 ++++++++++++++-
src/backends/pbap/PbapSyncSource.h | 6 ++++++
2 files changed, 20 insertions(+), 1 deletions(-)
diff --git a/src/backends/pbap/PbapSyncSource.cpp b/src/backends/pbap/PbapSyncSource.cpp
index 0747b15..0277e7e 100644
--- a/src/backends/pbap/PbapSyncSource.cpp
+++ b/src/backends/pbap/PbapSyncSource.cpp
@@ -187,6 +187,7 @@ void PbapSession::removeSessionCb(const string &error)
PbapSyncSource::PbapSyncSource(const SyncSourceParams ¶ms) :
TrackingSyncSource(params)
{
+ m_session.reset(new PbapSession());
}
std::string PbapSyncSource::getMimeType() const
@@ -209,11 +210,15 @@ void PbapSyncSource::open()
}
std::string address = database.substr(prefix.size());
+
+ m_session->initSession(address);
+ m_session->pullAll(m_content);
+ m_session->shutdown();
}
bool PbapSyncSource::isEmpty()
{
- return true;
+ return m_content.empty();
}
void PbapSyncSource::close()
@@ -231,10 +236,18 @@ PbapSyncSource::Databases PbapSyncSource::getDatabases()
void PbapSyncSource::listAllItems(RevisionMap_t &revisions)
{
+ typedef std::pair<std::string, std::string> Entry;
+ BOOST_FOREACH(const Entry &entry, m_content) {
+ revisions[entry.first] = "0";
+ }
}
void PbapSyncSource::readItem(const string &uid, std::string &item, bool raw)
{
+ Content::iterator it = m_content.find(uid);
+ if(it != m_content.end()) {
+ item = it->second;
+ }
}
TrackingSyncSource::InsertItemResult PbapSyncSource::insertItem(const string &uid,
const std::string &item, bool raw)
diff --git a/src/backends/pbap/PbapSyncSource.h b/src/backends/pbap/PbapSyncSource.h
index 7074b5d..fb31386 100644
--- a/src/backends/pbap/PbapSyncSource.h
+++ b/src/backends/pbap/PbapSyncSource.h
@@ -31,6 +31,8 @@
#include <syncevo/declarations.h>
SE_BEGIN_CXX
+class PbapSession;
+
class PbapSyncSource : public TrackingSyncSource, private boost::noncopyable
{
public:
@@ -54,6 +56,10 @@ class PbapSyncSource : public TrackingSyncSource, private
boost::noncopyable
virtual void removeItem(const string &uid);
private:
+ std::auto_ptr<PbapSession> m_session;
+
+ typedef std::map<std::string, std::string> Content;
+ Content m_content;
};
SE_END_CXX
--
1.7.6.5