kmaccount.h
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 QGuardedPtr<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
This file is part of the documentation for kmail Library Version 3.3.2.