diff options
Diffstat (limited to 'korn/tdeio.h')
-rw-r--r-- | korn/tdeio.h | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/korn/tdeio.h b/korn/tdeio.h new file mode 100644 index 000000000..2f8f2d8e1 --- /dev/null +++ b/korn/tdeio.h @@ -0,0 +1,208 @@ +/* + * Copyright (C) Kurt Granroth + * Copyright (C) 2004, Mart Kelder ([email protected]) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * tdeio.h -- Declaration of class KKIODrop. + */ +#ifndef KEG_TDEIODROP_H +#define KEG_TDEIODROP_H + +#include "polldrop.h" + +class TQWidget; +class KDropDialog; +class KornMailSubject; +class TDEProcess; +class TDEIO_Count; +class TDEIO_Protocol; +class TDEIO_Subjects; +class TDEIO_Read; +class TDEIO_Delete; +class TDEConfigGroup; +class KURL; +template<class> class TQPtrList; +template<class> class TQValueList; +namespace TDEIO { class Job; class MetaData; class Slave; class TransferJob; } + +/** + * Polling monitor for IMAP4 maildrops. + * @author Kurt Granroth ([email protected]) + * Changes to poll with TDEIO + * @author Mart Kelder ([email protected]) + * $version $Id$ + */ +class KKioDrop : public KPollableDrop +{ + Q_OBJECT + +private: + KURL *_kurl; + TDEIO::MetaData *_metadata; + + TQString _password; + + bool _valid; + + const TDEIO_Protocol * _protocol; + bool _ssl; + + TDEIO_Count *_count; + TDEIO_Subjects *_subjects; + TDEIO_Read *_read; + TDEIO_Delete *_delete; + + int _readSubjectsTotalSteps; + int _deleteMailsTotalSteps; + //For process + TDEProcess *_process; + + //List of mailurls fetched by the last time emails were counted + struct FileInfo { + TQString name; + long size; + }; + TQValueList<FileInfo> *_mailurls; + + /* + * The help-classes of this functions are friend functions, because this way, they can + * access the _kurl and _metadata-values without a function; and this way, no signal or + * public functions are neccesairy to emit a signal from KKioDrop. + */ + friend class TDEIO_Count; + friend class TDEIO_Subjects; + friend class TDEIO_Read; + friend class TDEIO_Delete; + friend class TDEIO_Single_Subjects; +public: + static const char *ProtoConfigKey; + static const char *HostConfigKey; + static const char *PortConfigKey; + static const char *UserConfigKey; + static const char *MailboxConfigKey; + static const char *PassConfigKey; + static const char *SavePassConfigKey; + static const char *MetadataConfigKey; + +public: + /** + * KKioDrop Constructor + */ + KKioDrop(); + KKioDrop( TDEConfigGroup* ); + + /** + * Set the server that will be checked for new mail. + */ + void setKioServer( const TQString & proto, const TQString & server, int port = -1 ); + void setKioServer( const TQString & proto, const TQString & server, int port, + const TDEIO::MetaData metadata, bool ssl, bool setProtocol = true ); //Last argument inits _protocol + + /** Set the account information for the PROTO server. */ + void setUser( const TQString & user, const TQString & password, const TQString & mailbox, const TQString & auth ); + + // The next functions return settings + TQString protocol() const; + TQString server() const; + int port() const; + + TQString user() const; + TQString password() const; + TQString mailbox() const; + TQString auth() const; + + virtual void recheck(); + virtual void forceRecheck(); + + virtual bool valid(); + + /** + * KKioDrop Destructor + */ + virtual ~KKioDrop(); + + virtual bool canReadSubjects(void); + virtual TQValueVector<KornMailSubject> * doReadSubjects(bool * stop); + + virtual bool canDeleteMails(); + virtual bool deleteMails(TQPtrList<const KornMailId> * ids, bool * stop); + + virtual bool canReadMail (); + virtual TQString readMail(const KornMailId * id, bool * stop); + + virtual KMailDrop* clone () const ; + virtual bool readConfigGroup ( const TQMap< TQString, TQString >& map, const Protocol * protocol ); + virtual bool writeConfigGroup ( TDEConfigBase& cfg ) const; + virtual TQString type() const { return TQString::fromUtf8("tdeio"); } + + virtual bool synchrone() const { return false; } //class is not synchrone + + //virtual void addConfigPage( KDropCfgDialog * ); + + virtual bool asynchrone() const { return true; } + +private: + KKioDrop& operator = ( const KKioDrop& ); + //static void encrypt( TQString& str ); + //static void decrypt( TQString& str ); + + /* + * The next functions are called from the help-classes (which are friend of the class). + * The only thing this functions do is emitting signals. + */ + void emitRechecked() { emit rechecked(); } + void emitChanged( int value ) { emit changed( value, this ); } + + void emitReadSubjectsReady( bool success ) { emit readSubjectsReady( success ); } + void emitReadSubjectsRead( KornMailSubject * subject ) { emit readSubject( subject ); } + void emitReadSubjectsTotalSteps( int value ) { _readSubjectsTotalSteps = value; emit readSubjectsTotalSteps( value ); } + void emitReadSubjectsProgress( int value ) { emit readSubjectsProgress( _readSubjectsTotalSteps - value ); } + + void emitReadMailReady( TQString* msg ) { emit readMailReady( msg ); } + + void emitDeleteMailsReady( bool value ) { emit deleteMailsReady( value ); } + void emitDeleteMailsTotalSteps( int value ) { _deleteMailsTotalSteps = value; emit deleteMailsTotalSteps( value ); } + void emitDeleteMailsProgress( int value ) { emit deleteMailsProgress( _deleteMailsTotalSteps - value ); } + + void emitShowPassivePopup( TQPtrList< KornMailSubject > *subject, int total ) + { emit showPassivePopup( subject, total, passiveDate(), this->realName() ); } + void emitShowPassivePopup( const TQString& error ) + { if( passivePopup() ) { emit showPassivePopup( error, this->realName() ); } } + void emitValidChanged() { emit validChanged( valid() ); } + +private slots: + void slotConnectionError( int, const TQString& ); + void slotConnectionWarning( const TQString& ); + void slotConnectionInfoMessage( const TQString& ); + +protected: + //The next functions are needed for Process; + virtual bool startProcess(); + virtual bool stopProcess(); + +public slots: + virtual void readSubjectsCanceled(); + virtual void readMailCanceled(); + virtual void deleteMailsCanceled(); + +private slots: + //For Process too + void processExit(TDEProcess*); + void receivedStdout( TDEProcess *, char *, int); +}; +#endif // KEG_TDEIODROP_H |