File indexing completed on 2024-06-16 04:55:57
0001 /* -*- mode: c++; c-basic-offset:4 -*- 0002 crypto/encryptemailcontroller.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 <vector> 0020 0021 namespace KMime 0022 { 0023 namespace Types 0024 { 0025 class Mailbox; 0026 } 0027 } 0028 0029 namespace Kleo 0030 { 0031 0032 class Input; 0033 class Output; 0034 0035 namespace Crypto 0036 { 0037 0038 class EncryptEMailController : public Controller 0039 { 0040 Q_OBJECT 0041 public: 0042 enum Mode { 0043 GpgOLMode, 0044 ClipboardMode, 0045 0046 NumModes 0047 }; 0048 0049 explicit EncryptEMailController(Mode mode, QObject *parent = nullptr); 0050 explicit EncryptEMailController(const std::shared_ptr<ExecutionContext> &xc, Mode mode, QObject *parent = nullptr); 0051 ~EncryptEMailController() override; 0052 0053 Mode mode() const; 0054 0055 static const char *mementoName() 0056 { 0057 return "EncryptEMailController"; 0058 } 0059 0060 void setProtocol(GpgME::Protocol proto); 0061 const char *protocolAsString(); 0062 GpgME::Protocol protocol(); 0063 0064 void startResolveRecipients(); 0065 0066 void setInputAndOutput(const std::shared_ptr<Kleo::Input> &input, const std::shared_ptr<Kleo::Output> &output); 0067 void setInputsAndOutputs(const std::vector<std::shared_ptr<Kleo::Input>> &inputs, const std::vector<std::shared_ptr<Kleo::Output>> &outputs); 0068 0069 void start(); 0070 0071 public Q_SLOTS: 0072 void cancel(); 0073 0074 Q_SIGNALS: 0075 void recipientsResolved(); 0076 0077 private: 0078 void doTaskDone(const Task *task, const std::shared_ptr<const Kleo::Crypto::Task::Result> &) override; 0079 0080 class Private; 0081 kdtools::pimpl_ptr<Private> d; 0082 }; 0083 0084 } // Crypto 0085 } // Kleo