/* poppler-form.h: qt4 interface to poppler * Copyright (C) 2007-2008, Pino Toscano * Copyright (C) 2008, Albert Astals Cid * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef _POPPLER_QT4_FORM_H_ #define _POPPLER_QT4_FORM_H_ #include #include #include "poppler-export.h" class Page; class FormWidget; class FormWidgetButton; class FormWidgetText; class FormWidgetChoice; namespace Poppler { class DocumentData; class Link; class FormFieldData; /** The base class representing a form field. \since 0.6 */ class POPPLER_QT4_EXPORT FormField { public: /** The different types of form field. */ enum FormType { FormButton, ///< A button field. See \ref Poppler::FormFieldButton::ButtonType "ButtonType" FormText, ///< A text field. See \ref Poppler::FormFieldText::TextType "TextType" FormChoice, ///< A single choice field. See \ref Poppler::FormFieldChoice::ChoiceType "ChoiceType" FormSignature ///< A signature field. }; virtual ~FormField(); /** The type of the field. */ virtual FormType type() const = 0; /** \return The size of the field, in normalized coordinates, i.e. [0..1] with regard to the dimensions (cropbox) of the page */ QRectF rect() const; /** The ID of the field. */ int id() const; /** The internal name of the field. */ QString name() const; /** The name of the field to be used in user interface (eg messages to the user). */ QString uiName() const; /** Whether this form field is read-only. */ bool isReadOnly() const; /** Whether this form field is visible. */ bool isVisible() const; /** The activation action of this form field. \note It may be null. */ Link* activationAction() const; protected: /// \cond PRIVATE FormField(FormFieldData &dd); FormFieldData *m_formData; /// \endcond private: Q_DISABLE_COPY(FormField) }; /** A form field that represents a "button". \since 0.8 */ class POPPLER_QT4_EXPORT FormFieldButton : public FormField { public: /** * The types of button field. */ enum ButtonType { Push, ///< A simple push button. CheckBox, ///< A check box. Radio ///< A radio button. }; /// \cond PRIVATE FormFieldButton(DocumentData *doc, ::Page *p, ::FormWidgetButton *w); /// \endcond virtual ~FormFieldButton(); virtual FormType type() const; /** The particular type of the button field. */ ButtonType buttonType() const; /** * The caption to be used for the button. */ QString caption() const; /** The state of the button. */ bool state() const; /** Sets the state of the button to the new \p state . */ void setState( bool state ); /** The list with the IDs of siblings (ie, buttons belonging to the same group as the current one. Valid only for \ref Radio buttons, an empty list otherwise. */ QList siblings() const; private: Q_DISABLE_COPY(FormFieldButton) }; /** A form field that represents a text input. \since 0.6 */ class POPPLER_QT4_EXPORT FormFieldText : public FormField { public: /** The particular type of this text field. */ enum TextType { Normal, ///< A simple singleline text field. Multiline, ///< A multiline text field. FileSelect ///< An input field to select the path of a file on disk. }; /// \cond PRIVATE FormFieldText(DocumentData *doc, ::Page *p, ::FormWidgetText *w); /// \endcond virtual ~FormFieldText(); virtual FormType type() const; /** The text type of the text field. */ TextType textType() const; /** The text associated with the text field. */ QString text() const; /** Sets the text associated with the text field to the specified \p text. */ void setText( const QString& text ); /** Whether this text field is a password input, eg its text \b must be replaced with asterisks. Always false for \ref FileSelect text fields. */ bool isPassword() const; /** Whether this text field should allow rich text. */ bool isRichText() const; /** The maximum length for the text of this field, or -1 if not set. */ int maximumLength() const; /** The horizontal alignment for the text of this text field. */ Qt::Alignment textAlignment() const; /** Whether the text inserted manually in the field (where possible) can be spell-checked. */ bool canBeSpellChecked() const; private: Q_DISABLE_COPY(FormFieldText) }; /** A form field that represents a choice field. \since 0.6 */ class POPPLER_QT4_EXPORT FormFieldChoice : public FormField { public: /** The particular type of this choice field. */ enum ChoiceType { ComboBox, ///< A simple singleline text field. ListBox ///< A multiline text field. }; /// \cond PRIVATE FormFieldChoice(DocumentData *doc, ::Page *p, ::FormWidgetChoice *w); /// \endcond virtual ~FormFieldChoice(); virtual FormType type() const; /** The choice type of the choice field. */ ChoiceType choiceType() const; /** The possible choices of the choice field. */ QStringList choices() const; /** Whether this FormFieldChoice::ComboBox is editable, i.e. the user can type in a custom value. Always false for the other types of choices. */ bool isEditable() const; /** Whether more than one choice of this FormFieldChoice::ListBox can be selected at the same time. Always false for the other types of choices. */ bool multiSelect() const; /** The currently selected choices. */ QList currentChoices() const; /** Sets the selected choices to \p choice. */ void setCurrentChoices( const QList &choice ); /** The horizontal alignment for the text of this text field. */ Qt::Alignment textAlignment() const; /** Whether the text inserted manually in the field (where possible) can be spell-checked. Returns false if the field is not an editable text field. */ bool canBeSpellChecked() const; private: Q_DISABLE_COPY(FormFieldChoice) }; } #endif