From d785bd2f3960ba5ac9f72a12ce27e314c99939cb Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 10 Jan 2017 15:06:08 +0100 Subject: Remember if we have all of the data or only the headers. --- common/domain/applicationdomaintype.h | 1 + common/domain/mail.cpp | 4 +++- common/domain/mail.fbs | 1 + examples/imapresource/imapresource.cpp | 1 + examples/imapresource/imapserverproxy.cpp | 5 +++-- examples/imapresource/imapserverproxy.h | 4 +--- 6 files changed, 10 insertions(+), 6 deletions(-) diff --git a/common/domain/applicationdomaintype.h b/common/domain/applicationdomaintype.h index 157415f..52319b0 100644 --- a/common/domain/applicationdomaintype.h +++ b/common/domain/applicationdomaintype.h @@ -370,6 +370,7 @@ struct SINK_EXPORT Mail : public Entity { SINK_PROPERTY(bool, Important, important); SINK_REFERENCE_PROPERTY(Folder, Folder, folder); SINK_BLOB_PROPERTY(MimeMessage, mimeMessage); + SINK_EXTRACTED_PROPERTY(bool, FullPayloadAvailable, fullPayloadAvailable); SINK_PROPERTY(bool, Draft, draft); SINK_PROPERTY(bool, Trash, trash); SINK_PROPERTY(bool, Sent, sent); diff --git a/common/domain/mail.cpp b/common/domain/mail.cpp index 3dd9093..f9a20d7 100644 --- a/common/domain/mail.cpp +++ b/common/domain/mail.cpp @@ -62,7 +62,7 @@ void TypeImplementation::configure(IndexPropertyMapper &indexPropertyMappe if (!thread.isEmpty()) { return thread.first(); } - return QByteArray{}; + return QByteArray{}; }); } @@ -79,6 +79,7 @@ void TypeImplementation::configure(ReadPropertyMapper &propertyMap propertyMapper.addMapping(&Buffer::important); propertyMapper.addMapping(&Buffer::folder); propertyMapper.addMapping(&Buffer::mimeMessage); + propertyMapper.addMapping(&Buffer::fullPayloadAvailable); propertyMapper.addMapping(&Buffer::draft); propertyMapper.addMapping(&Buffer::trash); propertyMapper.addMapping(&Buffer::sent); @@ -99,6 +100,7 @@ void TypeImplementation::configure(WritePropertyMapper &pro propertyMapper.addMapping(&BufferBuilder::add_important); propertyMapper.addMapping(&BufferBuilder::add_folder); propertyMapper.addMapping(&BufferBuilder::add_mimeMessage); + propertyMapper.addMapping(&BufferBuilder::add_fullPayloadAvailable); propertyMapper.addMapping(&BufferBuilder::add_draft); propertyMapper.addMapping(&BufferBuilder::add_trash); propertyMapper.addMapping(&BufferBuilder::add_sent); diff --git a/common/domain/mail.fbs b/common/domain/mail.fbs index 737a671..2099692 100644 --- a/common/domain/mail.fbs +++ b/common/domain/mail.fbs @@ -22,6 +22,7 @@ table Mail { sent:bool = false; messageId:string; parentMessageId:string; + fullPayloadAvailable:bool = false; } root_type Mail; diff --git a/examples/imapresource/imapresource.cpp b/examples/imapresource/imapresource.cpp index f07a62e..113352e 100644 --- a/examples/imapresource/imapresource.cpp +++ b/examples/imapresource/imapresource.cpp @@ -176,6 +176,7 @@ public: auto mail = Sink::ApplicationDomain::Mail::create(mResourceInstanceIdentifier); mail.setFolder(folderLocalId); mail.setMimeMessage(message.msg->encodedContent()); + mail.setExtractedFullPayloadAvailable(message.fullPayload); setFlags(mail, message.flags); createOrModify(bufferType, remoteId, mail); diff --git a/examples/imapresource/imapserverproxy.cpp b/examples/imapresource/imapserverproxy.cpp index a172c93..dd1be69 100644 --- a/examples/imapresource/imapserverproxy.cpp +++ b/examples/imapresource/imapserverproxy.cpp @@ -280,9 +280,10 @@ KAsync::Job> ImapServerProxy::search(const KIMAP2::Term &term) KAsync::Job ImapServerProxy::fetch(const KIMAP2::ImapSet &set, KIMAP2::FetchJob::FetchScope scope, const std::function &callback) { + const bool fullPayload = (scope.mode == KIMAP2::FetchJob::FetchScope::Full); return fetch(set, scope, - [callback](const KIMAP2::FetchJob::Result &result) { - callback(Message{result.uid, result.size, result.attributes, result.flags, result.message}); + [callback, fullPayload](const KIMAP2::FetchJob::Result &result) { + callback(Message{result.uid, result.size, result.attributes, result.flags, result.message, fullPayload}); }); } diff --git a/examples/imapresource/imapserverproxy.h b/examples/imapresource/imapserverproxy.h index 140c5b2..d99459f 100644 --- a/examples/imapresource/imapserverproxy.h +++ b/examples/imapresource/imapserverproxy.h @@ -55,6 +55,7 @@ struct Message { KIMAP2::MessageAttributes attributes; KIMAP2::MessageFlags flags; KMime::Message::Ptr msg; + bool fullPayload; }; struct Folder { @@ -72,8 +73,6 @@ struct Folder { { } - - QString path() const { Q_ASSERT(!mPath.isEmpty()); @@ -88,7 +87,6 @@ struct Folder { return parts.join(mSeparator); } - QString name() const { Q_ASSERT(!pathParts.isEmpty()); -- cgit v1.2.3