From a638278ede2d7af9a073da6ca11ba2efee2a934b Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Wed, 7 Jan 2015 01:01:42 +0100 Subject: Made the domain adaptor actually work. We can read stuff now. --- dummyresource/domainadaptor.cpp | 11 ++++++++++- dummyresource/facade.cpp | 8 +++++--- dummyresource/resourcefactory.cpp | 6 +++--- 3 files changed, 18 insertions(+), 7 deletions(-) (limited to 'dummyresource') diff --git a/dummyresource/domainadaptor.cpp b/dummyresource/domainadaptor.cpp index 5d046ff..ae001cf 100644 --- a/dummyresource/domainadaptor.cpp +++ b/dummyresource/domainadaptor.cpp @@ -46,6 +46,14 @@ public: return QVariant(); } + virtual QStringList availableProperties() const + { + QStringList props; + props << mResourceMapper->mReadAccessors.keys(); + props << mLocalMapper->mReadAccessors.keys(); + return props; + } + Akonadi2::Domain::Buffer::Event const *mLocalBuffer; DummyEvent const *mResourceBuffer; @@ -65,13 +73,14 @@ DummyEventAdaptorFactory::DummyEventAdaptorFactory() } +//TODO pass EntityBuffer instead? QSharedPointer DummyEventAdaptorFactory::createAdaptor(const Akonadi2::Entity &entity) { DummyEvent const *resourceBuffer = 0; if (auto resourceData = entity.resource()) { flatbuffers::Verifier verifyer(resourceData->Data(), resourceData->size()); if (VerifyDummyEventBuffer(verifyer)) { - resourceBuffer = GetDummyEvent(resourceData); + resourceBuffer = GetDummyEvent(resourceData->Data()); } } diff --git a/dummyresource/facade.cpp b/dummyresource/facade.cpp index 5320216..f754c7e 100644 --- a/dummyresource/facade.cpp +++ b/dummyresource/facade.cpp @@ -128,7 +128,7 @@ void DummyResourceFacade::load(const Akonadi2::Query &query, const std::function Akonadi2::EntityBuffer buffer(dataValue, dataSize); DummyEvent const *resourceBuffer = 0; - if (auto resourceData = buffer.resourceBuffer()) { + if (auto resourceData = buffer.entity().resource()) { flatbuffers::Verifier verifyer(resourceData->Data(), resourceData->size()); if (VerifyDummyEventBuffer(verifyer)) { resourceBuffer = GetDummyEvent(resourceData); @@ -136,7 +136,7 @@ void DummyResourceFacade::load(const Akonadi2::Query &query, const std::function } Akonadi2::Metadata const *metadataBuffer = 0; - if (auto metadataData = buffer.metadataBuffer()) { + if (auto metadataData = buffer.entity().metadata()) { flatbuffers::Verifier verifyer(metadataData->Data(), metadataData->size()); if (Akonadi2::VerifyMetadataBuffer(verifyer)) { metadataBuffer = Akonadi2::GetMetadata(metadataData); @@ -153,7 +153,9 @@ void DummyResourceFacade::load(const Akonadi2::Query &query, const std::function if (preparedQuery && preparedQuery(std::string(static_cast(keyValue), keySize), resourceBuffer)) { qint64 revision = metadataBuffer ? metadataBuffer->revision() : -1; auto adaptor = mFactory->createAdaptor(buffer.entity()); - auto event = QSharedPointer::create("org.kde.dummy", QString::fromUtf8(static_cast(keyValue), keySize), revision, adaptor); + //TODO only copy requested properties + auto memoryAdaptor = QSharedPointer::create(*adaptor); + auto event = QSharedPointer::create("org.kde.dummy", QString::fromUtf8(static_cast(keyValue), keySize), revision, memoryAdaptor); resultCallback(event); } return true; diff --git a/dummyresource/resourcefactory.cpp b/dummyresource/resourcefactory.cpp index 87a6048..e4f7e41 100644 --- a/dummyresource/resourcefactory.cpp +++ b/dummyresource/resourcefactory.cpp @@ -122,10 +122,10 @@ void findByRemoteId(QSharedPointer storage, const QString &ri return true; } - Akonadi2::EntityBuffer::extractResourceBuffer(dataValue, dataSize, [&](const flatbuffers::Vector *buffer) { - flatbuffers::Verifier verifier(buffer->Data(), buffer->size()); + Akonadi2::EntityBuffer::extractResourceBuffer(dataValue, dataSize, [&](const uint8_t *buffer, size_t size) { + flatbuffers::Verifier verifier(buffer, size); if (DummyCalendar::VerifyDummyEventBuffer(verifier)) { - DummyCalendar::DummyEvent const *resourceBuffer = DummyCalendar::GetDummyEvent(buffer->Data()); + DummyCalendar::DummyEvent const *resourceBuffer = DummyCalendar::GetDummyEvent(buffer); if (resourceBuffer && resourceBuffer->remoteId()) { if (std::string(resourceBuffer->remoteId()->c_str(), resourceBuffer->remoteId()->size()) == ridString) { callback(keyValue, keySize, dataValue, dataSize); -- cgit v1.2.3