00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef KMAcctCachedImap_h
00033 #define KMAcctCachedImap_h
00034
00035 #include "imapaccountbase.h"
00036
00037 #include <tqguardedptr.h>
00038
00039 class KMFolderCachedImap;
00040 class KMFolderTreeItem;
00041 class KMFolder;
00042 namespace KMail {
00043 class FolderJob;
00044 class ImapJob;
00045 class CachedImapJob;
00046 }
00047 using KMail::ImapJob;
00048 using KMail::CachedImapJob;
00049
00050 namespace TDEIO {
00051 class Job;
00052 }
00053
00054 class KMAcctCachedImap: public KMail::ImapAccountBase
00055 {
00056 Q_OBJECT
00057
00058 friend class ::KMail::ImapJob;
00059 friend class ::KMail::CachedImapJob;
00060
00061 public:
00062 virtual ~KMAcctCachedImap();
00063 virtual void init();
00064
00066 virtual void pseudoAssign( const KMAccount * a );
00067
00071 virtual void setAutoExpunge(bool);
00072
00076 virtual TQString type() const;
00077 virtual void processNewMail( bool interactive );
00078
00082 virtual void killAllJobs( bool disconnectSlave=false );
00083
00087 virtual void cancelMailCheck();
00088
00092 virtual void setImapFolder(KMFolderCachedImap *);
00093 KMFolderCachedImap* imapFolder() const { return mFolder; }
00094
00095 virtual void readConfig( TDEConfig & config );
00096 virtual void writeConfig( TDEConfig & config ) ;
00097
00101 virtual void invalidateIMAPFolders();
00102 virtual void invalidateIMAPFolders( KMFolderCachedImap* );
00103
00107 void addDeletedFolder( KMFolder* folder );
00108
00113 void addDeletedFolder( const TQString& imapPath );
00114
00118 bool isDeletedFolder( const TQString& subFolderPath ) const;
00119
00123 bool isPreviouslyDeletedFolder( const TQString& subFolderPath ) const;
00124
00128 TQStringList deletedFolderPaths( const TQString& subFolderPath ) const;
00129
00133 void removeDeletedFolder( const TQString& subFolderPath );
00134
00138 void addRenamedFolder( const TQString& subFolderPath,
00139 const TQString& oldLabel, const TQString& newName );
00140
00145 void removeRenamedFolder( const TQString& subFolderPath );
00146
00147 struct RenamedFolder {
00148 RenamedFolder() {}
00149 RenamedFolder( const TQString& oldLabel, const TQString& newName )
00150 : mOldLabel( oldLabel ), mNewName( newName ) {}
00151 TQString mOldLabel;
00152 TQString mNewName;
00153 };
00154
00158 TQString renamedFolder( const TQString& imapPath ) const;
00162 const TQMap<TQString, RenamedFolder>& renamedFolders() const { return mRenamedFolders; }
00163
00167 void addUnreadMsgCount( const KMFolderCachedImap *folder, int countUnread );
00168
00172 void addLastUnreadMsgCount( const KMFolderCachedImap *folder,
00173 int countLastUnread );
00174
00178 virtual FolderStorage* rootFolder() const;
00179
00181 bool annotationCheckPassed(){ return mAnnotationCheckPassed;};
00182 void setAnnotationCheckPassed( bool a ){ mAnnotationCheckPassed = a; };
00183
00185 enum GroupwareType
00186 {
00187 GroupwareNone,
00188 GroupwareKolab,
00189 GroupwareScalix
00190 };
00191
00192 void setGroupwareType( GroupwareType type ){ mGroupwareType = type; }
00193 GroupwareType groupwareType() const { return mGroupwareType; }
00194
00195 void setSentCustomLoginCommand( bool value ){ mSentCustomLoginCommand = value; }
00196 bool sentCustomLoginCommand() const { return mSentCustomLoginCommand; }
00197
00198 protected:
00199 friend class ::AccountManager;
00200 KMAcctCachedImap(AccountManager* owner, const TQString& accountName, uint id);
00201
00202 protected slots:
00204 void postProcessNewMail(KMFolderCachedImap*, bool);
00205
00206 void slotProgressItemCanceled( KPIM::ProgressItem* );
00207
00208 virtual void slotCheckQueuedFolders();
00209
00210 private:
00211 TQValueList<KMFolderCachedImap*> killAllJobsInternal( bool disconnectSlave );
00212 void processNewMail( KMFolderCachedImap* folder, bool recurse );
00213
00214 private:
00215 TQPtrList<CachedImapJob> mJobList;
00216 KMFolderCachedImap *mFolder;
00217 TQStringList mDeletedFolders;
00218 TQStringList mPreviouslyDeletedFolders;
00219 TQMap<TQString, RenamedFolder> mRenamedFolders;
00220 bool mAnnotationCheckPassed;
00221
00222 GroupwareType mGroupwareType;
00223 bool mSentCustomLoginCommand;
00224 };
00225
00226 #endif