00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef BACKUPJOB_H
00020 #define BACKUPJOB_H
00021
00022 #include <kurl.h>
00023 #include <tqptrlist.h>
00024
00025 #include <tqobject.h>
00026
00027 class KMFolder;
00028 class KMMessage;
00029 class KArchive;
00030 class TDEProcess;
00031 class TQWidget;
00032
00033 namespace KPIM {
00034 class ProgressItem;
00035 }
00036
00037 namespace KMail
00038 {
00039 class FolderJob;
00040
00048 class BackupJob : public TQObject
00049 {
00050 Q_OBJECT
00051
00052
00053 public:
00054
00055
00056 enum ArchiveType { Zip = 0, Tar = 1, TarBz2 = 2, TarGz = 3 };
00057
00058 explicit BackupJob( TQWidget *parent = 0 );
00059 ~BackupJob();
00060 void setRootFolder( KMFolder *rootFolder );
00061 void setSaveLocation( const KURL &savePath );
00062 void setArchiveType( ArchiveType type );
00063 void setDeleteFoldersAfterCompletion( bool deleteThem );
00064 void start();
00065
00066 private slots:
00067
00068 void messageRetrieved( KMMessage *message );
00069 void folderJobFinished( KMail::FolderJob *job );
00070 void processCurrentMessage();
00071 void cancelJob();
00072
00073 private:
00074
00075 void queueFolders( KMFolder *root );
00076 void archiveNextFolder();
00077 void archiveNextMessage();
00078 TQString stripRootPath( const TQString &path ) const;
00079 bool hasChildren( KMFolder *folder ) const;
00080 void finish();
00081 void abort( const TQString &errorMessage );
00082 bool writeDirHelper( const TQString &directoryPath, const TQString &permissionPath );
00083
00084 KURL mMailArchivePath;
00085 ArchiveType mArchiveType;
00086 KMFolder *mRootFolder;
00087 KArchive *mArchive;
00088 TQWidget *mParentWidget;
00089 bool mCurrentFolderOpen;
00090 int mArchivedMessages;
00091 uint mArchivedSize;
00092 KPIM::ProgressItem *mProgressItem;
00093 bool mAborted;
00094 bool mDeleteFoldersAfterCompletion;
00095
00096
00097
00098 bool mUnget;
00099 int mMessageIndex;
00100
00101 TQPtrList<KMFolder> mPendingFolders;
00102 KMFolder *mCurrentFolder;
00103 TQValueList<unsigned long> mPendingMessages;
00104 KMMessage *mCurrentMessage;
00105 FolderJob *mCurrentJob;
00106 };
00107
00108 }
00109
00110 #endif