diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-09-01 00:37:02 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-09-01 00:37:02 +0000 |
commit | cc29364f06178f8f6b457384f2ec37a042bd9d43 (patch) | |
tree | 7c77a3184c698bbf9d98cef09fb1ba8124daceba /kmail/backupjob.h | |
parent | 4f6c584bacc8c3c694228f36ada3de77a76614a6 (diff) | |
download | tdepim-cc29364f06178f8f6b457384f2ec37a042bd9d43.tar.gz tdepim-cc29364f06178f8f6b457384f2ec37a042bd9d43.zip |
* Massive set of changes to bring in all fixes and enhancements from the Enterprise PIM branch
* Ensured that the Trinity changes were applied on top of those enhancements, and any redundancy removed
* Added journal read support to the CalDAV resource
* Fixed CalDAV resource to use events URL for tasks and journals when separate URL checkbox unchecked
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1170461 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kmail/backupjob.h')
-rw-r--r-- | kmail/backupjob.h | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/kmail/backupjob.h b/kmail/backupjob.h new file mode 100644 index 000000000..f6383d669 --- /dev/null +++ b/kmail/backupjob.h @@ -0,0 +1,109 @@ +/* Copyright 2009 Klarälvdalens Datakonsult AB + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ +#ifndef BACKUPJOB_H +#define BACKUPJOB_H + +#include <kurl.h> +#include <tqptrlist.h> + +#include <tqobject.h> + +class KMFolder; +class KMMessage; +class KArchive; +class KProcess; +class TQWidget; + +namespace KPIM { + class ProgressItem; +} + +namespace KMail +{ + class FolderJob; + +/** + * Writes an entire folder structure to an archive file. + * The archive is structured like a hierarchy of maildir folders. However, every type of folder + * works as the source, i.e. also online IMAP folders. + * + * The job deletes itself after it finished. + */ +class BackupJob : public TQObject +{ + Q_OBJECT + + public: + + // These enum values have to stay in sync with the format combobox of ArchiveFolderDialog! + enum ArchiveType { Zip = 0, Tar = 1, TarBz2 = 2, TarGz = 3 }; + + explicit BackupJob( TQWidget *parent = 0 ); + ~BackupJob(); + void setRootFolder( KMFolder *rootFolder ); + void setSaveLocation( const KURL &savePath ); + void setArchiveType( ArchiveType type ); + void setDeleteFoldersAfterCompletion( bool deleteThem ); + void start(); + + private slots: + + void messageRetrieved( KMMessage *message ); + void folderJobFinished( KMail::FolderJob *job ); + void processCurrentMessage(); + void cancelJob(); + + private: + + void queueFolders( KMFolder *root ); + void archiveNextFolder(); + void archiveNextMessage(); + TQString stripRootPath( const TQString &path ) const; + bool hasChildren( KMFolder *folder ) const; + void finish(); + void abort( const TQString &errorMessage ); + bool writeDirHelper( const TQString &directoryPath, const TQString &permissionPath ); + + KURL mMailArchivePath; + ArchiveType mArchiveType; + KMFolder *mRootFolder; + KArchive *mArchive; + TQWidget *mParentWidget; + bool mCurrentFolderOpen; + int mArchivedMessages; + uint mArchivedSize; + KPIM::ProgressItem *mProgressItem; + bool mAborted; + bool mDeleteFoldersAfterCompletion; + + // True if we obtained ownership of the kMMessage after calling getMsg(), since we need + // to call ungetMsg() then. For that, we also remember the original index. + bool mUnget; + int mMessageIndex; + + TQPtrList<KMFolder> mPendingFolders; + KMFolder *mCurrentFolder; + TQValueList<unsigned long> mPendingMessages; + KMMessage *mCurrentMessage; + FolderJob *mCurrentJob; +}; + +} + +#endif |