summaryrefslogtreecommitdiffstats
path: root/common/specialpurposepreprocessor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'common/specialpurposepreprocessor.cpp')
-rw-r--r--common/specialpurposepreprocessor.cpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/common/specialpurposepreprocessor.cpp b/common/specialpurposepreprocessor.cpp
index be5fa50..25a6d1a 100644
--- a/common/specialpurposepreprocessor.cpp
+++ b/common/specialpurposepreprocessor.cpp
@@ -46,7 +46,7 @@ QByteArray getSpecialPurposeType(const QString &name)
46} 46}
47} 47}
48 48
49SpecialPurposeProcessor::SpecialPurposeProcessor(const QByteArray &resourceType, const QByteArray &resourceInstanceIdentifier) : mResourceType(resourceType), mResourceInstanceIdentifier(resourceInstanceIdentifier) {} 49SpecialPurposeProcessor::SpecialPurposeProcessor() : Sink::Preprocessor() {}
50 50
51QByteArray SpecialPurposeProcessor::findFolder(const QByteArray &specialPurpose, bool createIfMissing) 51QByteArray SpecialPurposeProcessor::findFolder(const QByteArray &specialPurpose, bool createIfMissing)
52{ 52{
@@ -60,7 +60,7 @@ QByteArray SpecialPurposeProcessor::findFolder(const QByteArray &specialPurpose,
60 60
61 if (!mSpecialPurposeFolders.contains(specialPurpose) && createIfMissing) { 61 if (!mSpecialPurposeFolders.contains(specialPurpose) && createIfMissing) {
62 SinkTrace() << "Failed to find a " << specialPurpose << " folder, creating a new one"; 62 SinkTrace() << "Failed to find a " << specialPurpose << " folder, creating a new one";
63 auto folder = ApplicationDomain::Folder::create(mResourceInstanceIdentifier); 63 auto folder = ApplicationDomain::Folder::create(resourceInstanceIdentifier());
64 folder.setSpecialPurpose(QByteArrayList() << specialPurpose); 64 folder.setSpecialPurpose(QByteArrayList() << specialPurpose);
65 folder.setName(sSpecialPurposeFolders.value(specialPurpose)); 65 folder.setName(sSpecialPurposeFolders.value(specialPurpose));
66 folder.setIcon("folder"); 66 folder.setIcon("folder");
@@ -104,7 +104,19 @@ void SpecialPurposeProcessor::moveToFolder(Sink::ApplicationDomain::ApplicationD
104 104
105void SpecialPurposeProcessor::newEntity(Sink::ApplicationDomain::ApplicationDomainType &newEntity) 105void SpecialPurposeProcessor::newEntity(Sink::ApplicationDomain::ApplicationDomainType &newEntity)
106{ 106{
107 moveToFolder(newEntity); 107 auto mail = newEntity.cast<ApplicationDomain::Mail>();
108 const auto folder = mail.getFolder();
109 if (folder.isEmpty()) {
110 moveToFolder(newEntity);
111 } else {
112 bool isDraft = findFolder(ApplicationDomain::SpecialPurpose::Mail::drafts) == folder;
113 bool isSent = findFolder(ApplicationDomain::SpecialPurpose::Mail::sent) == folder;
114 bool isTrash = findFolder(ApplicationDomain::SpecialPurpose::Mail::trash) == folder;
115 mail.setDraft(isDraft);
116 mail.setTrash(isTrash);
117 mail.setSent(isSent);
118 }
119
108} 120}
109 121
110void SpecialPurposeProcessor::modifiedEntity(const Sink::ApplicationDomain::ApplicationDomainType &oldEntity, Sink::ApplicationDomain::ApplicationDomainType &newEntity) 122void SpecialPurposeProcessor::modifiedEntity(const Sink::ApplicationDomain::ApplicationDomainType &oldEntity, Sink::ApplicationDomain::ApplicationDomainType &newEntity)
@@ -118,8 +130,8 @@ void SpecialPurposeProcessor::modifiedEntity(const Sink::ApplicationDomain::Appl
118 bool isSent = findFolder(ApplicationDomain::SpecialPurpose::Mail::sent) == folder; 130 bool isSent = findFolder(ApplicationDomain::SpecialPurpose::Mail::sent) == folder;
119 bool isTrash = findFolder(ApplicationDomain::SpecialPurpose::Mail::trash) == folder; 131 bool isTrash = findFolder(ApplicationDomain::SpecialPurpose::Mail::trash) == folder;
120 mail.setDraft(isDraft); 132 mail.setDraft(isDraft);
121 mail.setTrash(isSent); 133 mail.setTrash(isTrash);
122 mail.setSent(isTrash); 134 mail.setSent(isSent);
123 } else { 135 } else {
124 moveToFolder(newEntity); 136 moveToFolder(newEntity);
125 } 137 }