File indexing completed on 2024-06-16 04:55:58

0001 /* -*- mode: c++; c-basic-offset:4 -*-
0002     crypto/newsignencryptemailcontroller.h
0003 
0004     This file is part of Kleopatra, the KDE keymanager
0005     SPDX-FileCopyrightText: 2007 Klarälvdalens Datakonsult AB
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #pragma once
0011 
0012 #include <crypto/controller.h>
0013 
0014 #include <utils/pimpl_ptr.h>
0015 
0016 #include <gpgme++/global.h>
0017 
0018 #include <memory>
0019 #include <utility>
0020 #include <vector>
0021 
0022 namespace KMime
0023 {
0024 namespace Types
0025 {
0026 class Mailbox;
0027 }
0028 }
0029 
0030 namespace GpgME
0031 {
0032 }
0033 
0034 namespace Kleo
0035 {
0036 
0037 class Input;
0038 class Output;
0039 
0040 namespace Crypto
0041 {
0042 
0043 class NewSignEncryptEMailController : public Controller
0044 {
0045     Q_OBJECT
0046 public:
0047     explicit NewSignEncryptEMailController(QObject *parent = nullptr);
0048     explicit NewSignEncryptEMailController(const std::shared_ptr<ExecutionContext> &xc, QObject *parent = nullptr);
0049     ~NewSignEncryptEMailController() override;
0050 
0051     static const char *mementoName()
0052     {
0053         return "NewSignEncryptEMailController";
0054     }
0055 
0056     // 1st stage inputs
0057 
0058     void setSubject(const QString &subject);
0059     void setProtocol(GpgME::Protocol proto);
0060     const char *protocolAsString() const;
0061     GpgME::Protocol protocol() const;
0062 
0063     void setSigning(bool sign);
0064     bool isSigning() const;
0065 
0066     void setEncrypting(bool encrypt);
0067     bool isEncrypting() const;
0068 
0069     void startResolveCertificates(const std::vector<KMime::Types::Mailbox> &recipients, const std::vector<KMime::Types::Mailbox> &senders);
0070 
0071     bool isResolvingInProgress() const;
0072     bool areCertificatesResolved() const;
0073 
0074     // 2nd stage inputs
0075 
0076     void setDetachedSignature(bool detached);
0077 
0078     void startSigning(const std::vector<std::shared_ptr<Kleo::Input>> &inputs, const std::vector<std::shared_ptr<Kleo::Output>> &outputs);
0079 
0080     void startEncryption(const std::vector<std::shared_ptr<Kleo::Input>> &inputs, const std::vector<std::shared_ptr<Kleo::Output>> &outputs);
0081 
0082 public Q_SLOTS:
0083     void cancel();
0084 
0085 Q_SIGNALS:
0086     void certificatesResolved();
0087     void reportMicAlg(const QString &micAlg);
0088 
0089 private:
0090     void doTaskDone(const Task *task, const std::shared_ptr<const Kleo::Crypto::Task::Result> &) override;
0091 
0092     class Private;
0093     kdtools::pimpl_ptr<Private> d;
0094     Q_PRIVATE_SLOT(d, void slotDialogAccepted())
0095     Q_PRIVATE_SLOT(d, void slotDialogRejected())
0096     Q_PRIVATE_SLOT(d, void schedule())
0097 };
0098 
0099 } // Crypto
0100 } // Kleo