File indexing completed on 2024-06-23 05:18:30

0001 /*
0002    SPDX-FileCopyrightText: 2017-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "messagefactoryreplyjob.h"
0008 #include "settings/messagecomposersettings.h"
0009 #include <TemplateParser/TemplateParserJob>
0010 
0011 using namespace MessageComposer;
0012 
0013 MessageFactoryReplyJob::MessageFactoryReplyJob(QObject *parent)
0014     : QObject(parent)
0015 {
0016 }
0017 
0018 MessageFactoryReplyJob::~MessageFactoryReplyJob() = default;
0019 
0020 void MessageFactoryReplyJob::start()
0021 {
0022     auto parser =
0023         new TemplateParser::TemplateParserJob(mMsg, (mReplyAll ? TemplateParser::TemplateParserJob::ReplyAll : TemplateParser::TemplateParserJob::Reply), this);
0024     connect(parser, &TemplateParser::TemplateParserJob::parsingDone, this, &MessageFactoryReplyJob::slotReplyDone);
0025     connect(parser, &TemplateParser::TemplateParserJob::parsingFailed, this, &MessageFactoryReplyJob::slotReplyDone);
0026     parser->setIdentityManager(mIdentityManager);
0027     parser->setWordWrap(MessageComposerSettings::wordWrap(), MessageComposerSettings::lineWrapWidth());
0028     parser->setReplyAsHtml(mReplyAsHtml);
0029     if (MessageComposer::MessageComposerSettings::quoteSelectionOnly()) {
0030         parser->setSelection(mSelection);
0031     }
0032     parser->setAllowDecryption(true);
0033     if (!mTemplate.isEmpty()) {
0034         parser->process(mTemplate, mOrigMsg);
0035     } else {
0036         parser->process(mOrigMsg, mCollection.id());
0037     }
0038 }
0039 
0040 void MessageFactoryReplyJob::slotReplyDone()
0041 {
0042     Q_EMIT replyDone(mMsg, mReplyAll);
0043     deleteLater();
0044 }
0045 
0046 void MessageFactoryReplyJob::setCollection(const Akonadi::Collection &collection)
0047 {
0048     mCollection = collection;
0049 }
0050 
0051 void MessageFactoryReplyJob::setReplyAsHtml(bool replyAsHtml)
0052 {
0053     mReplyAsHtml = replyAsHtml;
0054 }
0055 
0056 void MessageFactoryReplyJob::setReplyAll(bool replyAll)
0057 {
0058     mReplyAll = replyAll;
0059 }
0060 
0061 void MessageFactoryReplyJob::setMsg(const KMime::Message::Ptr &msg)
0062 {
0063     mMsg = msg;
0064 }
0065 
0066 void MessageFactoryReplyJob::setTemplate(const QString &tmpl)
0067 {
0068     mTemplate = tmpl;
0069 }
0070 
0071 void MessageFactoryReplyJob::setSelection(const QString &selection)
0072 {
0073     mSelection = selection;
0074 }
0075 
0076 void MessageFactoryReplyJob::setOrigMsg(const KMime::Message::Ptr &origMsg)
0077 {
0078     mOrigMsg = origMsg;
0079 }
0080 
0081 void MessageFactoryReplyJob::setIdentityManager(KIdentityManagementCore::IdentityManager *identityManager)
0082 {
0083     mIdentityManager = identityManager;
0084 }
0085 
0086 #include "moc_messagefactoryreplyjob.cpp"