/* * 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_KIO_PROTO_H #define MK_KIO_PROTO_H /* * KIO 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 #include #include #include "protocol.h" #include "kio.h" class KIO_Protocol : public Protocol { public: /* * Constuctor; empty */ KIO_Protocol() {} /* * Destructor; empty too */ virtual ~KIO_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 KIO_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_KIO_PROTO_H