summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-01-10 15:06:08 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-01-10 15:06:08 +0100
commitd785bd2f3960ba5ac9f72a12ce27e314c99939cb (patch)
treebd8d02c14902950842710fb83ab3e28e232f100e
parent8e84c8a78b7e308cc2b09241af649851036d11de (diff)
downloadsink-d785bd2f3960ba5ac9f72a12ce27e314c99939cb.tar.gz
sink-d785bd2f3960ba5ac9f72a12ce27e314c99939cb.zip
Remember if we have all of the data or only the headers.
-rw-r--r--common/domain/applicationdomaintype.h1
-rw-r--r--common/domain/mail.cpp4
-rw-r--r--common/domain/mail.fbs1
-rw-r--r--examples/imapresource/imapresource.cpp1
-rw-r--r--examples/imapresource/imapserverproxy.cpp5
-rw-r--r--examples/imapresource/imapserverproxy.h4
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 {
370 SINK_PROPERTY(bool, Important, important); 370 SINK_PROPERTY(bool, Important, important);
371 SINK_REFERENCE_PROPERTY(Folder, Folder, folder); 371 SINK_REFERENCE_PROPERTY(Folder, Folder, folder);
372 SINK_BLOB_PROPERTY(MimeMessage, mimeMessage); 372 SINK_BLOB_PROPERTY(MimeMessage, mimeMessage);
373 SINK_EXTRACTED_PROPERTY(bool, FullPayloadAvailable, fullPayloadAvailable);
373 SINK_PROPERTY(bool, Draft, draft); 374 SINK_PROPERTY(bool, Draft, draft);
374 SINK_PROPERTY(bool, Trash, trash); 375 SINK_PROPERTY(bool, Trash, trash);
375 SINK_PROPERTY(bool, Sent, sent); 376 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<Mail>::configure(IndexPropertyMapper &indexPropertyMappe
62 if (!thread.isEmpty()) { 62 if (!thread.isEmpty()) {
63 return thread.first(); 63 return thread.first();
64 } 64 }
65 return QByteArray{}; 65 return QByteArray{};
66 }); 66 });
67} 67}
68 68
@@ -79,6 +79,7 @@ void TypeImplementation<Mail>::configure(ReadPropertyMapper<Buffer> &propertyMap
79 propertyMapper.addMapping<Mail::Important, Buffer>(&Buffer::important); 79 propertyMapper.addMapping<Mail::Important, Buffer>(&Buffer::important);
80 propertyMapper.addMapping<Mail::Folder, Buffer>(&Buffer::folder); 80 propertyMapper.addMapping<Mail::Folder, Buffer>(&Buffer::folder);
81 propertyMapper.addMapping<Mail::MimeMessage, Buffer>(&Buffer::mimeMessage); 81 propertyMapper.addMapping<Mail::MimeMessage, Buffer>(&Buffer::mimeMessage);
82 propertyMapper.addMapping<Mail::FullPayloadAvailable, Buffer>(&Buffer::fullPayloadAvailable);
82 propertyMapper.addMapping<Mail::Draft, Buffer>(&Buffer::draft); 83 propertyMapper.addMapping<Mail::Draft, Buffer>(&Buffer::draft);
83 propertyMapper.addMapping<Mail::Trash, Buffer>(&Buffer::trash); 84 propertyMapper.addMapping<Mail::Trash, Buffer>(&Buffer::trash);
84 propertyMapper.addMapping<Mail::Sent, Buffer>(&Buffer::sent); 85 propertyMapper.addMapping<Mail::Sent, Buffer>(&Buffer::sent);
@@ -99,6 +100,7 @@ void TypeImplementation<Mail>::configure(WritePropertyMapper<BufferBuilder> &pro
99 propertyMapper.addMapping<Mail::Important>(&BufferBuilder::add_important); 100 propertyMapper.addMapping<Mail::Important>(&BufferBuilder::add_important);
100 propertyMapper.addMapping<Mail::Folder>(&BufferBuilder::add_folder); 101 propertyMapper.addMapping<Mail::Folder>(&BufferBuilder::add_folder);
101 propertyMapper.addMapping<Mail::MimeMessage>(&BufferBuilder::add_mimeMessage); 102 propertyMapper.addMapping<Mail::MimeMessage>(&BufferBuilder::add_mimeMessage);
103 propertyMapper.addMapping<Mail::FullPayloadAvailable>(&BufferBuilder::add_fullPayloadAvailable);
102 propertyMapper.addMapping<Mail::Draft>(&BufferBuilder::add_draft); 104 propertyMapper.addMapping<Mail::Draft>(&BufferBuilder::add_draft);
103 propertyMapper.addMapping<Mail::Trash>(&BufferBuilder::add_trash); 105 propertyMapper.addMapping<Mail::Trash>(&BufferBuilder::add_trash);
104 propertyMapper.addMapping<Mail::Sent>(&BufferBuilder::add_sent); 106 propertyMapper.addMapping<Mail::Sent>(&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 {
22 sent:bool = false; 22 sent:bool = false;
23 messageId:string; 23 messageId:string;
24 parentMessageId:string; 24 parentMessageId:string;
25 fullPayloadAvailable:bool = false;
25} 26}
26 27
27root_type Mail; 28root_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:
176 auto mail = Sink::ApplicationDomain::Mail::create(mResourceInstanceIdentifier); 176 auto mail = Sink::ApplicationDomain::Mail::create(mResourceInstanceIdentifier);
177 mail.setFolder(folderLocalId); 177 mail.setFolder(folderLocalId);
178 mail.setMimeMessage(message.msg->encodedContent()); 178 mail.setMimeMessage(message.msg->encodedContent());
179 mail.setExtractedFullPayloadAvailable(message.fullPayload);
179 setFlags(mail, message.flags); 180 setFlags(mail, message.flags);
180 181
181 createOrModify(bufferType, remoteId, mail); 182 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<QVector<qint64>> ImapServerProxy::search(const KIMAP2::Term &term)
280 280
281KAsync::Job<void> ImapServerProxy::fetch(const KIMAP2::ImapSet &set, KIMAP2::FetchJob::FetchScope scope, const std::function<void(const Message &)> &callback) 281KAsync::Job<void> ImapServerProxy::fetch(const KIMAP2::ImapSet &set, KIMAP2::FetchJob::FetchScope scope, const std::function<void(const Message &)> &callback)
282{ 282{
283 const bool fullPayload = (scope.mode == KIMAP2::FetchJob::FetchScope::Full);
283 return fetch(set, scope, 284 return fetch(set, scope,
284 [callback](const KIMAP2::FetchJob::Result &result) { 285 [callback, fullPayload](const KIMAP2::FetchJob::Result &result) {
285 callback(Message{result.uid, result.size, result.attributes, result.flags, result.message}); 286 callback(Message{result.uid, result.size, result.attributes, result.flags, result.message, fullPayload});
286 }); 287 });
287} 288}
288 289
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 {
55 KIMAP2::MessageAttributes attributes; 55 KIMAP2::MessageAttributes attributes;
56 KIMAP2::MessageFlags flags; 56 KIMAP2::MessageFlags flags;
57 KMime::Message::Ptr msg; 57 KMime::Message::Ptr msg;
58 bool fullPayload;
58}; 59};
59 60
60struct Folder { 61struct Folder {
@@ -72,8 +73,6 @@ struct Folder {
72 { 73 {
73 } 74 }
74 75
75
76
77 QString path() const 76 QString path() const
78 { 77 {
79 Q_ASSERT(!mPath.isEmpty()); 78 Q_ASSERT(!mPath.isEmpty());
@@ -88,7 +87,6 @@ struct Folder {
88 return parts.join(mSeparator); 87 return parts.join(mSeparator);
89 } 88 }
90 89
91
92 QString name() const 90 QString name() const
93 { 91 {
94 Q_ASSERT(!pathParts.isEmpty()); 92 Q_ASSERT(!pathParts.isEmpty());