summaryrefslogtreecommitdiffstats
path: root/dummyresource/domainadaptor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dummyresource/domainadaptor.cpp')
-rw-r--r--dummyresource/domainadaptor.cpp101
1 files changed, 101 insertions, 0 deletions
diff --git a/dummyresource/domainadaptor.cpp b/dummyresource/domainadaptor.cpp
new file mode 100644
index 0000000..5d046ff
--- /dev/null
+++ b/dummyresource/domainadaptor.cpp
@@ -0,0 +1,101 @@
1
2#include "domainadaptor.h"
3
4#include <QDebug>
5#include <functional>
6
7#include "dummycalendar_generated.h"
8#include "event_generated.h"
9#include "entity_generated.h"
10#include "metadata_generated.h"
11#include "domainadaptor.h"
12#include <common/entitybuffer.h>
13
14using namespace DummyCalendar;
15using namespace flatbuffers;
16
17using namespace DummyCalendar;
18using namespace flatbuffers;
19
20//This will become a generic implementation that simply takes the resource buffer and local buffer pointer
21class DummyEventAdaptor : public Akonadi2::Domain::BufferAdaptor
22{
23public:
24 DummyEventAdaptor()
25 : BufferAdaptor()
26 {
27
28 }
29
30 void setProperty(const QString &key, const QVariant &value)
31 {
32 if (mResourceMapper->mWriteAccessors.contains(key)) {
33 // mResourceMapper.setProperty(key, value, mResourceBuffer);
34 } else {
35 // mLocalMapper.;
36 }
37 }
38
39 virtual QVariant getProperty(const QString &key) const
40 {
41 if (mResourceBuffer && mResourceMapper->mReadAccessors.contains(key)) {
42 return mResourceMapper->getProperty(key, mResourceBuffer);
43 } else if (mLocalBuffer) {
44 return mLocalMapper->getProperty(key, mLocalBuffer);
45 }
46 return QVariant();
47 }
48
49 Akonadi2::Domain::Buffer::Event const *mLocalBuffer;
50 DummyEvent const *mResourceBuffer;
51
52 QSharedPointer<PropertyMapper<Akonadi2::Domain::Buffer::Event> > mLocalMapper;
53 QSharedPointer<PropertyMapper<DummyEvent> > mResourceMapper;
54};
55
56
57DummyEventAdaptorFactory::DummyEventAdaptorFactory()
58 : DomainTypeAdaptorFactory()
59{
60 mResourceMapper = QSharedPointer<PropertyMapper<DummyEvent> >::create();
61 mResourceMapper->mReadAccessors.insert("summary", [](DummyEvent const *buffer) -> QVariant {
62 return QString::fromStdString(buffer->summary()->c_str());
63 });
64 //TODO set accessors for all properties
65
66}
67
68QSharedPointer<Akonadi2::Domain::BufferAdaptor> DummyEventAdaptorFactory::createAdaptor(const Akonadi2::Entity &entity)
69{
70 DummyEvent const *resourceBuffer = 0;
71 if (auto resourceData = entity.resource()) {
72 flatbuffers::Verifier verifyer(resourceData->Data(), resourceData->size());
73 if (VerifyDummyEventBuffer(verifyer)) {
74 resourceBuffer = GetDummyEvent(resourceData);
75 }
76 }
77
78 Akonadi2::Metadata const *metadataBuffer = 0;
79 if (auto metadataData = entity.metadata()) {
80 flatbuffers::Verifier verifyer(metadataData->Data(), metadataData->size());
81 if (Akonadi2::VerifyMetadataBuffer(verifyer)) {
82 metadataBuffer = Akonadi2::GetMetadata(metadataData);
83 }
84 }
85
86 Akonadi2::Domain::Buffer::Event const *localBuffer = 0;
87 if (auto localData = entity.local()) {
88 flatbuffers::Verifier verifyer(localData->Data(), localData->size());
89 if (Akonadi2::Domain::Buffer::VerifyEventBuffer(verifyer)) {
90 localBuffer = Akonadi2::Domain::Buffer::GetEvent(localData);
91 }
92 }
93
94 auto adaptor = QSharedPointer<DummyEventAdaptor>::create();
95 adaptor->mLocalBuffer = localBuffer;
96 adaptor->mResourceBuffer = resourceBuffer;
97 adaptor->mResourceMapper = mResourceMapper;
98 adaptor->mLocalMapper = mLocalMapper;
99 return adaptor;
100}
101