kmail Library API Documentation

kmaccount.h

00001 /* -*- mode: C++ -*-
00002  * KMail Account: Abstract base class for accounts.
00003  *
00004  * Author: Stefan Taferner <taferner@alpin.or.at>
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; /* HACK for processNewMSg() */
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 
00257 public:
00261   virtual void installTimer();
00262   virtual void deinstallTimer();
00263 
00264 protected:
00271   void addToNewInFolder( QString folderId, int num );
00272 
00273   QString       mPrecommand;
00274   QString       mTrash;
00275   KMAcctMgr*    mOwner;
00276   QGuardedPtr<KMAcctFolder> mFolder;
00277   QTimer *mTimer, mReceiptTimer;
00278   int mInterval;
00279   bool mExclude;
00280   bool mCheckingMail : 1;
00281   bool mPrecommandSuccess;
00282   QValueList<KMMessage*> mReceipts;
00283   QPtrList<FolderJob>  mJobList;
00284   bool mHasInbox : 1;
00285   QGuardedPtr<ProgressItem> mMailCheckProgressItem;
00286 
00287 private:
00291     virtual void setName( const char *name ) { QObject::setName( name ); }
00292 
00293 private:
00294   // for detailed (per folder) new mail notification
00295   QMap<QString, int> mNewInFolder;
00296 };
00297 
00298 class KMAcctList: public QPtrList<KMAccount>
00299 {
00300 public:
00301   virtual ~KMAcctList() {}
00303   short _dummy;
00304 };
00305 
00306 #endif /*kmaccount_h*/
KDE Logo
This file is part of the documentation for kmail Library Version 3.3.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu May 3 20:22:54 2007 by doxygen 1.4.2 written by Dimitri van Heesch, © 1997-2003