kmail
backupjob.h00001
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 KProcess;
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 public:
00053
00054
00055 enum ArchiveType { Zip = 0, Tar = 1, TarBz2 = 2, TarGz = 3 };
00056
00057 explicit BackupJob( TQWidget *parent = 0 );
00058 ~BackupJob();
00059 void setRootFolder( KMFolder *rootFolder );
00060 void setSaveLocation( const KURL &savePath );
00061 void setArchiveType( ArchiveType type );
00062 void setDeleteFoldersAfterCompletion( bool deleteThem );
00063 void start();
00064
00065 private slots:
00066
00067 void messageRetrieved( KMMessage *message );
00068 void folderJobFinished( KMail::FolderJob *job );
00069 void processCurrentMessage();
00070 void cancelJob();
00071
00072 private:
00073
00074 void queueFolders( KMFolder *root );
00075 void archiveNextFolder();
00076 void archiveNextMessage();
00077 TQString stripRootPath( const TQString &path ) const;
00078 bool hasChildren( KMFolder *folder ) const;
00079 void finish();
00080 void abort( const TQString &errorMessage );
00081 bool writeDirHelper( const TQString &directoryPath, const TQString &permissionPath );
00082
00083 KURL mMailArchivePath;
00084 ArchiveType mArchiveType;
00085 KMFolder *mRootFolder;
00086 KArchive *mArchive;
00087 TQWidget *mParentWidget;
00088 bool mCurrentFolderOpen;
00089 int mArchivedMessages;
00090 uint mArchivedSize;
00091 KPIM::ProgressItem *mProgressItem;
00092 bool mAborted;
00093 bool mDeleteFoldersAfterCompletion;
00094
00095
00096
00097 bool mUnget;
00098 int mMessageIndex;
00099
00100 TQPtrList<KMFolder> mPendingFolders;
00101 KMFolder *mCurrentFolder;
00102 TQValueList<unsigned long> mPendingMessages;
00103 KMMessage *mCurrentMessage;
00104 FolderJob *mCurrentJob;
00105 };
00106
00107 }
00108
00109 #endif
|