File indexing completed on 2024-06-16 04:55:56

0001 /* -*- mode: c++; c-basic-offset:4 -*-
0002     decryptverifyemailcontroller.h
0003 
0004     This file is part of Kleopatra, the KDE keymanager
0005     SPDX-FileCopyrightText: 2008 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/types.h>
0015 
0016 #include <gpgme++/global.h>
0017 
0018 #include <QMetaType>
0019 
0020 #include <memory>
0021 #include <vector>
0022 
0023 #include <gpgme++/verificationresult.h>
0024 
0025 namespace KMime
0026 {
0027 namespace Types
0028 {
0029 class Mailbox;
0030 }
0031 }
0032 
0033 namespace Kleo
0034 {
0035 
0036 class Input;
0037 class Output;
0038 
0039 namespace Crypto
0040 {
0041 
0042 class DecryptVerifyEMailController : public Controller
0043 {
0044     Q_OBJECT
0045 public:
0046     explicit DecryptVerifyEMailController(QObject *parent = nullptr);
0047     explicit DecryptVerifyEMailController(const std::shared_ptr<const ExecutionContext> &cmd, QObject *parent = nullptr);
0048 
0049     ~DecryptVerifyEMailController() override;
0050 
0051     void setInput(const std::shared_ptr<Input> &input);
0052     void setInputs(const std::vector<std::shared_ptr<Input>> &inputs);
0053 
0054     void setSignedData(const std::shared_ptr<Input> &data);
0055     void setSignedData(const std::vector<std::shared_ptr<Input>> &data);
0056 
0057     void setOutput(const std::shared_ptr<Output> &output);
0058     void setOutputs(const std::vector<std::shared_ptr<Output>> &outputs);
0059 
0060     void setInformativeSenders(const std::vector<KMime::Types::Mailbox> &senders);
0061 
0062     void setWizardShown(bool shown);
0063 
0064     void setOperation(DecryptVerifyOperation operation);
0065     void setVerificationMode(VerificationMode vm);
0066     void setProtocol(GpgME::Protocol protocol);
0067 
0068     void setSessionId(unsigned int id);
0069 
0070     void start();
0071 
0072 public Q_SLOTS:
0073     void cancel();
0074 
0075 Q_SIGNALS:
0076     void verificationResult(const GpgME::VerificationResult &);
0077 
0078 private:
0079     void doTaskDone(const Task *task, const std::shared_ptr<const Task::Result> &result) override;
0080 
0081     class Private;
0082     kdtools::pimpl_ptr<Private> d;
0083     Q_PRIVATE_SLOT(d, void slotWizardCanceled())
0084     Q_PRIVATE_SLOT(d, void schedule())
0085 };
0086 
0087 } // namespace Crypto
0088 } // namespace Kleo
0089 
0090 Q_DECLARE_METATYPE(GpgME::VerificationResult)