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