From 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kmail/kmsender_p.h | 151 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 kmail/kmsender_p.h (limited to 'kmail/kmsender_p.h') diff --git a/kmail/kmsender_p.h b/kmail/kmsender_p.h new file mode 100644 index 000000000..e9517974b --- /dev/null +++ b/kmail/kmsender_p.h @@ -0,0 +1,151 @@ +/* KMail Mail Sender + * + * Author: Stefan Taferner + */ +#ifndef __KMAIL_SENDER_P_H__ +#define __KMAIL_SENDER_P_H__ +#include "kmsender.h" + +#include +#include +#include +#include +#include + +class KProcess; + +namespace KIO { + class Job; + class TransferJob; + class Slave; +} + +class KMSendProc: public QObject +{ + Q_OBJECT + +public: + KMSendProc(KMSender*); + virtual ~KMSendProc() {} + + /** Initialize sending of one or more messages. */ + void start() { emit started( doStart() ); } + + /** Send given message. May return before message is sent. */ + bool send( const QString & sender, const QStringList & to, const QStringList & cc, const QStringList & bcc, const QByteArray & message ) { + reset(); return doSend( sender, to, cc, bcc, message ); + } + + /** Cleanup after sending messages. */ + void finish() { doFinish(); deleteLater(); } + + /** Abort sending the current message. Sets mSending to false */ + virtual void abort() = 0; + + /** Returns TRUE if send was successful, and FALSE otherwise. + Returns FALSE if sending is still in progress. */ + bool sendOk() const { return mSendOk; } + + /** Returns error message of last call of failed(). */ + QString lastErrorMessage() const { return mLastErrorMessage; } + +signals: + /** Emitted when the current message is sent or an error occurred. */ + void idle(); + + /** Emitted when the initialization sequence has finished */ + void started(bool); + + +protected: + /** Called to signal a transmission error. The sender then + calls finish() and terminates sending of messages. + Sets mSending to FALSE. */ + void failed(const QString &msg); + + /** 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 QByteArray & message ) = 0; + virtual bool doStart() = 0; + +protected: + KMSender* mSender; + QString mLastErrorMessage; + bool mSendOk : 1; + bool mSending : 1; +}; + + +//----------------------------------------------------------------------------- +class KMSendSendmail: public KMSendProc +{ + Q_OBJECT +public: + KMSendSendmail(KMSender*); + ~KMSendSendmail(); + void start(); + void abort(); + +protected slots: + void receivedStderr(KProcess*,char*,int); + void wroteStdin(KProcess*); + 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 QByteArray & message ); + /** implemented from KMSendProc */ + bool doStart(); + +private: + QByteArray mMsgStr; + char* mMsgPos; + int mMsgRest; + KProcess* mMailerProc; +}; + +//----------------------------------------------------------------------------- +class KMSendSMTP : public KMSendProc +{ +Q_OBJECT +public: + KMSendSMTP(KMSender *sender); + ~KMSendSMTP(); + + void abort(); + +private slots: + void dataReq(KIO::Job *, QByteArray &); + void result(KIO::Job *); + void slaveError(KIO::Slave *, int, const QString &); + +private: + /** implemented from KMSendProc */ + void doFinish(); + /** implemented from KMSendProc */ + bool doSend( const QString & sender, const QStringList & to, const QStringList & cc, const QStringList & bcc, const QByteArray & message ); + /** implemented from KMSendProc */ + bool doStart() { return true; } + + void cleanup(); + +private: + QByteArray mMessage; + uint mMessageLength; + uint mMessageOffset; + + bool mInProcess; + + KIO::TransferJob *mJob; + KIO::Slave *mSlave; +}; + +#endif /* __KMAIL_SENDER_P_H__ */ -- cgit v1.2.1