transportjob.cpp
00001 /* 00002 Copyright (c) 2007 Volker Krause <vkrause@kde.org> 00003 00004 This library is free software; you can redistribute it and/or modify it 00005 under the terms of the GNU Library General Public License as published by 00006 the Free Software Foundation; either version 2 of the License, or (at your 00007 option) any later version. 00008 00009 This library is distributed in the hope that it will be useful, but WITHOUT 00010 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00011 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public 00012 License for more details. 00013 00014 You should have received a copy of the GNU Library General Public License 00015 along with this library; see the file COPYING.LIB. If not, write to the 00016 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 00017 02110-1301, USA. 00018 */ 00019 00020 #include "transportjob.h" 00021 #include "transport.h" 00022 00023 #include <QBuffer> 00024 00025 #include <KLocalizedString> 00026 00027 using namespace MailTransport; 00028 00029 class MailTransport::TransportJob::Private 00030 { 00031 public: 00032 Transport *transport; 00033 QString sender; 00034 QStringList to; 00035 QStringList cc; 00036 QStringList bcc; 00037 QByteArray data; 00038 QBuffer *buffer; 00039 }; 00040 00041 TransportJob::TransportJob( Transport *transport, QObject *parent ) 00042 : KCompositeJob( parent ), d( new Private ) 00043 { 00044 d->transport = transport; 00045 d->buffer = 0; 00046 } 00047 00048 TransportJob::~ TransportJob() 00049 { 00050 delete d->transport; 00051 delete d; 00052 } 00053 00054 void TransportJob::setSender( const QString &sender ) 00055 { 00056 d->sender = sender; 00057 } 00058 00059 void TransportJob::setTo( const QStringList &to ) 00060 { 00061 d->to = to; 00062 } 00063 00064 void TransportJob::setCc( const QStringList &cc ) 00065 { 00066 d->cc = cc; 00067 } 00068 00069 void TransportJob::setBcc( const QStringList &bcc ) 00070 { 00071 d->bcc = bcc; 00072 } 00073 00074 void TransportJob::setData( const QByteArray &data ) 00075 { 00076 d->data = data; 00077 } 00078 00079 Transport *TransportJob::transport() const 00080 { 00081 return d->transport; 00082 } 00083 00084 QString TransportJob::sender() const 00085 { 00086 return d->sender; 00087 } 00088 00089 QStringList TransportJob::to() const 00090 { 00091 return d->to; 00092 } 00093 00094 QStringList TransportJob::cc() const 00095 { 00096 return d->cc; 00097 } 00098 00099 QStringList TransportJob::bcc() const 00100 { 00101 return d->bcc; 00102 } 00103 00104 QByteArray TransportJob::data() const 00105 { 00106 return d->data; 00107 } 00108 00109 QBuffer *TransportJob::buffer() 00110 { 00111 if ( !d->buffer ) { 00112 d->buffer = new QBuffer( this ); 00113 d->buffer->setData( d->data ); 00114 d->buffer->open( QIODevice::ReadOnly ); 00115 Q_ASSERT( d->buffer->isOpen() ); 00116 } 00117 return d->buffer; 00118 } 00119 00120 void TransportJob::start() 00121 { 00122 if ( !transport()->isValid() ) { 00123 setError( UserDefinedError ); 00124 setErrorText( i18n( "The mail transport \"%1\" is not correctly configured.", 00125 transport()->name() ) ); 00126 emitResult(); 00127 return; 00128 } 00129 doStart(); 00130 }