00001
00002
00003
00004
00005
00006
#ifndef kmaccount_h
00007
#define kmaccount_h
00008
00009
#include <kprocess.h>
00010
#include <kaccount.h>
00011
00012
#include <qtimer.h>
00013
#include <qsignal.h>
00014
#include <qstring.h>
00015
#include <qptrlist.h>
00016
#include <qvaluelist.h>
00017
#include <qguardedptr.h>
00018
#include <qmap.h>
00019
00020
class KMAcctMgr;
00021
class KMFolder;
00022
class KMAcctFolder;
00023
class KConfig;
00024
class KMMessage;
00025
class KMFolderJob;
00026
namespace KMail {
00027
class FolderJob;
00028 }
00029
namespace KPIM {
class ProgressItem; }
00030
using KMail::FolderJob;
00031
using KPIM::ProgressItem;
00032
00033
class KMPrecommand :
public QObject
00034 {
00035 Q_OBJECT
00036
00037
public:
00038 KMPrecommand(
const QString &precommand,
QObject *parent = 0);
00039
virtual ~KMPrecommand();
00040
bool start();
00041
00042
protected slots:
00043
void precommandExited(KProcess *);
00044
00045 signals:
00046
void finished(
bool);
00047
00048
protected:
00049 KProcess mPrecommandProcess;
00050
QString mPrecommand;
00051 };
00052
00053
00054
class KMAccount:
public QObject,
public KAccount
00055 {
00056 Q_OBJECT
00057
friend class KMAcctMgr;
00058
friend class FolderJob;
00059
friend class KMFolderCachedImap;
00060
00061
public:
00062
virtual ~KMAccount();
00063
00064
enum CheckStatus { CheckOK, CheckIgnored, CheckCanceled, CheckAborted,
00065 CheckError };
00066
00068
static const int DefaultCheckInterval = 5;
00069
00073
virtual QString type()
const {
return QString::null; }
00074
00078
virtual void setName(
const QString&);
00079
00083
virtual QString name()
const {
return KAccount::name(); }
00084
00088
virtual void clearPasswd();
00089
00093
virtual void init();
00094
00098
virtual void pseudoAssign(
const KMAccount * a );
00099
00103
KMFolder* folder(
void)
const {
return ((
KMFolder*)((
KMAcctFolder*)mFolder)); }
00104
virtual void setFolder(
KMFolder*,
bool addAccount =
false);
00105
00109
QString trash()
const {
return mTrash; }
00110
virtual void setTrash(
const QString& aTrash) { mTrash = aTrash; }
00111
00117
virtual void processNewMail(
bool interactive) = 0;
00118
00124
virtual void readConfig(KConfig& config);
00125
00130
virtual void writeConfig(KConfig& config);
00131
00136
virtual void setCheckInterval(
int aInterval);
00137
int checkInterval(
void)
const {
return mInterval; }
00138
00142
inline int defaultCheckInterval(
void)
const {
return DefaultCheckInterval; }
00143
00147
void deleteFolderJobs();
00148
00152
virtual void ignoreJobsForMessage( KMMessage* );
00157
virtual void setCheckExclude(
bool aExclude);
00158
bool checkExclude(
void)
const {
return mExclude; }
00159
00163
const QString& precommand(
void)
const {
return mPrecommand; }
00164
virtual void setPrecommand(
const QString &cmd) { mPrecommand = cmd; }
00165
00172
bool runPrecommand(
const QString &precommand);
00173
00178
static QString encryptStr(
const QString& inStr);
00179
static QString decryptStr(
const QString& inStr) {
return encryptStr(inStr); }
00180
00181
static QString importPassword(
const QString &);
00182
00184
bool hasInbox()
const {
return mHasInbox; }
00185
virtual void setHasInbox(
bool has ) { mHasInbox = has; }
00186
00190
virtual void invalidateIMAPFolders();
00191
00195
bool checkingMail() {
return mCheckingMail; }
00196
void setCheckingMail(
bool checking ) { mCheckingMail = checking; }
00197
00203
void checkDone(
bool newMail, CheckStatus status );
00204
00210
virtual void cancelMailCheck() {}
00211
00216 ProgressItem *mailCheckProgressItem()
const {
00217
return mMailCheckProgressItem;
00218 }
00219
00220 signals:
00226
virtual void finishedCheck(
bool newMail, CheckStatus status );
00227
00232
virtual void newMailsProcessed(
const QMap<QString, int> & newInFolder );
00233
00234
protected slots:
00235
virtual void mailCheck();
00236
virtual void sendReceipts();
00237
virtual void precommandExited(
bool);
00238
00239
protected:
00240 KMAccount(KMAcctMgr* owner,
const QString& accountName, uint
id);
00241
00247
virtual bool processNewMsg(KMMessage* msg);
00248
00255
virtual void sendReceipt(KMMessage* msg);
00256
00260
virtual void installTimer();
00261
virtual void deinstallTimer();
00262
00269
void addToNewInFolder(
QString folderId,
int num );
00270
00271
protected:
00272
QString mPrecommand;
00273
QString mTrash;
00274 KMAcctMgr* mOwner;
00275
QGuardedPtr<KMAcctFolder> mFolder;
00276
QTimer *mTimer, mReceiptTimer;
00277
int mInterval;
00278
bool mExclude;
00279
bool mCheckingMail : 1;
00280
bool mPrecommandSuccess;
00281
QValueList<KMMessage*> mReceipts;
00282
QPtrList<FolderJob> mJobList;
00283
bool mHasInbox : 1;
00284 ProgressItem *mMailCheckProgressItem;
00285
00286
private:
00290
virtual void setName(
const char *name ) { QObject::setName( name ); }
00291
00292
private:
00293
00294
QMap<QString, int> mNewInFolder;
00295 };
00296
00297
class KMAcctList:
public QPtrList<KMAccount>
00298 {
00299
public:
00300
virtual ~KMAcctList() {}
00302
short _dummy;
00303 };
00304
00305
#endif