diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/domain/mail.cpp | 10 | ||||
-rw-r--r-- | common/propertymapper.cpp | 20 | ||||
-rw-r--r-- | common/propertymapper.h | 10 |
3 files changed, 35 insertions, 5 deletions
diff --git a/common/domain/mail.cpp b/common/domain/mail.cpp index 59b75ea..0170357 100644 --- a/common/domain/mail.cpp +++ b/common/domain/mail.cpp | |||
@@ -73,10 +73,10 @@ QSharedPointer<ReadPropertyMapper<TypeImplementation<Mail>::Buffer> > TypeImplem | |||
73 | propertyMapper->addMapping<QString, Buffer>("sender", &Buffer::sender); | 73 | propertyMapper->addMapping<QString, Buffer>("sender", &Buffer::sender); |
74 | propertyMapper->addMapping<QString, Buffer>("senderName", &Buffer::senderName); | 74 | propertyMapper->addMapping<QString, Buffer>("senderName", &Buffer::senderName); |
75 | propertyMapper->addMapping<QString, Buffer>("subject", &Buffer::subject); | 75 | propertyMapper->addMapping<QString, Buffer>("subject", &Buffer::subject); |
76 | propertyMapper->addMapping<QString, Buffer>("date", &Buffer::date); | 76 | propertyMapper->addMapping<QDateTime, Buffer>("date", &Buffer::date); |
77 | propertyMapper->addMapping<bool, Buffer>("unread", &Buffer::unread); | 77 | propertyMapper->addMapping<bool, Buffer>("unread", &Buffer::unread); |
78 | propertyMapper->addMapping<bool, Buffer>("important", &Buffer::important); | 78 | propertyMapper->addMapping<bool, Buffer>("important", &Buffer::important); |
79 | propertyMapper->addMapping<QString, Buffer>("folder", &Buffer::folder); | 79 | propertyMapper->addMapping<QByteArray, Buffer>("folder", &Buffer::folder); |
80 | return propertyMapper; | 80 | return propertyMapper; |
81 | } | 81 | } |
82 | 82 | ||
@@ -87,9 +87,9 @@ QSharedPointer<WritePropertyMapper<TypeImplementation<Mail>::BufferBuilder> > Ty | |||
87 | propertyMapper->addMapping<QString>("sender", &BufferBuilder::add_sender); | 87 | propertyMapper->addMapping<QString>("sender", &BufferBuilder::add_sender); |
88 | propertyMapper->addMapping<QString>("senderName", &BufferBuilder::add_senderName); | 88 | propertyMapper->addMapping<QString>("senderName", &BufferBuilder::add_senderName); |
89 | propertyMapper->addMapping<QString>("subject", &BufferBuilder::add_subject); | 89 | propertyMapper->addMapping<QString>("subject", &BufferBuilder::add_subject); |
90 | propertyMapper->addMapping<QString>("date", &BufferBuilder::add_date); | 90 | propertyMapper->addMapping<QDateTime>("date", &BufferBuilder::add_date); |
91 | // propertyMapper->addMapping<bool>("unread", &BufferBuilder::add_unread); | 91 | propertyMapper->addMapping<bool>("unread", &BufferBuilder::add_unread); |
92 | // propertyMapper->addMapping<bool>("important", &BufferBuilder::add_important); | 92 | propertyMapper->addMapping<bool>("important", &BufferBuilder::add_important); |
93 | propertyMapper->addMapping<QString>("folder", &BufferBuilder::add_folder); | 93 | propertyMapper->addMapping<QString>("folder", &BufferBuilder::add_folder); |
94 | return propertyMapper; | 94 | return propertyMapper; |
95 | } | 95 | } |
diff --git a/common/propertymapper.cpp b/common/propertymapper.cpp index 60f7dd5..17a73cb 100644 --- a/common/propertymapper.cpp +++ b/common/propertymapper.cpp | |||
@@ -18,6 +18,7 @@ | |||
18 | */ | 18 | */ |
19 | 19 | ||
20 | #include "propertymapper.h" | 20 | #include "propertymapper.h" |
21 | #include <QDateTime> | ||
21 | 22 | ||
22 | template <> | 23 | template <> |
23 | flatbuffers::uoffset_t variantToProperty<QString>(const QVariant &property, flatbuffers::FlatBufferBuilder &fbb) | 24 | flatbuffers::uoffset_t variantToProperty<QString>(const QVariant &property, flatbuffers::FlatBufferBuilder &fbb) |
@@ -38,6 +39,15 @@ flatbuffers::uoffset_t variantToProperty<QByteArray>(const QVariant &property, f | |||
38 | } | 39 | } |
39 | 40 | ||
40 | template <> | 41 | template <> |
42 | flatbuffers::uoffset_t variantToProperty<QDateTime>(const QVariant &property, flatbuffers::FlatBufferBuilder &fbb) | ||
43 | { | ||
44 | if (property.isValid()) { | ||
45 | return fbb.CreateString(property.toDateTime().toString().toStdString()).o; | ||
46 | } | ||
47 | return 0; | ||
48 | } | ||
49 | |||
50 | template <> | ||
41 | QVariant propertyToVariant<QString>(const flatbuffers::String *property) | 51 | QVariant propertyToVariant<QString>(const flatbuffers::String *property) |
42 | { | 52 | { |
43 | if (property) { | 53 | if (property) { |
@@ -62,3 +72,13 @@ QVariant propertyToVariant<bool>(uint8_t property) | |||
62 | { | 72 | { |
63 | return static_cast<bool>(property); | 73 | return static_cast<bool>(property); |
64 | } | 74 | } |
75 | |||
76 | template <> | ||
77 | QVariant propertyToVariant<QDateTime>(const flatbuffers::String *property) | ||
78 | { | ||
79 | if (property) { | ||
80 | //We have to copy the memory, otherwise it would become eventually invalid | ||
81 | return QDateTime::fromString(QString::fromStdString(property->c_str())); | ||
82 | } | ||
83 | return QVariant(); | ||
84 | } | ||
diff --git a/common/propertymapper.h b/common/propertymapper.h index 98ad397..fbde2d9 100644 --- a/common/propertymapper.h +++ b/common/propertymapper.h | |||
@@ -100,6 +100,16 @@ public: | |||
100 | } | 100 | } |
101 | 101 | ||
102 | template <typename T> | 102 | template <typename T> |
103 | void addMapping(const QByteArray &name, void (BufferBuilder::*f)(uint8_t)) | ||
104 | { | ||
105 | addMapping(name, [f](const QVariant &value, flatbuffers::FlatBufferBuilder &fbb) -> std::function<void(BufferBuilder &)> { | ||
106 | return [value, f](BufferBuilder &builder) { | ||
107 | (builder.*f)(value.value<T>()); | ||
108 | }; | ||
109 | }); | ||
110 | } | ||
111 | |||
112 | template <typename T> | ||
103 | void addMapping(const QByteArray &name, void (BufferBuilder::*f)(flatbuffers::Offset<flatbuffers::String>)) | 113 | void addMapping(const QByteArray &name, void (BufferBuilder::*f)(flatbuffers::Offset<flatbuffers::String>)) |
104 | { | 114 | { |
105 | addMapping(name, [f](const QVariant &value, flatbuffers::FlatBufferBuilder &fbb) -> std::function<void(BufferBuilder &)> { | 115 | addMapping(name, [f](const QVariant &value, flatbuffers::FlatBufferBuilder &fbb) -> std::function<void(BufferBuilder &)> { |