/*
* 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
*/
# ifndef MK_TDEIO_PROTO_H
# define MK_TDEIO_PROTO_H
/*
* TDEIO can handle multiple protocols . But some protocols have their own
* manipulations of KURL or MetaData , and some protocols could do more then other
* protocols . So , this class is the generic class of a class specified
* by a protocol .
*/
class TQString ;
# include <tdeio/global.h>
# include <tdelocale.h>
# include <tqstringlist.h>
# include "protocol.h"
# include "tdeio.h"
class TDEIO_Protocol : public Protocol
{
public :
/*
* Constuctor ; empty
*/
TDEIO_Protocol ( ) { }
/*
* Destructor ; empty too
*/
virtual ~ TDEIO_Protocol ( ) { }
/*
* Public enumeration
*/
enum DeleteTypeEnum { get , del } ;
/**
* This are the implementation of the Protocol - functions
*/
virtual const Protocol * getProtocol ( TDEConfigGroup * ) const { return this ; }
virtual KMailDrop * createMaildrop ( TDEConfigGroup * config ) const { return new KKioDrop ( config ) ; }
virtual TQMap < TQString , TQString > * createConfig ( TDEConfigGroup * group , const TQString & password ) const ;
/*
* @ return : the name of the tdeio_slave
*/
virtual TQString protocol ( bool ) const { return " file " ; }
/*
* @ return : the name of the protocol used by the configuration
*/
virtual TQString configName ( ) const { return " not specified " ; }
virtual bool connectionBased ( ) const { return false ; }
/*
* The next four functions return the [ capebilities ] of a protocol .
* fullMessage means that by downloaden , the whole message is downloaded .
* if it is false , only the headers should be downloaded .
*/
virtual bool canReadSubjects ( ) const { return false ; }
virtual bool canDeleteMail ( ) const { return false ; }
virtual bool canReadMail ( ) const { return false ; }
virtual bool fullMessage ( ) const { return false ; }
/*
* The following lines are the options in the configuration ;
* true means that an option is enabled ;
* false means that the option is disabled .
*/
//virtual int fields() const { return server | port | username | password | mailbox; }
//virtual int urlFields() const { return no_fields; }
virtual unsigned short defaultPort ( bool ) const { return 0 ; }
/*
* This sets the string of such fields in Configuration
*/
virtual TQString serverName ( ) const { return i18n ( " Server: " ) ; }
virtual TQString portName ( ) const { return i18n ( " Port: " ) ; }
virtual TQString usernameName ( ) const { return i18n ( " Username: " ) ; }
virtual TQString mailboxName ( ) const { return i18n ( " Mailbox: " ) ; }
virtual TQString passwordName ( ) const { return i18n ( " Password: " ) ; }
virtual TQString savePasswordName ( ) const { return i18n ( " Save password " ) ; }
virtual TQString authName ( ) const { return i18n ( " Authentication: " ) ; }
/*
* The next function returns the method of deleting : some protoocols
* like to delete files with TDEIO : : get ; other with TDEIO : : del
*/
virtual DeleteTypeEnum deleteFunction ( ) const { return del ; }
/*
* The next options are the input for the Authentication Combo , seperated by ' | ' .
* The name should be the same as the auth - metadata .
*/
virtual TQStringList authList ( ) const { return TQStringList : : split ( ' | ' , " Plain " , false ) ; }
/*
* The next functions are manipulations of an KURL .
* At some points in the code , a KURL is used . But sometimes ,
* these have to had a little retouch . That is possible with these function .
*
* For example , by imap , by default , the whole message is downloaded and marked as reed .
* By changing an option to the KURL path , this can be prevented .
*
* The most functions are recognized by name .
* commitDelete return true if a protocol has to confirm a deletion .
* It will be called after marking the messages for deletion .
* deleteCommitKURL is the KURL manipulator ; the KURL is as in the settings .
* That KURL isn ' t retouch by deleteMailKURL .
*/
virtual void recheckConnectKURL ( KURL & , TDEIO : : MetaData & ) const { }
virtual void recheckKURL ( KURL & , TDEIO : : MetaData & ) const { } ;
virtual void readSubjectConnectKURL ( KURL & kurl , TDEIO : : MetaData & ) const { kurl . setPath ( " " ) ; }
virtual void readSubjectKURL ( KURL & , TDEIO : : MetaData & ) const { } //For editing a kurl (adding extra options)
virtual void deleteMailConnectKURL ( KURL & kurl , TDEIO : : MetaData & ) const { kurl . setPath ( " " ) ; }
virtual void deleteMailKURL ( KURL & , TDEIO : : MetaData & ) const { }
virtual bool commitDelete ( ) const { return false ; }
virtual void deleteCommitKURL ( KURL & , TDEIO : : MetaData & ) const { }
virtual void readMailKURL ( KURL & , TDEIO : : MetaData & ) const { }
virtual const TDEIO_Protocol * getKIOProtocol ( ) const { return this ; }
virtual void readEntries ( TQMap < TQString , TQString > * ) const ;
virtual void readEntries ( TQMap < TQString , TQString > * , TQMap < TQString , TQString > * ) const = 0 ;
protected :
/*
* This enumeration is used when returning the capebilitys of a protocol
*/
enum Fields { no_fields = 0 , server = 1 , port = 2 , username = 4 , password = 8 ,
mailbox = 16 , save_password = 32 , metadata = 64 } ;
void clearFields ( TQMap < TQString , TQString > * map , const Fields fields ) const ;
} ;
# endif //MK_TDEIO_PROTO_H