summaryrefslogtreecommitdiffstats
path: root/korn/tdeio.h
diff options
context:
space:
mode:
Diffstat (limited to 'korn/tdeio.h')
-rw-r--r--korn/tdeio.h208
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