diff --git a/kmsender.cpp b/kmsender.cpp index 12c7bc49b..2e431f199 100644 --- a/kmsender.cpp +++ b/kmsender.cpp @@ -547,7 +547,6 @@ void KMSender::doSendMsgAux() // start sending the current message - mSendProc->preSendInit(); setStatusMsg(i18n("%3: subject of message","Sending message %1 of %2: %3") .arg(mSentMessages+mFailedMessages+1).arg(mTotalMessages) .arg(mCurrentMsg->subject())); @@ -627,7 +626,7 @@ void KMSender::slotIdle() QString msg; QString errString; if (mSendProc) - errString = mSendProc->message(); + errString = mSendProc->lastErrorMessage(); if (mSendAborted) { // sending of message aborted @@ -816,18 +815,21 @@ void KMSender::setStatusByLink(const KMMessage *aMsg) //============================================================================= //============================================================================= -KMSendProc::KMSendProc(KMSender* aSender): QObject() +KMSendProc::KMSendProc( KMSender * sender ) + : QObject( 0 ), + mSender( sender ), + mLastErrorMessage(), + mSendOk( false ), + mSending( false ) { - mSender = aSender; - preSendInit(); } //----------------------------------------------------------------------------- -void KMSendProc::preSendInit(void) +void KMSendProc::reset() { mSending = FALSE; mSendOk = FALSE; - mMsg = QString::null; + mLastErrorMessage = QString::null; } //----------------------------------------------------------------------------- @@ -835,7 +837,7 @@ void KMSendProc::failed(const QString &aMsg) { mSending = FALSE; mSendOk = FALSE; - mMsg = aMsg; + mLastErrorMessage = aMsg; } //----------------------------------------------------------------------------- @@ -913,7 +915,7 @@ void KMSendSendmail::abort() idle(); } -bool KMSendSendmail::send( const QString & sender, const QStringList & to, const QStringList & cc, const QStringList & bcc, const QCString & message ) { +bool KMSendSendmail::doSend( const QString & sender, const QStringList & to, const QStringList & cc, const QStringList & bcc, const QCString & message ) { mMailerProc->clearArguments(); *mMailerProc << mSender->transportInfo()->host << "-i" << "-f" << sender @@ -966,7 +968,7 @@ void KMSendSendmail::receivedStderr(KProcess *proc, char *buffer, int buflen) { assert(proc!=0); Q_UNUSED( proc ); - mMsg.replace(mMsg.length(), buflen, buffer); + mLastErrorMessage.replace(mLastErrorMessage.length(), buflen, buffer); } @@ -1001,7 +1003,7 @@ KMSendSMTP::~KMSendSMTP() if (mJob) mJob->kill(); } -bool KMSendSMTP::send( const QString & sender, const QStringList & to, const QStringList & cc, const QStringList & bcc, const QCString & message ) { +bool KMSendSMTP::doSend( const QString & sender, const QStringList & to, const QStringList & cc, const QStringList & bcc, const QCString & message ) { QString query = "headers=0&from="; query += KURL::encode_string( sender ); diff --git a/kmsender_p.h b/kmsender_p.h index 68b68765f..f459e0351 100644 --- a/kmsender_p.h +++ b/kmsender_p.h @@ -32,11 +32,10 @@ public: /** Initialize sending of one or more messages. */ virtual void start(); - /** Initializes variables directly before send() is called. */ - virtual void preSendInit(); - /** Send given message. May return before message is sent. */ - virtual bool send( const QString & sender, const QStringList & to, const QStringList & cc, const QStringList & bcc, const QCString & message ) = 0; + bool send( const QString & sender, const QStringList & to, const QStringList & cc, const QStringList & bcc, const QCString & message ) { + reset(); return doSend( sender, to, cc, bcc, message ); + } /** Cleanup after sending messages. */ void finish() { doFinish(); deleteLater(); } @@ -49,7 +48,7 @@ public: bool sendOk() const { return mSendOk; } /** Returns error message of last call of failed(). */ - QString message() const { return mMsg; } + QString lastErrorMessage() const { return mLastErrorMessage; } signals: /** Emitted when the current message is sent or an error occurred. */ @@ -68,13 +67,18 @@ protected: /** Informs the user about what is going on. */ void statusMsg(const QString&); +private: + void reset(); + private: virtual void doFinish() = 0; + virtual bool doSend( const QString & sender, const QStringList & to, const QStringList & cc, const QStringList & bcc, const QCString & message ) = 0; protected: - bool mSendOk, mSending; - QString mMsg; KMSender* mSender; + QString mLastErrorMessage; + bool mSendOk : 1; + bool mSending : 1; }; @@ -86,7 +90,6 @@ public: KMSendSendmail(KMSender*); ~KMSendSendmail(); void start(); - bool send( const QString & sender, const QStringList & to, const QStringList & cc, const QStringList & bcc, const QCString & message ); void abort(); protected slots: @@ -95,7 +98,10 @@ protected slots: void sendmailExited(KProcess*); private: + /** implemented from KMSendProc */ void doFinish(); + /** implemented from KMSendProc */ + bool doSend( const QString & sender, const QStringList & to, const QStringList & cc, const QStringList & bcc, const QCString & message ); private: QCString mMsgStr; @@ -112,7 +118,6 @@ public: KMSendSMTP(KMSender *sender); ~KMSendSMTP(); - bool send( const QString & sender, const QStringList & to, const QStringList & cc, const QStringList & bcc, const QCString & message ); void abort(); private slots: @@ -123,6 +128,9 @@ private slots: private: /** implemented from KMSendProc */ void doFinish(); + /** implemented from KMSendProc */ + bool doSend( const QString & sender, const QStringList & to, const QStringList & cc, const QStringList & bcc, const QCString & message ); + void cleanup(); private: