From 46570dd9684990846cfd4c3dc5be71498c5a6278 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Fri, 4 Dec 2015 16:40:28 +0100 Subject: example client and properties --- common/domain/mail.cpp | 10 +++++----- common/propertymapper.cpp | 20 ++++++++++++++++++++ common/propertymapper.h | 10 ++++++++++ 3 files changed, 35 insertions(+), 5 deletions(-) (limited to 'common') 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::Buffer> > TypeImplem propertyMapper->addMapping("sender", &Buffer::sender); propertyMapper->addMapping("senderName", &Buffer::senderName); propertyMapper->addMapping("subject", &Buffer::subject); - propertyMapper->addMapping("date", &Buffer::date); + propertyMapper->addMapping("date", &Buffer::date); propertyMapper->addMapping("unread", &Buffer::unread); propertyMapper->addMapping("important", &Buffer::important); - propertyMapper->addMapping("folder", &Buffer::folder); + propertyMapper->addMapping("folder", &Buffer::folder); return propertyMapper; } @@ -87,9 +87,9 @@ QSharedPointer::BufferBuilder> > Ty propertyMapper->addMapping("sender", &BufferBuilder::add_sender); propertyMapper->addMapping("senderName", &BufferBuilder::add_senderName); propertyMapper->addMapping("subject", &BufferBuilder::add_subject); - propertyMapper->addMapping("date", &BufferBuilder::add_date); - // propertyMapper->addMapping("unread", &BufferBuilder::add_unread); - // propertyMapper->addMapping("important", &BufferBuilder::add_important); + propertyMapper->addMapping("date", &BufferBuilder::add_date); + propertyMapper->addMapping("unread", &BufferBuilder::add_unread); + propertyMapper->addMapping("important", &BufferBuilder::add_important); propertyMapper->addMapping("folder", &BufferBuilder::add_folder); return propertyMapper; } 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 @@ */ #include "propertymapper.h" +#include template <> flatbuffers::uoffset_t variantToProperty(const QVariant &property, flatbuffers::FlatBufferBuilder &fbb) @@ -37,6 +38,15 @@ flatbuffers::uoffset_t variantToProperty(const QVariant &property, f return 0; } +template <> +flatbuffers::uoffset_t variantToProperty(const QVariant &property, flatbuffers::FlatBufferBuilder &fbb) +{ + if (property.isValid()) { + return fbb.CreateString(property.toDateTime().toString().toStdString()).o; + } + return 0; +} + template <> QVariant propertyToVariant(const flatbuffers::String *property) { @@ -62,3 +72,13 @@ QVariant propertyToVariant(uint8_t property) { return static_cast(property); } + +template <> +QVariant propertyToVariant(const flatbuffers::String *property) +{ + if (property) { + //We have to copy the memory, otherwise it would become eventually invalid + return QDateTime::fromString(QString::fromStdString(property->c_str())); + } + return QVariant(); +} diff --git a/common/propertymapper.h b/common/propertymapper.h index 98ad397..fbde2d9 100644 --- a/common/propertymapper.h +++ b/common/propertymapper.h @@ -99,6 +99,16 @@ public: mWriteAccessors.insert(property, mapping); } + template + void addMapping(const QByteArray &name, void (BufferBuilder::*f)(uint8_t)) + { + addMapping(name, [f](const QVariant &value, flatbuffers::FlatBufferBuilder &fbb) -> std::function { + return [value, f](BufferBuilder &builder) { + (builder.*f)(value.value()); + }; + }); + } + template void addMapping(const QByteArray &name, void (BufferBuilder::*f)(flatbuffers::Offset)) { -- cgit v1.2.3