diff options
Diffstat (limited to 'framework/domain/composercontroller.cpp')
-rw-r--r-- | framework/domain/composercontroller.cpp | 50 |
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 | ||
131 | void ComposerController::setOriginalMessage(const QVariant &originalMessage) | 132 | void 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); | |
146 | void 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 | ||
159 | KMime::Message::Ptr ComposerController::assembleMessage() | 156 | KMime::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 | } |