summaryrefslogtreecommitdiffstats
path: root/framework/domain/composercontroller.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'framework/domain/composercontroller.cpp')
-rw-r--r--framework/domain/composercontroller.cpp50
1 files changed, 24 insertions, 26 deletions
diff --git a/framework/domain/composercontroller.cpp b/framework/domain/composercontroller.cpp
index 94914f17..2dcf1bb1 100644
--- a/framework/domain/composercontroller.cpp
+++ b/framework/domain/composercontroller.cpp
@@ -27,6 +27,7 @@
27#include <QVariant> 27#include <QVariant>
28#include <QDebug> 28#include <QDebug>
29#include <QQmlEngine> 29#include <QQmlEngine>
30#include <sink/store.h>
30 31
31#include "accountsmodel.h" 32#include "accountsmodel.h"
32#include "identitiesmodel.h" 33#include "identitiesmodel.h"
@@ -128,32 +129,28 @@ void ComposerController::setMessage(const KMime::Message::Ptr &msg)
128 m_msg = QVariant::fromValue(msg); 129 m_msg = QVariant::fromValue(msg);
129} 130}
130 131
131void ComposerController::setOriginalMessage(const QVariant &originalMessage) 132void ComposerController::loadMessage(const QVariant &message, bool loadAsDraft)
132{ 133{
133 const auto mailData = KMime::CRLFtoLF(originalMessage.toByteArray()); 134 Sink::Query query(*message.value<Sink::ApplicationDomain::Mail::Ptr>());
134 if (!mailData.isEmpty()) { 135 query.request<Sink::ApplicationDomain::Mail::MimeMessage>();
135 KMime::Message::Ptr mail(new KMime::Message); 136 Sink::Store::fetchOne<Sink::ApplicationDomain::Mail>(query).then<void, Sink::ApplicationDomain::Mail>([this, loadAsDraft](const Sink::ApplicationDomain::Mail &mail) {
136 mail->setContent(mailData); 137 m_existingMail = mail;
137 mail->parse(); 138 const auto mailData = KMime::CRLFtoLF(mail.getMimeMessage());
138 auto reply = MailTemplates::reply(mail); 139 if (!mailData.isEmpty()) {
139 //We assume reply 140 KMime::Message::Ptr mail(new KMime::Message);
140 setMessage(reply); 141 mail->setContent(mailData);
141 } else { 142 mail->parse();
142 m_msg = QVariant(); 143 if (loadAsDraft) {
143 } 144 auto reply = MailTemplates::reply(mail);
144} 145 //We assume reply
145 146 setMessage(reply);
146void ComposerController::setDraftMessage(const QVariant &originalMessage) 147 } else {
147{ 148 setMessage(mail);
148 const auto mailData = KMime::CRLFtoLF(originalMessage.toByteArray()); 149 }
149 if (!mailData.isEmpty()) { 150 } else {
150 KMime::Message::Ptr mail(new KMime::Message); 151 qWarning() << "Retrieved empty message";
151 mail->setContent(mailData); 152 }
152 mail->parse(); 153 }).exec();
153 setMessage(mail);
154 } else {
155 m_msg = QVariant();
156 }
157} 154}
158 155
159KMime::Message::Ptr ComposerController::assembleMessage() 156KMime::Message::Ptr ComposerController::assembleMessage()
@@ -203,6 +200,7 @@ void ComposerController::saveAsDraft()
203 Kube::Context context; 200 Kube::Context context;
204 context.setProperty("message", QVariant::fromValue(mail)); 201 context.setProperty("message", QVariant::fromValue(mail));
205 context.setProperty("accountId", QVariant::fromValue(currentAccountId)); 202 context.setProperty("accountId", QVariant::fromValue(currentAccountId));
203 context.setProperty("existingMail", QVariant::fromValue(m_existingMail));
206 Kube::Action("org.kde.kube.actions.save-as-draft", context).execute(); 204 Kube::Action("org.kde.kube.actions.save-as-draft", context).execute();
207 clear(); 205 clear();
208} 206}