File indexing completed on 2024-06-23 05:15:11

0001 /*
0002     SPDX-FileCopyrightText: 2007 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "transportjob.h"
0008 #include "transport.h"
0009 
0010 #include <QBuffer>
0011 
0012 #include <KLocalizedString>
0013 
0014 using namespace MailTransport;
0015 
0016 class MailTransport::TransportJobPrivate
0017 {
0018 public:
0019     QString sender;
0020     QStringList to;
0021     QStringList cc;
0022     QStringList bcc;
0023     QByteArray data;
0024     bool dsn = false;
0025     Transport *transport = nullptr;
0026     QBuffer *buffer = nullptr;
0027 };
0028 
0029 TransportJob::TransportJob(Transport *transport, QObject *parent)
0030     : KCompositeJob(parent)
0031     , d(new TransportJobPrivate)
0032 {
0033     d->transport = transport;
0034     d->buffer = nullptr;
0035 }
0036 
0037 TransportJob::~TransportJob()
0038 {
0039     delete d->transport;
0040 }
0041 
0042 void TransportJob::setSender(const QString &sender)
0043 {
0044     d->sender = sender;
0045 }
0046 
0047 void TransportJob::setTo(const QStringList &to)
0048 {
0049     d->to = to;
0050 }
0051 
0052 void TransportJob::setCc(const QStringList &cc)
0053 {
0054     d->cc = cc;
0055 }
0056 
0057 void TransportJob::setBcc(const QStringList &bcc)
0058 {
0059     d->bcc = bcc;
0060 }
0061 
0062 void TransportJob::setData(const QByteArray &data)
0063 {
0064     d->data = data;
0065 }
0066 
0067 Transport *TransportJob::transport() const
0068 {
0069     return d->transport;
0070 }
0071 
0072 void TransportJob::setDeliveryStatusNotification(bool enabled)
0073 {
0074     d->dsn = enabled;
0075 }
0076 
0077 QString TransportJob::sender() const
0078 {
0079     return d->sender;
0080 }
0081 
0082 QStringList TransportJob::to() const
0083 {
0084     return d->to;
0085 }
0086 
0087 QStringList TransportJob::cc() const
0088 {
0089     return d->cc;
0090 }
0091 
0092 QStringList TransportJob::bcc() const
0093 {
0094     return d->bcc;
0095 }
0096 
0097 QByteArray TransportJob::data() const
0098 {
0099     return d->data;
0100 }
0101 
0102 QBuffer *TransportJob::buffer()
0103 {
0104     if (!d->buffer) {
0105         d->buffer = new QBuffer(this);
0106         d->buffer->setData(d->data);
0107         d->buffer->open(QIODevice::ReadOnly);
0108         Q_ASSERT(d->buffer->isOpen());
0109     }
0110     return d->buffer;
0111 }
0112 
0113 bool TransportJob::deliveryStatusNotification() const
0114 {
0115     return d->dsn;
0116 }
0117 
0118 void TransportJob::start()
0119 {
0120     if (!transport()->isValid()) {
0121         setError(UserDefinedError);
0122         setErrorText(i18n("The outgoing account \"%1\" is not correctly configured.", transport()->name()));
0123         emitResult();
0124         return;
0125     }
0126     doStart();
0127 }
0128 
0129 #include "moc_transportjob.cpp"