/usr/include/KF5/mailcommon/backupjob.h is in libkf5mailcommon-dev 4:17.12.3-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | /*
Copyright (c) 2009 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
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 MAILCOMMON_BACKUPJOB_H
#define MAILCOMMON_BACKUPJOB_H
#include "mailcommon_export.h"
#include "libkdepim/progressmanager.h"
#include <Collection>
#include <Item>
#include <QUrl>
#include <QObject>
#include <QPointer>
#include <QDateTime>
class KArchive;
class KJob;
class QWidget;
namespace Akonadi {
class ItemFetchJob;
}
namespace MailCommon {
/**
* 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 MAILCOMMON_EXPORT BackupJob : public QObject
{
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(QWidget *parent = nullptr);
~BackupJob();
void setRootFolder(const Akonadi::Collection &rootFolder);
void setSaveLocation(const QUrl &savePath);
void setArchiveType(ArchiveType type);
void setDeleteFoldersAfterCompletion(bool deleteThem);
void setRecursive(bool recursive);
void setDisplayMessageBox(bool display);
void setRealPath(const QString &path);
void start();
Q_SIGNALS:
void backupDone(const QString &);
void error(const QString &);
private:
void itemFetchJobResult(KJob *job);
void cancelJob();
void archiveNextFolder();
void onArchiveNextFolderDone(KJob *job);
void archiveNextMessage();
bool queueFolders(const Akonadi::Collection &root);
void processMessage(const Akonadi::Item &item);
QString pathForCollection(const Akonadi::Collection &collection) const;
QString subdirPathForCollection(const Akonadi::Collection &collection) const;
bool hasChildren(const Akonadi::Collection &collection) const;
void finish();
void abort(const QString &errorMessage);
bool writeDirHelper(const QString &directoryPath);
// Helper function to return the name of the given collection.
// Some Collection's don't have the name fetched. However, in mAllFolders,
// we have a list of Collection's that have that information in them, so
// we can just look it up there.
QString collectionName(const Akonadi::Collection &collection) const;
QString mRealPath;
QUrl mMailArchivePath;
QDateTime mArchiveTime;
ArchiveType mArchiveType;
Akonadi::Collection mRootFolder;
KArchive *mArchive = nullptr;
QWidget *mParentWidget = nullptr;
int mArchivedMessages;
uint mArchivedSize;
QPointer<KPIM::ProgressItem> mProgressItem;
bool mAborted;
bool mDeleteFoldersAfterCompletion;
bool mRecursive;
Akonadi::Collection::List mPendingFolders;
Akonadi::Collection::List mAllFolders;
Akonadi::Collection mCurrentFolder;
Akonadi::Item::List mPendingMessages;
Akonadi::ItemFetchJob *mCurrentJob = nullptr;
bool mDisplayMessageBox = false;
};
}
#endif
|