File indexing completed on 2024-09-22 04:50:00

0001 /*
0002  * SPDX-FileCopyrightText: 2017 Daniel Vrátil <dvratil@kde.org>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-or-later
0005  *
0006  */
0007 
0008 #pragma once
0009 
0010 #include "filteractionwithcrypto.h"
0011 
0012 #include <gpgme++/key.h>
0013 
0014 #include <Libkleo/KeyCache>
0015 
0016 namespace MailCommon
0017 {
0018 class FilterActionEncrypt : public FilterActionWithCrypto
0019 {
0020     Q_OBJECT
0021 public:
0022     explicit FilterActionEncrypt(QObject *parent = nullptr);
0023     ~FilterActionEncrypt() override;
0024 
0025     static FilterAction *newAction();
0026 
0027     [[nodiscard]] QString displayString() const override;
0028 
0029     [[nodiscard]] QString argsAsString() const override;
0030     void argsFromString(const QString &argsStr) override;
0031 
0032     [[nodiscard]] SearchRule::RequiredPart requiredPart() const override;
0033     [[nodiscard]] FilterAction::ReturnCode process(ItemContext &context, bool applyOnOutbound) const override;
0034 
0035     [[nodiscard]] bool isEmpty() const override;
0036 
0037     [[nodiscard]] QString informationAboutNotValidAction() const override;
0038 
0039     [[nodiscard]] QWidget *createParamWidget(QWidget *parent) const override;
0040     void setParamWidgetValue(QWidget *paramWidget) const override;
0041     void applyParamWidgetValue(QWidget *paramWidget) override;
0042 
0043     [[nodiscard]] GpgME::Key key() const;
0044 
0045     [[nodiscard]] bool reencrypt() const;
0046 
0047 private:
0048     std::shared_ptr<const Kleo::KeyCache> mKeyCache;
0049     GpgME::Key mKey;
0050     bool mReencrypt = false;
0051 };
0052 } // namespace MailCommon