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.
209 lines
5.1 KiB
209 lines
5.1 KiB
/* KMail Account: Abstract base class for accounts. |
|
* |
|
* Author: Stefan Taferner <taferner@alpin.or.at> |
|
*/ |
|
#ifndef kmaccount_h |
|
#define kmaccount_h |
|
|
|
#include <qstring.h> |
|
#include <qptrlist.h> |
|
#include <qvaluelist.h> |
|
#include <qtimer.h> |
|
#include <qsignal.h> |
|
#include <qguardedptr.h> |
|
#include <kprocess.h> |
|
|
|
class KMAcctMgr; |
|
class KMFolder; |
|
class KMAcctFolder; |
|
class KConfig; |
|
class KMMessage; |
|
|
|
|
|
class KMPrecommand : public QObject |
|
{ |
|
Q_OBJECT |
|
|
|
public: |
|
KMPrecommand(const QString &precommand, QObject *parent = 0); |
|
virtual ~KMPrecommand(); |
|
bool start(); |
|
|
|
protected slots: |
|
void precommandExited(KProcess *); |
|
|
|
signals: |
|
void finished(bool); |
|
|
|
protected: |
|
KShellProcess mPrecommandProcess; |
|
QString mPrecommand; |
|
}; |
|
|
|
|
|
class KMAccount: public QObject |
|
{ |
|
Q_OBJECT |
|
friend class KMAcctMgr; |
|
|
|
public: |
|
virtual ~KMAccount(); |
|
|
|
/** The default check interval */ |
|
static const int DefaultCheckInterval = 5; |
|
|
|
/** |
|
* Returns type of the account |
|
*/ |
|
virtual QString type() const { return QString::null; } |
|
|
|
/** |
|
* Returns account name |
|
*/ |
|
const QString& name(void) const { return mName; } |
|
virtual void setName(const QString&); |
|
|
|
/** |
|
* Set password to "" (empty string) |
|
*/ |
|
virtual void clearPasswd(); |
|
|
|
/** |
|
* Set intelligent default values to the fields of the account. |
|
*/ |
|
virtual void init(void) = 0; |
|
|
|
/** |
|
* A weak assignment operator |
|
*/ |
|
virtual void pseudoAssign(KMAccount*) = 0; |
|
|
|
/** |
|
* There can be exactly one folder that is fed by messages from an |
|
* account. */ |
|
KMFolder* folder(void) const { return ((KMFolder*)((KMAcctFolder*)mFolder)); } |
|
virtual void setFolder(KMFolder*, bool addAccount = false); |
|
|
|
/** |
|
* Process new mail for this account if one arrived. Returns TRUE if new |
|
* mail has been found. Whether the mail is automatically loaded to |
|
* an associated folder or not depends on the type of the account. |
|
*/ |
|
virtual void processNewMail(bool interactive) = 0; |
|
|
|
/** |
|
* Read config file entries. This method is called by the account |
|
* manager when a new account is created. The config group is |
|
* already properly set by the caller. |
|
*/ |
|
virtual void readConfig(KConfig& config); |
|
|
|
/** |
|
* Write all account information to given config file. The config group |
|
* is already properly set by the caller. |
|
*/ |
|
virtual void writeConfig(KConfig& config); |
|
|
|
/** |
|
* Set/get interval for checking if new mail arrived (in minutes). |
|
* An interval of zero (or less) disables the automatic checking. |
|
*/ |
|
virtual void setCheckInterval(int aInterval); |
|
int checkInterval(void) const { return mInterval; } |
|
|
|
/** |
|
* This can be used to provide a more complex calculation later if we want |
|
*/ |
|
inline const int defaultCheckInterval(void) const { return DefaultCheckInterval; } |
|
|
|
/** |
|
* Set/get whether account should be part of the accounts checked |
|
* with "Check Mail". |
|
*/ |
|
virtual void setCheckExclude(bool aExclude); |
|
int checkExclude(void) const { return mExclude; } |
|
|
|
/** |
|
* Pre command |
|
*/ |
|
const QString& precommand(void) const { return mPrecommand; } |
|
virtual void setPrecommand(const QString &cmd) { mPrecommand = cmd; } |
|
|
|
/** |
|
* Runs the precommand. If the precommand is empty, the method |
|
* will just return success and not actually do anything |
|
* |
|
* @return True if successful, false otherwise |
|
*/ |
|
bool runPrecommand(const QString &precommand); |
|
|
|
/** |
|
* Very primitive en/de-cryption so that the password is not |
|
* readable in the config file. But still very easy breakable. |
|
*/ |
|
static QString encryptStr(const QString& inStr); |
|
static QString decryptStr(const QString& inStr) { return encryptStr(inStr); } |
|
|
|
static QString importPassword(const QString &); |
|
|
|
signals: |
|
virtual void finishedCheck(bool newMail); |
|
virtual void newMailsProcessed(int numberOfNewMails); |
|
|
|
protected slots: |
|
virtual void mailCheck(); |
|
virtual void sendReceipts(); |
|
virtual void precommandExited(bool); |
|
|
|
protected: |
|
KMAccount(KMAcctMgr* owner, const QString& accountName); |
|
|
|
/** |
|
* Does filtering and storing in a folder for the given message. |
|
* Shall be called from within processNewMail() to process the new |
|
* messages. Returns false if failed to add new message. |
|
*/ |
|
virtual bool processNewMsg(KMMessage* msg); |
|
|
|
/** |
|
* Send receipt of message back to sender (confirming |
|
* delivery). Checks the config settings, calls |
|
* @ref KMMessage::createDeliveryReceipt and queues the resulting |
|
* message in @p mReceipts. |
|
*/ |
|
virtual void sendReceipt(KMMessage* msg); |
|
|
|
/** |
|
* Install/deinstall automatic new-mail checker timer. |
|
*/ |
|
virtual void installTimer(); |
|
virtual void deinstallTimer(); |
|
|
|
protected: |
|
QString mName; |
|
QString mPrecommand; |
|
KMAcctMgr* mOwner; |
|
QGuardedPtr<KMAcctFolder> mFolder; |
|
QTimer *mTimer, mReceiptTimer; |
|
int mInterval; |
|
bool mExclude; |
|
bool mCheckingMail; |
|
bool mPrecommandSuccess; |
|
QValueList<KMMessage*> mReceipts; |
|
|
|
private: |
|
/** |
|
* avoid compiler warning about hidden virtual |
|
*/ |
|
virtual void setName( const char *name ) { QObject::setName( name ); } |
|
}; |
|
|
|
class KMAcctList: public QPtrList<KMAccount> |
|
{ |
|
public: |
|
virtual ~KMAcctList() {} |
|
/** some compilers fail otherwise */ |
|
short _dummy; |
|
}; |
|
|
|
#endif /*kmaccount_h*/
|
|
|