summaryrefslogtreecommitdiffstats
path: root/kmail/backupjob.h
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-09-01 00:37:02 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-09-01 00:37:02 +0000
commitcc29364f06178f8f6b457384f2ec37a042bd9d43 (patch)
tree7c77a3184c698bbf9d98cef09fb1ba8124daceba /kmail/backupjob.h
parent4f6c584bacc8c3c694228f36ada3de77a76614a6 (diff)
downloadtdepim-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.h109
1 files changed, 109 insertions, 0 deletions
diff --git a/kmail/backupjob.h b/kmail/backupjob.h
new file mode 100644
index 00000000..f6383d66
--- /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