File indexing completed on 2024-05-12 16:06:45

0001 /*
0002     SPDX-FileCopyrightText: 2007 Pino Toscano <pino@kde.org>
0003     SPDX-FileCopyrightText: 2019 Oliver Sander <oliver.sander@tu-dresden.de>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #ifndef _OKULAR_GENERATOR_PDF_FORMFIELDS_H_
0009 #define _OKULAR_GENERATOR_PDF_FORMFIELDS_H_
0010 
0011 #include "core/form.h"
0012 #include <poppler-form.h>
0013 
0014 class PopplerFormFieldButton : public Okular::FormFieldButton
0015 {
0016 public:
0017     explicit PopplerFormFieldButton(std::unique_ptr<Poppler::FormFieldButton> field);
0018 
0019     // inherited from Okular::FormField
0020     Okular::NormalizedRect rect() const override;
0021     int id() const override;
0022     QString name() const override;
0023     QString uiName() const override;
0024     QString fullyQualifiedName() const override;
0025     bool isReadOnly() const override;
0026     void setReadOnly(bool value) override;
0027     bool isVisible() const override;
0028     void setVisible(bool value) override;
0029     bool isPrintable() const override;
0030     void setPrintable(bool value) override;
0031 
0032     // inherited from Okular::FormFieldButton
0033     ButtonType buttonType() const override;
0034     QString caption() const override;
0035     bool state() const override;
0036     void setState(bool state) override;
0037     QList<int> siblings() const override;
0038     void setIcon(Okular::FormField *field) override;
0039     /*
0040      * Supported only in newer versions of Poppler library.
0041      *
0042      * @since 1.9
0043      */
0044     Poppler::FormFieldIcon icon() const;
0045 
0046 private:
0047     std::unique_ptr<Poppler::FormFieldButton> m_field;
0048     Okular::NormalizedRect m_rect;
0049     int m_id;
0050 };
0051 
0052 class PopplerFormFieldText : public Okular::FormFieldText
0053 {
0054 public:
0055     explicit PopplerFormFieldText(std::unique_ptr<Poppler::FormFieldText> field);
0056 
0057     // inherited from Okular::FormField
0058     Okular::NormalizedRect rect() const override;
0059     int id() const override;
0060     QString name() const override;
0061     QString uiName() const override;
0062     QString fullyQualifiedName() const override;
0063     bool isReadOnly() const override;
0064     void setReadOnly(bool value) override;
0065     bool isVisible() const override;
0066     void setVisible(bool value) override;
0067     bool isPrintable() const override;
0068     void setPrintable(bool value) override;
0069 
0070     // inherited from Okular::FormFieldText
0071     Okular::FormFieldText::TextType textType() const override;
0072     QString text() const override;
0073     void setText(const QString &text) override;
0074     void setAppearanceText(const QString &text) override;
0075     bool isPassword() const override;
0076     bool isRichText() const override;
0077     int maximumLength() const override;
0078     Qt::Alignment textAlignment() const override;
0079     bool canBeSpellChecked() const override;
0080 
0081 private:
0082     std::unique_ptr<Poppler::FormFieldText> m_field;
0083     Okular::NormalizedRect m_rect;
0084     int m_id;
0085 };
0086 
0087 class PopplerFormFieldChoice : public Okular::FormFieldChoice
0088 {
0089 public:
0090     explicit PopplerFormFieldChoice(std::unique_ptr<Poppler::FormFieldChoice> field);
0091 
0092     // inherited from Okular::FormField
0093     Okular::NormalizedRect rect() const override;
0094     int id() const override;
0095     QString name() const override;
0096     QString uiName() const override;
0097     QString fullyQualifiedName() const override;
0098     bool isReadOnly() const override;
0099     void setReadOnly(bool value) override;
0100     bool isVisible() const override;
0101     void setVisible(bool value) override;
0102     bool isPrintable() const override;
0103     void setPrintable(bool value) override;
0104 
0105     // inherited from Okular::FormFieldChoice
0106     ChoiceType choiceType() const override;
0107     QStringList choices() const override;
0108     bool isEditable() const override;
0109     bool multiSelect() const override;
0110     QList<int> currentChoices() const override;
0111     void setCurrentChoices(const QList<int> &choices) override;
0112     QString editChoice() const override;
0113     void setEditChoice(const QString &text) override;
0114     Qt::Alignment textAlignment() const override;
0115     bool canBeSpellChecked() const override;
0116 
0117 private:
0118     std::unique_ptr<Poppler::FormFieldChoice> m_field;
0119     Okular::NormalizedRect m_rect;
0120     int m_id;
0121 };
0122 
0123 class PopplerFormFieldSignature : public Okular::FormFieldSignature
0124 {
0125 public:
0126     explicit PopplerFormFieldSignature(std::unique_ptr<Poppler::FormFieldSignature> field);
0127     ~PopplerFormFieldSignature() override;
0128 
0129     // inherited from Okular::FormField
0130     Okular::NormalizedRect rect() const override;
0131     int id() const override;
0132     QString name() const override;
0133     QString uiName() const override;
0134     QString fullyQualifiedName() const override;
0135     bool isReadOnly() const override;
0136     bool isVisible() const override;
0137 
0138     // inherited from Okular::FormFieldSignature
0139     SignatureType signatureType() const override;
0140     Okular::SignatureInfo signatureInfo() const override;
0141     bool sign(const Okular::NewSignatureData &oData, const QString &newPath) const override;
0142 
0143 private:
0144     std::unique_ptr<Poppler::FormFieldSignature> m_field;
0145     Okular::SignatureInfo m_info;
0146     Okular::NormalizedRect m_rect;
0147     int m_id;
0148 };
0149 
0150 #endif