kmail
kmaccount.h00001
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 <qstring.h>
00027 #include <qguardedptr.h>
00028 #include <qvaluelist.h>
00029 #include <qmap.h>
00030
00031 #include "kmmessage.h"
00032 class QTimer;
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 QValueList< ::KMAccount* > AccountList;
00051
00052 class KMPrecommand : public QObject
00053 {
00054 Q_OBJECT
00055
00056 public:
00057 KMPrecommand(const QString &precommand, QObject *parent = 0);
00058 virtual ~KMPrecommand();
00059 bool start();
00060
00061 protected slots:
00062 void precommandExited(KProcess *);
00063
00064 signals:
00065 void finished(bool);
00066
00067 protected:
00068 KProcess mPrecommandProcess;
00069 QString mPrecommand;
00070 };
00071
00072
00073 class KMAccount: public QObject, public KAccount
00074 {
00075 Q_OBJECT
00076 friend class KMail::AccountManager;
00077 friend class ::KMail::FolderJob;
00078 friend class ::AccountsPageReceivingTab;
00079 friend class ::KMFolderCachedImap;
00080
00081 public:
00082 virtual ~KMAccount();
00083
00084 enum CheckStatus { CheckOK, CheckIgnored, CheckCanceled, CheckAborted,
00085 CheckError };
00086
00088 static const int DefaultCheckInterval = 5;
00089
00093 virtual QString type() const { return QString::null; }
00094
00098 virtual void setName(const QString&);
00099
00103 virtual QString name() const { return KAccount::name(); }
00104
00108 virtual void clearPasswd();
00109
00113 virtual void init();
00114
00118 virtual void pseudoAssign(const KMAccount * a );
00119
00123 KMFolder* folder(void) const { return ((KMFolder*)((KMAcctFolder*)mFolder)); }
00124 virtual void setFolder(KMFolder*, bool addAccount = false);
00125
00129 QString trash() const { return mTrash; }
00130 virtual void setTrash(const QString& aTrash) { mTrash = aTrash; }
00131
00137 virtual void processNewMail(bool interactive) = 0;
00138
00144 virtual void readConfig(KConfig& config);
00145
00150 virtual void writeConfig(KConfig& config);
00151
00156 virtual void setCheckInterval(int aInterval);
00157 int checkInterval(void) const { return mInterval; }
00158
00162 inline int defaultCheckInterval(void) const { return DefaultCheckInterval; }
00163
00167 void deleteFolderJobs();
00168
00172 virtual void ignoreJobsForMessage( KMMessage* );
00177 virtual void setCheckExclude(bool aExclude);
00178 bool checkExclude(void) const { return mExclude; }
00179
00183 const QString& precommand(void) const { return mPrecommand; }
00184 virtual void setPrecommand(const QString &cmd) { mPrecommand = cmd; }
00185
00192 bool runPrecommand(const QString &precommand);
00193
00198 static QString encryptStr(const QString& inStr);
00199 static QString decryptStr(const QString& inStr) { return encryptStr(inStr); }
00200
00201 static QString importPassword(const QString &);
00202
00204 bool hasInbox() const { return mHasInbox; }
00205 virtual void setHasInbox( bool has ) { mHasInbox = has; }
00206
00210 virtual void invalidateIMAPFolders();
00211
00218 virtual bool mailCheckCanProceed() const { return true; }
00219
00223 bool checkingMail() { return mCheckingMail; }
00224 virtual void setCheckingMail( bool checking ) { mCheckingMail = checking; }
00225
00231 void checkDone( bool newMail, CheckStatus status );
00232
00238 virtual void cancelMailCheck() {}
00239
00244 ProgressItem *mailCheckProgressItem() const {
00245 return mMailCheckProgressItem;
00246 }
00247
00248 signals:
00254 virtual void finishedCheck( bool newMail, CheckStatus status );
00255
00260 virtual void newMailsProcessed( const QMap<QString, int> & newInFolder );
00261
00262 protected slots:
00263 virtual void mailCheck();
00264 virtual void sendReceipts();
00265 virtual void precommandExited(bool);
00266
00267 protected:
00268 KMAccount( AccountManager* owner, const QString& accountName, uint id);
00269
00275 virtual bool processNewMsg(KMMessage* msg);
00276
00283 virtual void sendReceipt(KMMessage* msg);
00284
00288 virtual void installTimer();
00289 virtual void deinstallTimer();
00290
00297 void addToNewInFolder( QString folderId, int num );
00298
00299 protected:
00300 QString mPrecommand;
00301 QString mTrash;
00302 AccountManager* mOwner;
00303 QGuardedPtr<KMAcctFolder> mFolder;
00304 QTimer *mTimer;
00305 int mInterval;
00306 bool mExclude;
00307 bool mCheckingMail : 1;
00308 bool mPrecommandSuccess;
00309 QValueList<KMMessage*> mReceipts;
00310 QPtrList<FolderJob> mJobList;
00311 bool mHasInbox : 1;
00312 QGuardedPtr<ProgressItem> mMailCheckProgressItem;
00313
00314 private:
00318 virtual void setName( const char *name ) { QObject::setName( name ); }
00319
00320 private:
00321
00322 QMap<QString, int> mNewInFolder;
00323 };
00324
00325 #endif
|