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/kmail/sievejob.h

133 lines
3.6 KiB

/* -*- c++ -*-
sievejob.h
KMail, the KDE mail client.
Copyright (c) 2002 Marc Mutz <mutz@kde.org>
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 <tqobject.h>
#include <tqvaluestack.h>
#include <tqstring.h>
#include <tqstringlist.h>
#include <tqcstring.h>
#include <kurl.h>
#include <tdeio/global.h>
class TQTextDecoder;
namespace TDEIO {
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<Command> & commands,
TQObject * parent=0, const char * name=0 );
SieveJob( const KURL & url, const TQString & script,
const TQValueStack<Command> & 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( TDEIO::Job *, const TQByteArray & ); // for get
void slotDataReq( TDEIO::Job *, TQByteArray & ); // for put
void slotEntries( TDEIO::Job *, const TDEIO::UDSEntryList & ); // for listDir
void slotResult( TDEIO::Job * ); // for all commands
protected:
KURL mUrl;
TDEIO::Job * mJob;
TQTextDecoder * mDec;
TQString mScript;
TQString mActiveScriptName;
Existence mFileExists;
TQStringList mSieveCapabilities;
TQValueStack<Command> 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: