|
|
|
|
@ -18,7 +18,7 @@ |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
#include "createreplymessagejob.h" |
|
|
|
|
#include "config-kmail.h" |
|
|
|
|
|
|
|
|
|
#include "kmkernel.h" |
|
|
|
|
#include "../util.h" |
|
|
|
|
#include "composer.h" |
|
|
|
|
@ -27,16 +27,23 @@ |
|
|
|
|
#include <KEmailAddress> |
|
|
|
|
#include <MailCommon/MailUtil> |
|
|
|
|
#include <QUrl> |
|
|
|
|
#include <QDebug> |
|
|
|
|
|
|
|
|
|
CreateReplyMessageJob::CreateReplyMessageJob(QObject *parent) |
|
|
|
|
: QObject(parent) |
|
|
|
|
#ifdef KDEPIM_TEMPLATEPARSER_ASYNC_BUILD |
|
|
|
|
, mMessageFactory(nullptr) |
|
|
|
|
#endif |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
qDebug() << " CreateReplyMessageJob::CreateReplyMessageJob(QObject *parent)"<<this; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
CreateReplyMessageJob::~CreateReplyMessageJob() |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
#ifdef KDEPIM_TEMPLATEPARSER_ASYNC_BUILD |
|
|
|
|
delete mMessageFactory; |
|
|
|
|
#endif |
|
|
|
|
qDebug() << " CreateReplyMessageJob::~CreateReplyMessageJob(QObject *parent)"<<this; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void CreateReplyMessageJob::setSettings(const CreateReplyMessageJobSettings &settings) |
|
|
|
|
@ -45,7 +52,11 @@ void CreateReplyMessageJob::setSettings(const CreateReplyMessageJobSettings &set |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// Small helper function to get the composer context from a reply
|
|
|
|
|
#ifdef KDEPIM_TEMPLATEPARSER_ASYNC_BUILD |
|
|
|
|
static KMail::Composer::TemplateContext replyContext(MessageComposer::MessageFactoryNG::MessageReply reply) |
|
|
|
|
#else |
|
|
|
|
static KMail::Composer::TemplateContext replyContext(MessageComposer::MessageFactory::MessageReply reply) |
|
|
|
|
#endif |
|
|
|
|
{ |
|
|
|
|
if (reply.replyAll) { |
|
|
|
|
return KMail::Composer::ReplyToAll; |
|
|
|
|
@ -56,6 +67,25 @@ static KMail::Composer::TemplateContext replyContext(MessageComposer::MessageFac |
|
|
|
|
|
|
|
|
|
void CreateReplyMessageJob::start() |
|
|
|
|
{ |
|
|
|
|
#ifdef KDEPIM_TEMPLATEPARSER_ASYNC_BUILD |
|
|
|
|
qDebug() << " void CreateReplyMessageJob::start()"; |
|
|
|
|
mMessageFactory = new MessageComposer::MessageFactoryNG(mSettings.mMsg, mSettings.mItem.id(), MailCommon::Util::updatedCollection(mSettings.mItem.parentCollection())); |
|
|
|
|
mMessageFactory->setIdentityManager(KMKernel::self()->identityManager()); |
|
|
|
|
mMessageFactory->setFolderIdentity(MailCommon::Util::folderIdentity(mSettings.mItem)); |
|
|
|
|
mMessageFactory->setMailingListAddresses(KMail::Util::mailingListsFromMessage(mSettings.mItem)); |
|
|
|
|
mMessageFactory->putRepliesInSameFolder(KMail::Util::putRepliesInSameFolder(mSettings.mItem)); |
|
|
|
|
mMessageFactory->setSelection(mSettings.mSelection); |
|
|
|
|
if (!mSettings.mTemplate.isEmpty()) { |
|
|
|
|
mMessageFactory->setTemplate(mSettings.mTemplate); |
|
|
|
|
} |
|
|
|
|
if (mSettings.mNoQuote) { |
|
|
|
|
mMessageFactory->setQuote(false); |
|
|
|
|
} |
|
|
|
|
connect(mMessageFactory, &MessageComposer::MessageFactoryNG::createReplyDone, this, &CreateReplyMessageJob::slotCreateReplyDone); |
|
|
|
|
mMessageFactory->setReplyStrategy(mSettings.m_replyStrategy); |
|
|
|
|
mMessageFactory->createReplyAsync(); |
|
|
|
|
|
|
|
|
|
#else |
|
|
|
|
MessageComposer::MessageFactory factory(mSettings.mMsg, mSettings.mItem.id(), MailCommon::Util::updatedCollection(mSettings.mItem.parentCollection())); |
|
|
|
|
factory.setIdentityManager(KMKernel::self()->identityManager()); |
|
|
|
|
factory.setFolderIdentity(MailCommon::Util::folderIdentity(mSettings.mItem)); |
|
|
|
|
@ -88,5 +118,29 @@ void CreateReplyMessageJob::start() |
|
|
|
|
win->setFocusToEditor(); |
|
|
|
|
win->show(); |
|
|
|
|
deleteLater(); |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#ifdef KDEPIM_TEMPLATEPARSER_ASYNC_BUILD |
|
|
|
|
void CreateReplyMessageJob::slotCreateReplyDone(const MessageComposer::MessageFactoryNG::MessageReply &reply) |
|
|
|
|
{ |
|
|
|
|
qDebug() << " void CreateReplyMessageJob::slotCreateReplyDone(const MessageComposer::MessageFactoryNG::MessageReply &reply)"; |
|
|
|
|
KMime::Message::Ptr rmsg = reply.msg; |
|
|
|
|
if (mSettings.mUrl.isValid()) { |
|
|
|
|
rmsg->to()->fromUnicodeString(KEmailAddress::decodeMailtoUrl(mSettings.mUrl), "utf-8"); |
|
|
|
|
} |
|
|
|
|
bool lastEncrypt = false; |
|
|
|
|
bool lastSign = false; |
|
|
|
|
KMail::Util::lastEncryptAndSignState(lastEncrypt, lastSign, mSettings.mMsg); |
|
|
|
|
|
|
|
|
|
KMail::Composer *win = KMail::makeComposer(rmsg, |
|
|
|
|
lastSign, |
|
|
|
|
lastEncrypt, |
|
|
|
|
(mSettings.m_replyStrategy == MessageComposer::ReplyNone) ? KMail::Composer::Reply : replyContext(reply), |
|
|
|
|
0, |
|
|
|
|
mSettings.mSelection, mSettings.mTemplate); |
|
|
|
|
win->setFocusToEditor(); |
|
|
|
|
win->show(); |
|
|
|
|
deleteLater(); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|