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"