summaryrefslogtreecommitdiffstats
path: root/framework/src/domain/composercontroller.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-08-10 21:36:17 -0600
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-08-10 21:38:37 -0600
commite07a23c486f67cc2014af3fd8a639a13dd100162 (patch)
treec2e5e739b590ece4941672f3a55508ef06d6d1ac /framework/src/domain/composercontroller.cpp
parente354603dcb42c54ab11c0c393d5a1607ed6343d7 (diff)
downloadkube-e07a23c486f67cc2014af3fd8a639a13dd100162.tar.gz
kube-e07a23c486f67cc2014af3fd8a639a13dd100162.zip
splitAddress does not work if the name has a comma in it
With i.e. "Mollekopf, Christian <mollekopf@example.org>", we'l end up with an address "Mollekopf" and one "Christian <mollekopf@example.org>".
Diffstat (limited to 'framework/src/domain/composercontroller.cpp')
-rw-r--r--framework/src/domain/composercontroller.cpp28
1 files changed, 14 insertions, 14 deletions
diff --git a/framework/src/domain/composercontroller.cpp b/framework/src/domain/composercontroller.cpp
index 311c79f3..e4bd6ae2 100644
--- a/framework/src/domain/composercontroller.cpp
+++ b/framework/src/domain/composercontroller.cpp
@@ -22,7 +22,6 @@
22#include "composercontroller.h" 22#include "composercontroller.h"
23#include <settings/settings.h> 23#include <settings/settings.h>
24#include <KMime/Message> 24#include <KMime/Message>
25#include <KCodecs/KEmailAddress>
26#include <QVariant> 25#include <QVariant>
27#include <QSortFilterProxyModel> 26#include <QSortFilterProxyModel>
28#include <QList> 27#include <QList>
@@ -250,24 +249,25 @@ Selector *ComposerController::identitySelector() const
250 return mIdentitySelector.data(); 249 return mIdentitySelector.data();
251} 250}
252 251
253static void applyAddresses(const QStringList &list, std::function<void(const QByteArray &, const QByteArray &)> callback) 252static void applyAddresses(const KMime::Types::Mailbox::List &list, std::function<void(const QByteArray &, const QByteArray &)> callback)
254{ 253{
255 for (const auto &to : list) { 254 for (const auto &to : list) {
256 QByteArray displayName; 255 callback(to.address(), to.name().toUtf8());
257 QByteArray addrSpec;
258 QByteArray comment;
259 KEmailAddress::splitAddress(to.toUtf8(), displayName, addrSpec, comment);
260 callback(addrSpec, displayName);
261 } 256 }
262} 257}
263 258
264static void applyAddresses(const QString &list, std::function<void(const QByteArray &, const QByteArray &)> callback) 259static void applyAddresses(const QStringList &list, std::function<void(const QByteArray &, const QByteArray &)> callback)
265{ 260{
266 applyAddresses(KEmailAddress::splitAddressList(list), callback); 261 KMime::Types::Mailbox::List mailboxes;
262 for (const auto &s : list) {
263 KMime::Types::Mailbox mb;
264 mb.fromUnicodeString(s);
265 mailboxes << mb;
266 }
267 applyAddresses(mailboxes, callback);
267} 268}
268 269
269 270static QStringList getStringListFromAddresses(const KMime::Types::Mailbox::List &s)
270static QStringList getStringListFromAddresses(const QString &s)
271{ 271{
272 QStringList list; 272 QStringList list;
273 applyAddresses(s, [&](const QByteArray &addrSpec, const QByteArray &displayName) { 273 applyAddresses(s, [&](const QByteArray &addrSpec, const QByteArray &displayName) {
@@ -332,9 +332,9 @@ void ComposerController::addAttachmentPart(KMime::Content *partToAttach)
332 332
333void ComposerController::setMessage(const KMime::Message::Ptr &msg) 333void ComposerController::setMessage(const KMime::Message::Ptr &msg)
334{ 334{
335 mToModel->setStringList(getStringListFromAddresses(msg->to(true)->asUnicodeString())); 335 mToModel->setStringList(getStringListFromAddresses(msg->to(true)->mailboxes()));
336 mCcModel->setStringList(getStringListFromAddresses(msg->cc(true)->asUnicodeString())); 336 mCcModel->setStringList(getStringListFromAddresses(msg->cc(true)->mailboxes()));
337 mBccModel->setStringList(getStringListFromAddresses(msg->bcc(true)->asUnicodeString())); 337 mBccModel->setStringList(getStringListFromAddresses(msg->bcc(true)->mailboxes()));
338 338
339 setSubject(msg->subject(true)->asUnicodeString()); 339 setSubject(msg->subject(true)->asUnicodeString());
340 setBody(MailTemplates::plaintextContent(msg)); 340 setBody(MailTemplates::plaintextContent(msg));