diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-03-09 15:04:39 +0100 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-03-09 15:04:39 +0100 |
commit | f0a88e15144817d854923e8beb63902accbe4cc9 (patch) | |
tree | 3948039d4a122a9907e02ea5aa0d7e11f89f2928 | |
parent | fd31aa9b05ea215e8071cf76fe21ec746204f3a3 (diff) | |
download | kube-f0a88e15144817d854923e8beb63902accbe4cc9.tar.gz kube-f0a88e15144817d854923e8beb63902accbe4cc9.zip |
Prepared a save-as-draft action.
-rw-r--r-- | framework/mail/actions/sinkactions.cpp | 36 | ||||
-rw-r--r-- | framework/mail/composer.cpp | 12 | ||||
-rw-r--r-- | framework/mail/composer.h | 5 |
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 | ||
144 | void Composer::send() | 144 | KMime::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 | ||
163 | void 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 | ||
177 | void Composer::saveAsDraft() | 182 | void 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 | ||
27 | namespace KMime { | ||
28 | class Message; | ||
29 | } | ||
30 | |||
27 | class Composer : public QObject | 31 | class 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 | ||
78 | private: | 82 | private: |
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; |