File indexing completed on 2024-06-16 04:55:58
0001 /* -*- mode: c++; c-basic-offset:4 -*- 0002 crypto/signemailcontroller.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 SignEMailController : public Controller 0039 { 0040 Q_OBJECT 0041 public: 0042 enum Mode { 0043 GpgOLMode, 0044 ClipboardMode, 0045 0046 NumModes 0047 }; 0048 0049 explicit SignEMailController(Mode mode, QObject *parent = nullptr); 0050 explicit SignEMailController(const std::shared_ptr<ExecutionContext> &xc, Mode mode, QObject *parent = nullptr); 0051 ~SignEMailController() override; 0052 0053 Mode mode() const; 0054 0055 void setProtocol(GpgME::Protocol proto); 0056 GpgME::Protocol protocol() const; 0057 // const char * protocolAsString() const; 0058 0059 void startResolveSigners(); 0060 0061 void setDetachedSignature(bool detached); 0062 0063 void setInputAndOutput(const std::shared_ptr<Kleo::Input> &input, const std::shared_ptr<Kleo::Output> &output); 0064 void setInputsAndOutputs(const std::vector<std::shared_ptr<Kleo::Input>> &inputs, const std::vector<std::shared_ptr<Kleo::Output>> &outputs); 0065 0066 void start(); 0067 0068 public Q_SLOTS: 0069 void cancel(); 0070 0071 Q_SIGNALS: 0072 void signersResolved(); 0073 void reportMicAlg(const QString &micalg); 0074 0075 private: 0076 void doTaskDone(const Task *task, const std::shared_ptr<const Task::Result> &result) override; 0077 0078 class Private; 0079 kdtools::pimpl_ptr<Private> d; 0080 Q_PRIVATE_SLOT(d, void slotWizardSignersResolved()) 0081 Q_PRIVATE_SLOT(d, void slotWizardCanceled()) 0082 Q_PRIVATE_SLOT(d, void schedule()) 0083 }; 0084 0085 } // Crypto 0086 } // Kleo