00001
00032
#ifndef KMAcctCachedImap_h
00033
#define KMAcctCachedImap_h
00034
00035
#include "imapaccountbase.h"
00036
00037
#include <qguardedptr.h>
00038
00039
class KMFolderCachedImap;
00040
class KMFolderTreeItem;
00041
namespace KMail {
00042
class FolderJob;
00043
class ImapJob;
00044
class CachedImapJob;
00045 }
00046
using KMail::ImapJob;
00047
using KMail::CachedImapJob;
00048
00049
namespace KIO {
00050
class Job;
00051 }
00052
00053
class KMAcctCachedImap:
public KMail::ImapAccountBase
00054 {
00055 Q_OBJECT
00056
friend class ImapJob;
00057
friend class CachedImapJob;
00058
00059
protected:
00060
void setPrefixHook();
00061
00062
public:
00063
virtual ~KMAcctCachedImap();
00064
virtual void init();
00065
00067
virtual void pseudoAssign(
const KMAccount * a );
00068
00072
virtual void setAutoExpunge(
bool);
00073
00077
virtual QString type() const;
00078 virtual
void processNewMail(
bool interactive );
00079
00083
void killJobsForItem(KMFolderTreeItem * fti);
00084
00088 virtual
void killAllJobs(
bool disconnectSlave=false );
00089
00093 virtual
void cancelMailCheck();
00094
00098 virtual
void setImapFolder(KMFolderCachedImap *);
00099 KMFolderCachedImap* imapFolder()
const {
return mFolder; }
00100
00101
bool isProgressDialogEnabled()
const {
return mProgressDialogEnabled; }
00102
void setProgressDialogEnabled(
bool enable ) { mProgressDialogEnabled = enable; }
00103
00104
virtual void readConfig( KConfig & config );
00105
virtual void writeConfig( KConfig & config ) ;
00106
00110
virtual void invalidateIMAPFolders();
00111
virtual void invalidateIMAPFolders( KMFolderCachedImap* );
00112
00116
void addDeletedFolder(
const QString& subFolderPath );
00117
00121
bool isDeletedFolder(
const QString& subFolderPath )
const;
00122
00126
bool isPreviouslyDeletedFolder(
const QString& subFolderPath )
const;
00127
00131
void removeDeletedFolder(
const QString& subFolderPath );
00132
00136
void addRenamedFolder(
const QString& subFolderPath,
00137
const QString& oldLabel,
const QString& newName );
00138
00143
void removeRenamedFolder(
const QString& subFolderPath );
00144
00145
struct RenamedFolder {
00146 RenamedFolder() {}
00147 RenamedFolder(
const QString& oldLabel,
const QString& newName )
00148 : mOldLabel( oldLabel ), mNewName( newName ) {}
00149
QString mOldLabel;
00150
QString mNewName;
00151 };
00152
00156
QString renamedFolder(
const QString& imapPath )
const;
00160
const QMap<QString, RenamedFolder>& renamedFolders()
const {
return mRenamedFolders; }
00161
00165
void addUnreadMsgCount(
const KMFolderCachedImap *folder,
int countUnread );
00166
00170
void addLastUnreadMsgCount(
const KMFolderCachedImap *folder,
00171
int countLastUnread );
00172
00176
virtual FolderStorage*
const rootFolder() const;
00177
00178 protected:
00179 friend class KMAcctMgr;
00180 KMAcctCachedImap(KMAcctMgr* owner, const
QString& accountName, uint
id);
00181
00182 protected slots:
00184
void postProcessNewMail(KMFolderCachedImap*,
bool);
00185
00186
void slotProgressItemCanceled( ProgressItem* );
00187
00188 virtual
void slotCheckQueuedFolders();
00189
00190 private:
00191
void processNewMail( KMFolderCachedImap* folder,
bool interactive,
bool recurse );
00192
00193 private:
00194
QPtrList<CachedImapJob> mJobList;
00195 KMFolderCachedImap *mFolder;
00196
bool mProgressDialogEnabled;
00197
QStringList mDeletedFolders;
00198
QStringList mPreviouslyDeletedFolders;
00199
QMap<
QString, RenamedFolder> mRenamedFolders;
00200 };
00201
00202 #endif