File indexing completed on 2024-06-23 05:13:53
0001 /* -*- mode: c++; c-basic-offset:4 -*- 0002 crypto/gui/signencryptwizard.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/gui/wizard.h> 0013 0014 #include <crypto/gui/signerresolvepage.h> 0015 0016 #include <utils/pimpl_ptr.h> 0017 0018 #include <KMime/Types> 0019 #include <gpgme++/global.h> 0020 0021 #include <memory> 0022 #include <vector> 0023 0024 namespace GpgME 0025 { 0026 class Key; 0027 } 0028 0029 class QFileInfo; 0030 template<typename T> 0031 class QList; 0032 using QFileInfoList = QList<QFileInfo>; 0033 0034 namespace Kleo 0035 { 0036 namespace Crypto 0037 { 0038 0039 class Task; 0040 class TaskCollection; 0041 0042 namespace Gui 0043 { 0044 0045 class ObjectsPage; 0046 class ResolveRecipientsPage; 0047 class ResultPage; 0048 class SignerResolvePage; 0049 0050 class SignEncryptWizard : public Wizard 0051 { 0052 Q_OBJECT 0053 public: 0054 explicit SignEncryptWizard(QWidget *parent = nullptr, Qt::WindowFlags f = {}); 0055 ~SignEncryptWizard() override; 0056 0057 struct Page { 0058 enum Id { 0059 ResolveSigner = 0, 0060 Objects, 0061 ResolveRecipients, 0062 Result, 0063 }; 0064 }; 0065 0066 void setCommitPage(Page::Id); 0067 0068 GpgME::Protocol presetProtocol() const; 0069 void setPresetProtocol(GpgME::Protocol proto); 0070 0071 GpgME::Protocol selectedProtocol() const; 0072 0073 /// SignOrEncryptFiles mode subinterface 0074 //@{ 0075 0076 QFileInfoList resolvedFiles() const; 0077 void setFiles(const QStringList &files); 0078 0079 bool signingSelected() const; 0080 void setSigningSelected(bool selected); 0081 0082 bool encryptionSelected() const; 0083 void setEncryptionSelected(bool selected); 0084 0085 bool isSigningUserMutable() const; 0086 void setSigningUserMutable(bool isMutable); 0087 0088 bool isEncryptionUserMutable() const; 0089 void setEncryptionUserMutable(bool isMutable); 0090 0091 bool isMultipleProtocolsAllowed() const; 0092 void setMultipleProtocolsAllowed(bool allowed); 0093 0094 //@} 0095 0096 /** if true, the user is allowed to remove/add recipients via the UI. 0097 * Defaults to @p false. 0098 */ 0099 bool recipientsUserMutable() const; 0100 void setRecipientsUserMutable(bool isMutable); 0101 0102 void setSignersAndCandidates(const std::vector<KMime::Types::Mailbox> &signers, const std::vector<std::vector<GpgME::Key>> &keys); 0103 0104 void setTaskCollection(const std::shared_ptr<TaskCollection> &tasks); 0105 0106 std::vector<GpgME::Key> resolvedCertificates() const; 0107 std::vector<GpgME::Key> resolvedSigners() const; 0108 0109 bool isAsciiArmorEnabled() const; 0110 void setAsciiArmorEnabled(bool enabled); 0111 0112 bool keepResultPageOpenWhenDone() const; 0113 void setKeepResultPageOpenWhenDone(bool keep); 0114 0115 void onNext(int currentId) override; 0116 0117 Q_SIGNALS: 0118 void signersResolved(); 0119 void objectsResolved(); 0120 void recipientsResolved(); 0121 0122 protected: 0123 SignerResolvePage *signerResolvePage(); 0124 const SignerResolvePage *signerResolvePage() const; 0125 ObjectsPage *objectsPage(); 0126 ResultPage *resultPage(); 0127 ResolveRecipientsPage *resolveRecipientsPage(); 0128 0129 void setSignerResolvePageValidator(const std::shared_ptr<SignerResolvePage::Validator> &validator); 0130 0131 private: 0132 class Private; 0133 kdtools::pimpl_ptr<Private> d; 0134 }; 0135 0136 } 0137 } 0138 }