diff options
-rw-r--r-- | examples/dummyresource/dummystore.cpp | 63 | ||||
-rw-r--r-- | examples/dummyresource/dummystore.h | 5 | ||||
-rw-r--r-- | examples/dummyresource/resourcefactory.cpp | 22 | ||||
-rw-r--r-- | examples/dummyresource/resourcefactory.h | 4 |
4 files changed, 34 insertions, 60 deletions
diff --git a/examples/dummyresource/dummystore.cpp b/examples/dummyresource/dummystore.cpp index 41b48ed..0356ec0 100644 --- a/examples/dummyresource/dummystore.cpp +++ b/examples/dummyresource/dummystore.cpp | |||
@@ -20,72 +20,49 @@ | |||
20 | 20 | ||
21 | #include <QString> | 21 | #include <QString> |
22 | 22 | ||
23 | #include "dummycalendar_generated.h" | 23 | static QMap<QString, QVariant> createEvent(int i) |
24 | #include "mail_generated.h" | ||
25 | |||
26 | static std::string createEvent(int i) | ||
27 | { | 24 | { |
25 | QMap<QString, QVariant> event; | ||
26 | event.insert("summary", QString("summary%1").arg(i)); | ||
28 | static const size_t attachmentSize = 1024*2; // 2KB | 27 | static const size_t attachmentSize = 1024*2; // 2KB |
29 | static uint8_t rawData[attachmentSize]; | 28 | event.insert("attachment", QByteArray(attachmentSize, 'c')); |
30 | static flatbuffers::FlatBufferBuilder fbb; | 29 | return event; |
31 | fbb.Clear(); | ||
32 | { | ||
33 | uint8_t *rawDataPtr = nullptr; | ||
34 | auto summary = fbb.CreateString("summary" + std::to_string(i)); | ||
35 | auto data = fbb.CreateUninitializedVector<uint8_t>(attachmentSize, &rawDataPtr); | ||
36 | DummyCalendar::DummyEventBuilder eventBuilder(fbb); | ||
37 | eventBuilder.add_summary(summary); | ||
38 | eventBuilder.add_attachment(data); | ||
39 | auto eventLocation = eventBuilder.Finish(); | ||
40 | DummyCalendar::FinishDummyEventBuffer(fbb, eventLocation); | ||
41 | memcpy((void*)rawDataPtr, rawData, attachmentSize); | ||
42 | } | ||
43 | |||
44 | return std::string(reinterpret_cast<const char *>(fbb.GetBufferPointer()), fbb.GetSize()); | ||
45 | } | 30 | } |
46 | 31 | ||
47 | static std::string createMail(int i) | 32 | static QMap<QString, QVariant> createMail(int i) |
48 | { | 33 | { |
49 | static flatbuffers::FlatBufferBuilder fbb; | 34 | QMap<QString, QVariant> mail; |
50 | fbb.Clear(); | 35 | mail.insert("subject", QString("subject%1").arg(i)); |
51 | { | 36 | return mail; |
52 | auto subject = fbb.CreateString("summary" + std::to_string(i)); | ||
53 | Akonadi2::ApplicationDomain::Buffer::MailBuilder mailBuilder(fbb); | ||
54 | mailBuilder.add_subject(subject); | ||
55 | Akonadi2::ApplicationDomain::Buffer::FinishMailBuffer(fbb, mailBuilder.Finish()); | ||
56 | } | ||
57 | |||
58 | return std::string(reinterpret_cast<const char *>(fbb.GetBufferPointer()), fbb.GetSize()); | ||
59 | } | 37 | } |
60 | 38 | ||
61 | QMap<QString, QString> populate() | 39 | QMap<QString, QMap<QString, QVariant> > populateEvents() |
62 | { | 40 | { |
63 | QMap<QString, QString> content; | 41 | QMap<QString, QMap<QString, QVariant>> content; |
64 | for (int i = 0; i < 2; i++) { | 42 | for (int i = 0; i < 2; i++) { |
65 | auto event = createEvent(i); | 43 | content.insert(QString("key%1").arg(i), createEvent(i)); |
66 | content.insert(QString("key%1").arg(i), QString::fromStdString(event)); | ||
67 | } | 44 | } |
68 | return content; | 45 | return content; |
69 | } | 46 | } |
70 | 47 | ||
71 | QMap<QString, QString> populateMails() | 48 | QMap<QString, QMap<QString, QVariant> > populateMails() |
72 | { | 49 | { |
73 | QMap<QString, QString> content; | 50 | QMap<QString, QMap<QString, QVariant>> content; |
74 | for (int i = 0; i < 2; i++) { | 51 | for (int i = 0; i < 2; i++) { |
75 | content.insert(QString("key%1").arg(i), QString::fromStdString(createMail(i))); | 52 | content.insert(QString("key%1").arg(i), createMail(i)); |
76 | } | 53 | } |
77 | return content; | 54 | return content; |
78 | } | 55 | } |
79 | 56 | ||
80 | static QMap<QString, QString> s_dataSource = populate(); | 57 | static QMap<QString, QMap<QString, QVariant> > s_eventSource = populateEvents(); |
81 | static QMap<QString, QString> s_mailSource = populateMails(); | 58 | static QMap<QString, QMap<QString, QVariant> > s_mailSource = populateMails(); |
82 | 59 | ||
83 | QMap<QString, QString> DummyStore::events() const | 60 | QMap<QString, QMap<QString, QVariant> > DummyStore::events() const |
84 | { | 61 | { |
85 | return s_dataSource; | 62 | return s_eventSource; |
86 | } | 63 | } |
87 | 64 | ||
88 | QMap<QString, QString> DummyStore::mails() const | 65 | QMap<QString, QMap<QString, QVariant> > DummyStore::mails() const |
89 | { | 66 | { |
90 | return s_mailSource; | 67 | return s_mailSource; |
91 | } | 68 | } |
diff --git a/examples/dummyresource/dummystore.h b/examples/dummyresource/dummystore.h index ba1c0ae..4ecd5ea 100644 --- a/examples/dummyresource/dummystore.h +++ b/examples/dummyresource/dummystore.h | |||
@@ -18,6 +18,7 @@ | |||
18 | */ | 18 | */ |
19 | #pragma once | 19 | #pragma once |
20 | #include <QMap> | 20 | #include <QMap> |
21 | #include <QVariant> | ||
21 | 22 | ||
22 | class DummyStore | 23 | class DummyStore |
23 | { | 24 | { |
@@ -29,6 +30,6 @@ public: | |||
29 | return instance; | 30 | return instance; |
30 | } | 31 | } |
31 | 32 | ||
32 | QMap<QString, QString> events() const; | 33 | QMap<QString, QMap<QString, QVariant> > events() const; |
33 | QMap<QString, QString> mails() const; | 34 | QMap<QString, QMap<QString, QVariant> > mails() const; |
34 | }; | 35 | }; |
diff --git a/examples/dummyresource/resourcefactory.cpp b/examples/dummyresource/resourcefactory.cpp index 147cb22..9bb20e5 100644 --- a/examples/dummyresource/resourcefactory.cpp +++ b/examples/dummyresource/resourcefactory.cpp | |||
@@ -81,12 +81,10 @@ DummyResource::DummyResource(const QByteArray &instanceIdentifier, const QShared | |||
81 | } | 81 | } |
82 | } | 82 | } |
83 | 83 | ||
84 | void DummyResource::createEvent(const QByteArray &ridBuffer, const QByteArray &data, flatbuffers::FlatBufferBuilder &entityFbb) | 84 | void DummyResource::createEvent(const QByteArray &ridBuffer, const QMap<QString, QVariant> &data, flatbuffers::FlatBufferBuilder &entityFbb) |
85 | { | 85 | { |
86 | auto eventBuffer = DummyCalendar::GetDummyEvent(data.data()); | ||
87 | |||
88 | //Map the source format to the buffer format (which happens to be an exact copy here) | 86 | //Map the source format to the buffer format (which happens to be an exact copy here) |
89 | auto summary = m_fbb.CreateString(eventBuffer->summary()->c_str()); | 87 | auto summary = m_fbb.CreateString(data.value("summary").toString().toStdString()); |
90 | auto rid = m_fbb.CreateString(std::string(ridBuffer.constData(), ridBuffer.size())); | 88 | auto rid = m_fbb.CreateString(std::string(ridBuffer.constData(), ridBuffer.size())); |
91 | auto description = m_fbb.CreateString(std::string(ridBuffer.constData(), ridBuffer.size())); | 89 | auto description = m_fbb.CreateString(std::string(ridBuffer.constData(), ridBuffer.size())); |
92 | static uint8_t rawData[100]; | 90 | static uint8_t rawData[100]; |
@@ -102,16 +100,14 @@ void DummyResource::createEvent(const QByteArray &ridBuffer, const QByteArray &d | |||
102 | Akonadi2::EntityBuffer::assembleEntityBuffer(entityFbb, 0, 0, m_fbb.GetBufferPointer(), m_fbb.GetSize(), 0, 0); | 100 | Akonadi2::EntityBuffer::assembleEntityBuffer(entityFbb, 0, 0, m_fbb.GetBufferPointer(), m_fbb.GetSize(), 0, 0); |
103 | } | 101 | } |
104 | 102 | ||
105 | void DummyResource::createMail(const QByteArray &ridBuffer, const QByteArray &data, flatbuffers::FlatBufferBuilder &entityFbb) | 103 | void DummyResource::createMail(const QByteArray &ridBuffer, const QMap<QString, QVariant> &data, flatbuffers::FlatBufferBuilder &entityFbb) |
106 | { | 104 | { |
107 | auto mailBuffer = Akonadi2::ApplicationDomain::Buffer::GetMail(data.data()); | ||
108 | |||
109 | //Map the source format to the buffer format (which happens to be an exact copy here) | 105 | //Map the source format to the buffer format (which happens to be an exact copy here) |
110 | auto subject = m_fbb.CreateString(mailBuffer->subject()->c_str()); | 106 | auto subject = m_fbb.CreateString(data.value("subject").toString().toStdString()); |
111 | auto rid = m_fbb.CreateString(std::string(ridBuffer.constData(), ridBuffer.size())); | 107 | auto rid = m_fbb.CreateString(std::string(ridBuffer.constData(), ridBuffer.size())); |
112 | auto sender = m_fbb.CreateString(std::string("sender@example.org")); | 108 | auto sender = m_fbb.CreateString(data.value("sender").toString().toStdString()); |
113 | auto senderName = m_fbb.CreateString(std::string("Sender Name")); | 109 | auto senderName = m_fbb.CreateString(data.value("senderName").toString().toStdString()); |
114 | auto date = m_fbb.CreateString(std::string("2004")); | 110 | auto date = m_fbb.CreateString(data.value("date").toString().toStdString()); |
115 | auto folder = m_fbb.CreateString(std::string("inbox")); | 111 | auto folder = m_fbb.CreateString(std::string("inbox")); |
116 | 112 | ||
117 | auto builder = Akonadi2::ApplicationDomain::Buffer::MailBuilder(m_fbb); | 113 | auto builder = Akonadi2::ApplicationDomain::Buffer::MailBuilder(m_fbb); |
@@ -148,7 +144,7 @@ KAsync::Job<void> DummyResource::synchronizeWithSource() | |||
148 | m_fbb.Clear(); | 144 | m_fbb.Clear(); |
149 | 145 | ||
150 | flatbuffers::FlatBufferBuilder entityFbb; | 146 | flatbuffers::FlatBufferBuilder entityFbb; |
151 | createEvent(it.key().toUtf8(), it.value().toUtf8(), entityFbb); | 147 | createEvent(it.key().toUtf8(), it.value(), entityFbb); |
152 | 148 | ||
153 | flatbuffers::FlatBufferBuilder fbb; | 149 | flatbuffers::FlatBufferBuilder fbb; |
154 | //This is the resource type and not the domain type | 150 | //This is the resource type and not the domain type |
@@ -179,7 +175,7 @@ KAsync::Job<void> DummyResource::synchronizeWithSource() | |||
179 | m_fbb.Clear(); | 175 | m_fbb.Clear(); |
180 | 176 | ||
181 | flatbuffers::FlatBufferBuilder entityFbb; | 177 | flatbuffers::FlatBufferBuilder entityFbb; |
182 | createMail(it.key().toUtf8(), it.value().toUtf8(), entityFbb); | 178 | createMail(it.key().toUtf8(), it.value(), entityFbb); |
183 | 179 | ||
184 | flatbuffers::Verifier verifyer(reinterpret_cast<const uint8_t *>(entityFbb.GetBufferPointer()), entityFbb.GetSize()); | 180 | flatbuffers::Verifier verifyer(reinterpret_cast<const uint8_t *>(entityFbb.GetBufferPointer()), entityFbb.GetSize()); |
185 | if (!Akonadi2::ApplicationDomain::Buffer::VerifyMailBuffer(verifyer)) { | 181 | if (!Akonadi2::ApplicationDomain::Buffer::VerifyMailBuffer(verifyer)) { |
diff --git a/examples/dummyresource/resourcefactory.h b/examples/dummyresource/resourcefactory.h index cf0f624..55d84d3 100644 --- a/examples/dummyresource/resourcefactory.h +++ b/examples/dummyresource/resourcefactory.h | |||
@@ -35,8 +35,8 @@ public: | |||
35 | DummyResource(const QByteArray &instanceIdentifier, const QSharedPointer<Akonadi2::Pipeline> &pipeline = QSharedPointer<Akonadi2::Pipeline>()); | 35 | DummyResource(const QByteArray &instanceIdentifier, const QSharedPointer<Akonadi2::Pipeline> &pipeline = QSharedPointer<Akonadi2::Pipeline>()); |
36 | KAsync::Job<void> synchronizeWithSource() Q_DECL_OVERRIDE; | 36 | KAsync::Job<void> synchronizeWithSource() Q_DECL_OVERRIDE; |
37 | private: | 37 | private: |
38 | void createEvent(const QByteArray &rid, const QByteArray &data, flatbuffers::FlatBufferBuilder &entityFbb); | 38 | void createEvent(const QByteArray &rid, const QMap<QString, QVariant> &data, flatbuffers::FlatBufferBuilder &entityFbb); |
39 | void createMail(const QByteArray &rid, const QByteArray &data, flatbuffers::FlatBufferBuilder &entityFbb); | 39 | void createMail(const QByteArray &rid, const QMap<QString, QVariant> &data, flatbuffers::FlatBufferBuilder &entityFbb); |
40 | }; | 40 | }; |
41 | 41 | ||
42 | class DummyResourceFactory : public Akonadi2::ResourceFactory | 42 | class DummyResourceFactory : public Akonadi2::ResourceFactory |