00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef kmaccount_h
00021 #define kmaccount_h
00022
00023 #include <kprocess.h>
00024 #include <kaccount.h>
00025
00026 #include <tqstring.h>
00027 #include <tqguardedptr.h>
00028 #include <tqvaluelist.h>
00029 #include <tqmap.h>
00030
00031 #include "kmmessage.h"
00032 class TQTimer;
00033
00034 class KMFolder;
00035 class KMAcctFolder;
00036 class KConfig;
00037 class KMFolderJob;
00038 class KMFolderCachedImap;
00039 class AccountsPageReceivingTab;
00040 namespace KMail {
00041 class FolderJob;
00042 class AccountManager;
00043 }
00044 using KMail::AccountManager;
00045 namespace KPIM { class ProgressItem; }
00046 using KMail::FolderJob;
00047 using KPIM::ProgressItem;
00048
00049 class KMAccount;
00050 typedef TQValueList< ::KMAccount* > AccountList;
00051
00052 class KMPrecommand : public TQObject
00053 {
00054 Q_OBJECT
00055 TQ_OBJECT
00056
00057 public:
00058 KMPrecommand(const TQString &precommand, TQObject *parent = 0);
00059 virtual ~KMPrecommand();
00060 bool start();
00061
00062 protected slots:
00063 void precommandExited(KProcess *);
00064
00065 signals:
00066 void finished(bool);
00067
00068 protected:
00069 KProcess mPrecommandProcess;
00070 TQString mPrecommand;
00071 };
00072
00073
00074 class KMAccount: public TQObject, public KAccount
00075 {
00076 Q_OBJECT
00077 TQ_OBJECT
00078 friend class KMail::AccountManager;
00079 friend class ::KMail::FolderJob;
00080 friend class ::AccountsPageReceivingTab;
00081 friend class ::KMFolderCachedImap;
00082
00083 public:
00084 virtual ~KMAccount();
00085
00086 enum CheckStatus { CheckOK, CheckIgnored, CheckCanceled, CheckAborted,
00087 CheckError };
00088
00090 static const int DefaultCheckInterval = 5;
00091
00095 virtual TQString type() const { return TQString(); }
00096
00100 virtual void setName(const TQString&);
00101
00105 virtual TQString name() const { return KAccount::name(); }
00106
00110 virtual void clearPasswd();
00111
00115 virtual void init();
00116
00120 virtual void pseudoAssign(const KMAccount * a );
00121
00125 KMFolder* folder(void) const { return ((KMFolder*)((KMAcctFolder*)mFolder)); }
00126 virtual void setFolder(KMFolder*, bool addAccount = false);
00127
00131 TQString trash() const { return mTrash; }
00132 virtual void setTrash(const TQString& aTrash) { mTrash = aTrash; }
00133
00139 virtual void processNewMail(bool interactive) = 0;
00140
00146 virtual void readConfig(KConfig& config);
00147 void readTimerConfig();
00148
00153 virtual void writeConfig(KConfig& config);
00154
00159 virtual void setCheckInterval(int aInterval);
00160 int checkInterval() const;
00161
00165 inline int defaultCheckInterval(void) const { return DefaultCheckInterval; }
00166
00170 void deleteFolderJobs();
00171
00175 virtual void ignoreJobsForMessage( KMMessage* );
00180 virtual void setCheckExclude(bool aExclude);
00181 bool checkExclude(void) const { return mExclude; }
00182
00186 const TQString& precommand(void) const { return mPrecommand; }
00187 virtual void setPrecommand(const TQString &cmd) { mPrecommand = cmd; }
00188
00195 bool runPrecommand(const TQString &precommand);
00196
00201 static TQString encryptStr(const TQString& inStr);
00202 static TQString decryptStr(const TQString& inStr) { return encryptStr(inStr); }
00203
00204 static TQString importPassword(const TQString &);
00205
00207 bool hasInbox() const { return mHasInbox; }
00208 virtual void setHasInbox( bool has ) { mHasInbox = has; }
00209
00213 virtual void invalidateIMAPFolders();
00214
00221 virtual bool mailCheckCanProceed() const { return true; }
00222
00226 bool checkingMail() { return mCheckingMail; }
00227 virtual void setCheckingMail( bool checking ) { mCheckingMail = checking; }
00228
00234 void checkDone( bool newMail, CheckStatus status );
00235
00241 virtual void cancelMailCheck() {}
00242
00247 ProgressItem *mailCheckProgressItem() const {
00248 return mMailCheckProgressItem;
00249 }
00250
00254 void setIdentityId(uint identityId ) { mIdentityId = identityId; }
00255 uint identityId() const{ return mIdentityId; }
00256
00257 signals:
00263 virtual void finishedCheck( bool newMail, CheckStatus status );
00264
00269 virtual void newMailsProcessed( const TQMap<TQString, int> & newInFolder );
00270
00271 protected slots:
00272 virtual void mailCheck();
00273 virtual void sendReceipts();
00274 virtual void precommandExited(bool);
00275
00276 protected:
00277 KMAccount( AccountManager* owner, const TQString& accountName, uint id);
00278
00284 virtual bool processNewMsg(KMMessage* msg);
00285
00292 virtual void sendReceipt(KMMessage* msg);
00293
00297 virtual void installTimer();
00298 virtual void deinstallTimer();
00299
00306 void addToNewInFolder( TQString folderId, int num );
00307
00308 protected:
00309 TQString mPrecommand;
00310 TQString mTrash;
00311 AccountManager* mOwner;
00312 TQGuardedPtr<KMAcctFolder> mFolder;
00313 TQTimer *mTimer;
00314 int mInterval;
00315
00316
00317
00318
00319 bool mExclude;
00320 bool mCheckingMail : 1;
00321 bool mPrecommandSuccess;
00322 TQValueList<KMMessage*> mReceipts;
00323 TQPtrList<FolderJob> mJobList;
00324 bool mHasInbox : 1;
00325 TQGuardedPtr<ProgressItem> mMailCheckProgressItem;
00326 uint mIdentityId;
00327 private:
00331 virtual void setName( const char *name ) { TQObject::setName( name ); }
00332
00333 private:
00334
00335 TQMap<TQString, int> mNewInFolder;
00336 };
00337
00338 #endif