kmacctcachedimap.h
00001 00021 #ifndef KMAcctCachedImap_h 00022 #define KMAcctCachedImap_h 00023 00024 #include "imapaccountbase.h" 00025 00026 #include <qguardedptr.h> 00027 00028 class KMFolderCachedImap; 00029 class KMFolderTreeItem; 00030 namespace KMail { 00031 class IMAPProgressDialog; 00032 class FolderJob; 00033 class ImapJob; 00034 class CachedImapJob; 00035 } 00036 using KMail::ImapJob; 00037 using KMail::CachedImapJob; 00038 00039 namespace KIO { 00040 class Job; 00041 } 00042 00043 class KMAcctCachedImap: public KMail::ImapAccountBase 00044 { 00045 Q_OBJECT 00046 friend class ImapJob; 00047 friend class CachedImapJob; 00048 00049 protected: // ### Hacks 00050 void setPrefixHook(); 00051 00052 public: 00053 virtual ~KMAcctCachedImap(); 00054 virtual void init(); 00055 00057 virtual void pseudoAssign( const KMAccount * a ); 00058 00062 virtual void setAutoExpunge(bool); 00063 00067 virtual QString type() const; 00068 virtual void processNewMail( bool i ) { processNewMail( mFolder, i ); } 00069 00070 void processNewMail( KMFolderCachedImap*, bool ); 00071 00075 virtual void displayProgress(); 00076 00080 void killJobsForItem(KMFolderTreeItem * fti); 00081 00085 virtual void killAllJobs( bool disconnectSlave=false ); 00086 00090 void setIdle(bool aIdle) { mIdle = aIdle; } 00091 00092 void slaveDied() { mSlave = 0; killAllJobs(); } 00093 00097 virtual void setImapFolder(KMFolderCachedImap *); 00098 00099 KMail::IMAPProgressDialog * imapProgressDialog() const; 00100 bool isProgressDialogEnabled() const { return mProgressDialogEnabled; } 00101 void setProgressDialogEnabled( bool enable ) { mProgressDialogEnabled = enable; } 00102 00103 virtual void readConfig( /*const*/ KConfig/*Base*/ & config ); 00104 virtual void writeConfig( KConfig/*Base*/ & config ) /*const*/; 00105 00109 virtual void invalidateIMAPFolders(); 00110 virtual void invalidateIMAPFolders( KMFolderCachedImap* ); 00111 00118 void listDirectory(QString path, bool onlySubscribed, 00119 bool secondStep = FALSE, KMFolder* parent = NULL, bool reset = false); 00120 00124 virtual void listDirectory(); 00125 00126 public slots: 00127 void processNewMail() { processNewMail( mFolder, true ); } 00128 00132 void slotSlaveError(KIO::Slave *aSlave, int, const QString &errorMsg); 00133 00134 protected: 00135 friend class KMAcctMgr; 00136 KMAcctCachedImap(KMAcctMgr* owner, const QString& accountName); 00137 00138 protected slots: 00142 void slotIdleTimeout(); 00143 00147 void slotAbortRequested(); 00148 00152 void slotSimpleResult(KIO::Job * job); 00153 00155 void postProcessNewMail(KMFolderCachedImap*, bool); 00156 void postProcessNewMail( KMFolder * f ) { ImapAccountBase::postProcessNewMail( f ); } 00157 00158 private: 00159 QPtrList<CachedImapJob> mJobList; 00160 KMFolderCachedImap *mFolder; 00161 mutable QGuardedPtr<KMail::IMAPProgressDialog> mProgressDlg; 00162 bool mProgressDialogEnabled; 00163 bool mSyncActive; 00164 }; 00165 00166 #endif /*KMAcctCachedImap_h*/