summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
Diffstat (limited to 'common')
-rw-r--r--common/domain/folder.cpp9
-rw-r--r--common/domain/folder.fbs1
-rw-r--r--common/propertymapper.cpp20
3 files changed, 27 insertions, 3 deletions
diff --git a/common/domain/folder.cpp b/common/domain/folder.cpp
index 989d2c4..5558060 100644
--- a/common/domain/folder.cpp
+++ b/common/domain/folder.cpp
@@ -80,8 +80,9 @@ void TypeImplementation<Folder>::removeIndex(const QByteArray &identifier, const
80QSharedPointer<ReadPropertyMapper<TypeImplementation<Folder>::Buffer> > TypeImplementation<Folder>::initializeReadPropertyMapper() 80QSharedPointer<ReadPropertyMapper<TypeImplementation<Folder>::Buffer> > TypeImplementation<Folder>::initializeReadPropertyMapper()
81{ 81{
82 auto propertyMapper = QSharedPointer<ReadPropertyMapper<Buffer> >::create(); 82 auto propertyMapper = QSharedPointer<ReadPropertyMapper<Buffer> >::create();
83 propertyMapper->addMapping<QString, Buffer>("parent", &Buffer::parent); 83 propertyMapper->addMapping<QByteArray, Buffer>("parent", &Buffer::parent);
84 propertyMapper->addMapping<QString, Buffer>("name", &Buffer::name); 84 propertyMapper->addMapping<QString, Buffer>("name", &Buffer::name);
85 propertyMapper->addMapping<QByteArray, Buffer>("icon", &Buffer::icon);
85 return propertyMapper; 86 return propertyMapper;
86} 87}
87 88
@@ -89,12 +90,16 @@ QSharedPointer<WritePropertyMapper<TypeImplementation<Folder>::BufferBuilder> >
89{ 90{
90 auto propertyMapper = QSharedPointer<WritePropertyMapper<BufferBuilder> >::create(); 91 auto propertyMapper = QSharedPointer<WritePropertyMapper<BufferBuilder> >::create();
91 propertyMapper->addMapping("parent", [](const QVariant &value, flatbuffers::FlatBufferBuilder &fbb) -> std::function<void(BufferBuilder &)> { 92 propertyMapper->addMapping("parent", [](const QVariant &value, flatbuffers::FlatBufferBuilder &fbb) -> std::function<void(BufferBuilder &)> {
92 auto offset = variantToProperty<QString>(value, fbb); 93 auto offset = variantToProperty<QByteArray>(value, fbb);
93 return [offset](BufferBuilder &builder) { builder.add_parent(offset); }; 94 return [offset](BufferBuilder &builder) { builder.add_parent(offset); };
94 }); 95 });
95 propertyMapper->addMapping("name", [](const QVariant &value, flatbuffers::FlatBufferBuilder &fbb) -> std::function<void(BufferBuilder &)> { 96 propertyMapper->addMapping("name", [](const QVariant &value, flatbuffers::FlatBufferBuilder &fbb) -> std::function<void(BufferBuilder &)> {
96 auto offset = variantToProperty<QString>(value, fbb); 97 auto offset = variantToProperty<QString>(value, fbb);
97 return [offset](BufferBuilder &builder) { builder.add_name(offset); }; 98 return [offset](BufferBuilder &builder) { builder.add_name(offset); };
98 }); 99 });
100 propertyMapper->addMapping("icon", [](const QVariant &value, flatbuffers::FlatBufferBuilder &fbb) -> std::function<void(BufferBuilder &)> {
101 auto offset = variantToProperty<QByteArray>(value, fbb);
102 return [offset](BufferBuilder &builder) { builder.add_icon(offset); };
103 });
99 return propertyMapper; 104 return propertyMapper;
100} 105}
diff --git a/common/domain/folder.fbs b/common/domain/folder.fbs
index 3476d58..31dc32a 100644
--- a/common/domain/folder.fbs
+++ b/common/domain/folder.fbs
@@ -3,6 +3,7 @@ namespace Akonadi2.ApplicationDomain.Buffer;
3table Folder { 3table Folder {
4 name:string; 4 name:string;
5 parent:string; 5 parent:string;
6 icon:string;
6} 7}
7 8
8root_type Folder; 9root_type Folder;
diff --git a/common/propertymapper.cpp b/common/propertymapper.cpp
index 7ff072a..60f7dd5 100644
--- a/common/propertymapper.cpp
+++ b/common/propertymapper.cpp
@@ -29,6 +29,15 @@ flatbuffers::uoffset_t variantToProperty<QString>(const QVariant &property, flat
29} 29}
30 30
31template <> 31template <>
32flatbuffers::uoffset_t variantToProperty<QByteArray>(const QVariant &property, flatbuffers::FlatBufferBuilder &fbb)
33{
34 if (property.isValid()) {
35 return fbb.CreateString(property.toByteArray().toStdString()).o;
36 }
37 return 0;
38}
39
40template <>
32QVariant propertyToVariant<QString>(const flatbuffers::String *property) 41QVariant propertyToVariant<QString>(const flatbuffers::String *property)
33{ 42{
34 if (property) { 43 if (property) {
@@ -39,8 +48,17 @@ QVariant propertyToVariant<QString>(const flatbuffers::String *property)
39} 48}
40 49
41template <> 50template <>
51QVariant propertyToVariant<QByteArray>(const flatbuffers::String *property)
52{
53 if (property) {
54 //We have to copy the memory, otherwise it would become eventually invalid
55 return QString::fromStdString(property->c_str()).toUtf8();
56 }
57 return QVariant();
58}
59
60template <>
42QVariant propertyToVariant<bool>(uint8_t property) 61QVariant propertyToVariant<bool>(uint8_t property)
43{ 62{
44 return static_cast<bool>(property); 63 return static_cast<bool>(property);
45} 64}
46