File indexing completed on 2024-06-23 05:18:32

0001 /*
0002   SPDX-FileCopyrightText: 2009 Klaralvdalens Datakonsult AB, a KDAB Group company, info@kdab.net
0003   SPDX-FileCopyrightText: 2009 Leo Franchi <lfranchi@kde.org>
0004 
0005   SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #pragma once
0009 
0010 #include "abstractencryptjob.h"
0011 #include "contentjobbase.h"
0012 #include "infopart.h"
0013 #include "messagecomposer_export.h"
0014 
0015 #include <Libkleo/Enum>
0016 
0017 #include <gpgme++/key.h>
0018 #include <vector>
0019 
0020 namespace KMime
0021 {
0022 class Content;
0023 }
0024 
0025 namespace MessageComposer
0026 {
0027 class EncryptJobPrivate;
0028 
0029 /**
0030   Encrypt the contents of a message .
0031   Used as a subjob of CryptoMessage
0032 */
0033 class MESSAGECOMPOSER_EXPORT EncryptJob : public ContentJobBase, public MessageComposer::AbstractEncryptJob
0034 {
0035     Q_OBJECT
0036 
0037 public:
0038     explicit EncryptJob(QObject *parent = nullptr);
0039     ~EncryptJob() override;
0040 
0041     void setContent(KMime::Content *content);
0042     void setCryptoMessageFormat(Kleo::CryptoMessageFormat format);
0043     void setEncryptionKeys(const std::vector<GpgME::Key> &keys) override;
0044     void setRecipients(const QStringList &rec) override;
0045     void setSkeletonMessage(KMime::Message *skeletonMessage);
0046 
0047     void setProtectedHeaders(bool protectedHeaders);
0048     void setProtectedHeadersObvoscate(bool protectedHeadersObvoscate);
0049 
0050     void setGnupgHome(const QString &path);
0051 
0052     std::vector<GpgME::Key> encryptionKeys() const override;
0053     QStringList recipients() const override;
0054 
0055 protected Q_SLOTS:
0056     void doStart() override;
0057     void slotResult(KJob *job) override;
0058     void process() override;
0059 
0060 private:
0061     Q_DECLARE_PRIVATE(EncryptJob)
0062 };
0063 }