summaryrefslogtreecommitdiffstats
path: root/examples/maildirresource/facade.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/maildirresource/facade.cpp')
-rw-r--r--examples/maildirresource/facade.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/examples/maildirresource/facade.cpp b/examples/maildirresource/facade.cpp
index 7178ab9..a10a18b 100644
--- a/examples/maildirresource/facade.cpp
+++ b/examples/maildirresource/facade.cpp
@@ -19,17 +19,47 @@
19 19
20#include "facade.h" 20#include "facade.h"
21 21
22#include <QDir>
23#include <QFileInfo>
24
22#include "domainadaptor.h" 25#include "domainadaptor.h"
26#include "queryrunner.h"
23 27
24MaildirResourceMailFacade::MaildirResourceMailFacade(const QByteArray &instanceIdentifier) 28MaildirResourceMailFacade::MaildirResourceMailFacade(const QByteArray &instanceIdentifier)
25 : Sink::GenericFacade<Sink::ApplicationDomain::Mail>(instanceIdentifier, QSharedPointer<MaildirMailAdaptorFactory>::create()) 29 : Sink::GenericFacade<Sink::ApplicationDomain::Mail>(instanceIdentifier, QSharedPointer<MaildirMailAdaptorFactory>::create())
26{ 30{
31 mResultTransformation = [](Sink::ApplicationDomain::ApplicationDomainType &value) {
32 const auto property = value.getProperty("mimeMessage");
33 if (property.isValid()) {
34 //Transform the mime message property into the actual path on disk.
35 const auto mimeMessage = property.toString();
36 auto parts = mimeMessage.split('/');
37 auto key = parts.takeLast();
38 const auto folderPath = parts.join('/');
39 const auto path = folderPath + "/cur/";
40
41 Trace() << "Looking for mail in: " << path << key;
42 QDir dir(path);
43 const QFileInfoList list = dir.entryInfoList(QStringList() << (key+"*"), QDir::Files);
44 if (list.size() != 1) {
45 Warning() << "Failed to find message " << path << key << list.size();
46 value.setProperty("mimeMessage", QVariant());
47 } else {
48 value.setProperty("mimeMessage", list.at(0).filePath());
49 }
50 }
51 };
27} 52}
28 53
29MaildirResourceMailFacade::~MaildirResourceMailFacade() 54MaildirResourceMailFacade::~MaildirResourceMailFacade()
30{ 55{
31} 56}
32 57
58QPair<KAsync::Job<void>, Sink::ResultEmitter<Sink::ApplicationDomain::Mail::Ptr>::Ptr> MaildirResourceMailFacade::load(const Sink::Query &query)
59{
60 return Sink::GenericFacade<Sink::ApplicationDomain::Mail>::load(query);
61}
62
33 63
34MaildirResourceFolderFacade::MaildirResourceFolderFacade(const QByteArray &instanceIdentifier) 64MaildirResourceFolderFacade::MaildirResourceFolderFacade(const QByteArray &instanceIdentifier)
35 : Sink::GenericFacade<Sink::ApplicationDomain::Folder>(instanceIdentifier, QSharedPointer<MaildirFolderAdaptorFactory>::create()) 65 : Sink::GenericFacade<Sink::ApplicationDomain::Folder>(instanceIdentifier, QSharedPointer<MaildirFolderAdaptorFactory>::create())