summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-03-09 15:04:39 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-03-09 15:04:39 +0100
commitf0a88e15144817d854923e8beb63902accbe4cc9 (patch)
tree3948039d4a122a9907e02ea5aa0d7e11f89f2928
parentfd31aa9b05ea215e8071cf76fe21ec746204f3a3 (diff)
downloadkube-f0a88e15144817d854923e8beb63902accbe4cc9.tar.gz
kube-f0a88e15144817d854923e8beb63902accbe4cc9.zip
Prepared a save-as-draft action.
-rw-r--r--framework/mail/actions/sinkactions.cpp36
-rw-r--r--framework/mail/composer.cpp12
-rw-r--r--framework/mail/composer.h5
3 files changed, 51 insertions, 2 deletions
diff --git a/framework/mail/actions/sinkactions.cpp b/framework/mail/actions/sinkactions.cpp
index e00d3947..a19ab149 100644
--- a/framework/mail/actions/sinkactions.cpp
+++ b/framework/mail/actions/sinkactions.cpp
@@ -68,3 +68,39 @@ static ActionHandlerHelper synchronizeHandler("org.kde.kube.actions.synchronize"
68 Sink::Store::synchronize(Sink::Query::ResourceFilter(folder->resourceInstanceIdentifier())).exec(); 68 Sink::Store::synchronize(Sink::Query::ResourceFilter(folder->resourceInstanceIdentifier())).exec();
69 } 69 }
70); 70);
71
72// static ActionHandlerHelper saveAsDraft("org.kde.kube.actions.save-as-draft",
73// [](Context *context) -> bool {
74// return context->property("mail").isValid();
75// },
76// [](Context *context) {
77// Sink::Query query;
78// query += Sink::Query::RequestedProperties(QByteArrayList() << "name")
79// //FIXME do something like specialuse?
80// query += Sink::Query::PropertyFilter("name", "Drafts");
81// // query += Sink::Query::PropertyContainsFilter("specialuser", "drafts");
82// query += Sink::Query::PropertyFilter("drafts", true);
83// //TODO Use drafts folder of that specific account
84// Sink::Store::fetchAll<Sink::ApplicationDomain::Folder>(query)
85// .then<void, QList<Sink::ApplicationDomain::Folder>>([](const QList<Sink::ApplicationDomain::Folder> folders) {
86// if (folders.isEmpty()) {
87// return KAsync::start([]() {
88// //If message is already existing, modify, otherwise create
89// });
90// }
91// });
92// //TODO
93// // * Find drafts folder
94// // * Store KMime::Message on disk for use in blob property
95// // * Check if message is already existing and either create or update
96// // *
97// // auto mail = context->property("mail").value<Sink::ApplicationDomain::Mail::Ptr>();
98// // if (!mail) {
99// // qWarning() << "Failed to get the mail mail: " << context->property("mail");
100// // return;
101// // }
102// // mail->setProperty("unread", false);
103// // qDebug() << "Mark as read " << mail->identifier();
104// // Sink::Store::modify(*mail).exec();
105// }
106// );
diff --git a/framework/mail/composer.cpp b/framework/mail/composer.cpp
index 9edc8345..2f4fe2e9 100644
--- a/framework/mail/composer.cpp
+++ b/framework/mail/composer.cpp
@@ -141,7 +141,7 @@ void Composer::setOriginalMessage(const QVariant &originalMessage)
141 } 141 }
142} 142}
143 143
144void Composer::send() 144KMime::Message::Ptr Composer::assembleMessage()
145{ 145{
146 auto mail = m_msg.value<KMime::Message::Ptr>(); 146 auto mail = m_msg.value<KMime::Message::Ptr>();
147 if (!mail) { 147 if (!mail) {
@@ -157,7 +157,12 @@ void Composer::send()
157 mail->subject(true)->fromUnicodeString(m_subject, "utf-8"); 157 mail->subject(true)->fromUnicodeString(m_subject, "utf-8");
158 mail->setBody(m_body.toUtf8()); 158 mail->setBody(m_body.toUtf8());
159 mail->assemble(); 159 mail->assemble();
160 return mail;
161}
160 162
163void Composer::send()
164{
165 auto mail = assembleMessage();
161 Kube::ApplicationContext settings; 166 Kube::ApplicationContext settings;
162 auto account = settings.currentAccount(); 167 auto account = settings.currentAccount();
163 auto identity = account.primaryIdentity(); 168 auto identity = account.primaryIdentity();
@@ -176,7 +181,10 @@ void Composer::send()
176 181
177void Composer::saveAsDraft() 182void Composer::saveAsDraft()
178{ 183{
179 //TODO 184 auto mail = assembleMessage();
185 Kube::Context context;
186 context.setProperty("message", QVariant::fromValue(mail));
187 Kube::Action("org.kde.kube.actions.saveasdraft", context).execute();
180 clear(); 188 clear();
181} 189}
182 190
diff --git a/framework/mail/composer.h b/framework/mail/composer.h
index ee38187f..dd066b2e 100644
--- a/framework/mail/composer.h
+++ b/framework/mail/composer.h
@@ -24,6 +24,10 @@
24#include <QStringList> 24#include <QStringList>
25#include <QVariant> 25#include <QVariant>
26 26
27namespace KMime {
28class Message;
29}
30
27class Composer : public QObject 31class Composer : public QObject
28{ 32{
29 Q_OBJECT 33 Q_OBJECT
@@ -76,6 +80,7 @@ public slots:
76 void clear(); 80 void clear();
77 81
78private: 82private:
83 QSharedPointer<KMime::Message> assembleMessage();
79 QString m_to; 84 QString m_to;
80 QString m_cc; 85 QString m_cc;
81 QString m_bcc; 86 QString m_bcc;