You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdepim/korn/tdeio.h

209 lines
6.4 KiB

/*
* Copyright (C) Kurt Granroth
* Copyright (C) 2004, Mart Kelder (mart.kde@hccnet.nl)
*
* 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 (granroth@kde.org)
* Changes to poll with TDEIO
* @author Mart Kelder (mart.kde@hccnet.nl)
* $version $Id$
*/
class KKioDrop : public KPollableDrop
{
TQ_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