diff options
Diffstat (limited to 'common/specialpurposepreprocessor.cpp')
-rw-r--r-- | common/specialpurposepreprocessor.cpp | 22 |
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 | ||
49 | SpecialPurposeProcessor::SpecialPurposeProcessor(const QByteArray &resourceType, const QByteArray &resourceInstanceIdentifier) : mResourceType(resourceType), mResourceInstanceIdentifier(resourceInstanceIdentifier) {} | 49 | SpecialPurposeProcessor::SpecialPurposeProcessor() : Sink::Preprocessor() {} |
50 | 50 | ||
51 | QByteArray SpecialPurposeProcessor::findFolder(const QByteArray &specialPurpose, bool createIfMissing) | 51 | QByteArray 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 | ||
105 | void SpecialPurposeProcessor::newEntity(Sink::ApplicationDomain::ApplicationDomainType &newEntity) | 105 | void 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 | ||
110 | void SpecialPurposeProcessor::modifiedEntity(const Sink::ApplicationDomain::ApplicationDomainType &oldEntity, Sink::ApplicationDomain::ApplicationDomainType &newEntity) | 122 | void 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 | } |