/* -*- c++ -*- sievejob.h KMail, the KDE mail client. Copyright (c) 2002 Marc Mutz This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2.0, as published by the Free Software Foundation. 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, US */ #ifndef __KMAIL_SIEVE_JOB_H__ #define __KMAIL_SIEVE_JOB_H__ #include #include #include #include #include #include #include class TQTextDecoder; namespace KIO { class Job; } namespace KMail { class SieveJob : public TQObject { Q_OBJECT protected: enum Command { Get, Put, Activate, Deactivate, SearchActive, List, Delete }; SieveJob( const KURL & url, const TQString & script, const TQValueStack & commands, TQObject * parent=0, const char * name=0 ); SieveJob( const KURL & url, const TQString & script, const TQValueStack & commands, bool showProgressInfo, TQObject * parent=0, const char * name=0 ); virtual ~SieveJob(); public: enum Existence { DontKnow, Yes, No }; /** * Store a Sieve script. If @param makeActive is set, also mark the * script active */ static SieveJob * put( const KURL & dest, const TQString & script, bool makeActive, bool wasActive ); /** * Get a specific Sieve script */ static SieveJob * get( const KURL & src, bool showProgressInfo=true ); /** * List all available scripts */ static SieveJob * list( const KURL & url ); static SieveJob * del( const KURL & url ); static SieveJob * activate( const KURL & url ); static SieveJob * desactivate( const KURL & url ); void kill( bool quiet=true ); const TQStringList & sieveCapabilities() const { return mSieveCapabilities; } bool fileExists() const { return mFileExists; } signals: void gotScript( KMail::SieveJob * job, bool success, const TQString & script, bool active ); /** * We got the list of available scripts * * @param scriptList is the list of script filenames * @param activeScript lists the filename of the active script, or an * empty string if no script is active. */ void gotList( KMail::SieveJob *job, bool success, const TQStringList &scriptList, const TQString &activeScript ); void result( KMail::SieveJob * job, bool success, const TQString & script, bool active ); void item( KMail::SieveJob * job, const TQString & filename, bool active ); protected: void schedule( Command command, bool showProgressInfo ); protected slots: void slotData( KIO::Job *, const TQByteArray & ); // for get void slotDataReq( KIO::Job *, TQByteArray & ); // for put void slotEntries( KIO::Job *, const KIO::UDSEntryList & ); // for listDir void slotResult( KIO::Job * ); // for all commands protected: KURL mUrl; KIO::Job * mJob; TQTextDecoder * mDec; TQString mScript; TQString mActiveScriptName; Existence mFileExists; TQStringList mSieveCapabilities; TQValueStack mCommands; bool mShowProgressInfo; // List of Sieve scripts on the server, used by @ref list() TQStringList mAvailableScripts; }; } // namespace KMail #endif // __KMAIL_SIEVE_JOB_H__ // vim: set noet sts=2 ts=8 sw=2: