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