diff options
Diffstat (limited to 'dummyresource/domainadaptor.cpp')
-rw-r--r-- | dummyresource/domainadaptor.cpp | 101 |
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 | |||
14 | using namespace DummyCalendar; | ||
15 | using namespace flatbuffers; | ||
16 | |||
17 | using namespace DummyCalendar; | ||
18 | using namespace flatbuffers; | ||
19 | |||
20 | //This will become a generic implementation that simply takes the resource buffer and local buffer pointer | ||
21 | class DummyEventAdaptor : public Akonadi2::Domain::BufferAdaptor | ||
22 | { | ||
23 | public: | ||
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 | |||
57 | DummyEventAdaptorFactory::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 | |||
68 | QSharedPointer<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 | |||