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