qt5/src/poppler-annotation.cc | 15 +-------------- qt5/src/poppler-form.cc | 20 +++++++++++++++++++- qt5/src/poppler-form.h | 8 ++++++++ qt5/src/poppler-private.cc | 18 ++++++++++++++++++ qt5/src/poppler-private.h | 2 ++ 5 files changed, 48 insertions(+), 15 deletions(-)
New commits: commit 921de21733816fc6cd66c70c7a4914fbfee924d6 Author: Albert Astals Cid <[email protected]> Date: Fri May 18 00:45:59 2018 +0200 qt5: remove duplicate code Create new toPopplerAdditionalActionType private function diff --git a/qt5/src/poppler-annotation.cc b/qt5/src/poppler-annotation.cc index 2394ffc5..5550efcd 100644 --- a/qt5/src/poppler-annotation.cc +++ b/qt5/src/poppler-annotation.cc @@ -778,20 +778,7 @@ Link* AnnotationPrivate::additionalAction( Annotation::AdditionalActionType type if ( pdfAnnot->getType() != Annot::typeScreen && pdfAnnot->getType() != Annot::typeWidget ) return nullptr; - Annot::AdditionalActionsType actionType = Annot::actionCursorEntering; - switch ( type ) - { - case Annotation::CursorEnteringAction: actionType = Annot::actionCursorEntering; break; - case Annotation::CursorLeavingAction: actionType = Annot::actionCursorLeaving; break; - case Annotation::MousePressedAction: actionType = Annot::actionMousePressed; break; - case Annotation::MouseReleasedAction: actionType = Annot::actionMouseReleased; break; - case Annotation::FocusInAction: actionType = Annot::actionFocusIn; break; - case Annotation::FocusOutAction: actionType = Annot::actionFocusOut; break; - case Annotation::PageOpeningAction: actionType = Annot::actionPageOpening; break; - case Annotation::PageClosingAction: actionType = Annot::actionPageClosing; break; - case Annotation::PageVisibleAction: actionType = Annot::actionPageVisible; break; - case Annotation::PageInvisibleAction: actionType = Annot::actionPageInvisible; break; - } + const Annot::AdditionalActionsType actionType = toPopplerAdditionalActionType(type); ::LinkAction *linkAction = nullptr; if ( pdfAnnot->getType() == Annot::typeScreen ) diff --git a/qt5/src/poppler-form.cc b/qt5/src/poppler-form.cc index 03d04898..9d1b329a 100644 --- a/qt5/src/poppler-form.cc +++ b/qt5/src/poppler-form.cc @@ -1,6 +1,6 @@ /* poppler-form.h: qt interface to poppler * Copyright (C) 2007-2008, 2011, Pino Toscano <[email protected]> - * Copyright (C) 2008, 2011, 2012, 2015-2017 Albert Astals Cid <[email protected]> + * Copyright (C) 2008, 2011, 2012, 2015-2018 Albert Astals Cid <[email protected]> * Copyright (C) 2011 Carlos Garcia Campos <[email protected]> * Copyright (C) 2012, Adam Reichold <[email protected]> * Copyright (C) 2016, Hanno Meyer-Thurow <[email protected]> @@ -212,20 +212,7 @@ Link *FormField::additionalAction(Annotation::AdditionalActionType type) const return nullptr; } - Annot::AdditionalActionsType actionType = Annot::actionMouseReleased; - switch (type) - { - case Annotation::CursorEnteringAction: actionType = Annot::actionCursorEntering; break; - case Annotation::CursorLeavingAction: actionType = Annot::actionCursorLeaving; break; - case Annotation::MousePressedAction: actionType = Annot::actionMousePressed; break; - case Annotation::MouseReleasedAction: actionType = Annot::actionMouseReleased; break; - case Annotation::FocusInAction: actionType = Annot::actionFocusIn; break; - case Annotation::FocusOutAction: actionType = Annot::actionFocusOut; break; - case Annotation::PageOpeningAction: actionType = Annot::actionPageOpening; break; - case Annotation::PageClosingAction: actionType = Annot::actionPageClosing; break; - case Annotation::PageVisibleAction: actionType = Annot::actionPageVisible; break; - case Annotation::PageInvisibleAction: actionType = Annot::actionPageInvisible; break; - } + const Annot::AdditionalActionsType actionType = toPopplerAdditionalActionType(type); Link* action = nullptr; if (::LinkAction *act = w->getAdditionalAction(actionType)) diff --git a/qt5/src/poppler-private.cc b/qt5/src/poppler-private.cc index 78751f8e..ca5251df 100644 --- a/qt5/src/poppler-private.cc +++ b/qt5/src/poppler-private.cc @@ -163,6 +163,24 @@ namespace Debug { return QStringToUnicodeGooString(dt.toUTC().toString("yyyyMMddhhmmss+00'00'")); } + Annot::AdditionalActionsType toPopplerAdditionalActionType(Annotation::AdditionalActionType type) { + switch ( type ) + { + case Annotation::CursorEnteringAction: return Annot::actionCursorEntering; + case Annotation::CursorLeavingAction: return Annot::actionCursorLeaving; + case Annotation::MousePressedAction: return Annot::actionMousePressed; + case Annotation::MouseReleasedAction: return Annot::actionMouseReleased; + case Annotation::FocusInAction: return Annot::actionFocusIn; + case Annotation::FocusOutAction: return Annot::actionFocusOut; + case Annotation::PageOpeningAction: return Annot::actionPageOpening; + case Annotation::PageClosingAction: return Annot::actionPageClosing; + case Annotation::PageVisibleAction: return Annot::actionPageVisible; + case Annotation::PageInvisibleAction: return Annot::actionPageInvisible; + } + + return Annot::actionCursorEntering; + } + static void linkActionToTocItem( const ::LinkAction * a, DocumentData * doc, QDomElement * e ) { if ( !a || !e ) diff --git a/qt5/src/poppler-private.h b/qt5/src/poppler-private.h index 52715179..9b261d36 100644 --- a/qt5/src/poppler-private.h +++ b/qt5/src/poppler-private.h @@ -70,6 +70,8 @@ namespace Poppler { void qt5ErrorFunction(int pos, char *msg, va_list args); + Annot::AdditionalActionsType toPopplerAdditionalActionType(Annotation::AdditionalActionType type); + class LinkDestinationData { public: commit 083139775fd4ee8dd073347bb0e2835aab334444 Author: Andre Heinecke <[email protected]> Date: Wed May 2 16:20:40 2018 +0200 qt5: Add widget annot actions to FormFields This adds API to access AnnotWidget actions which are associated with a FormField. diff --git a/qt5/src/poppler-form.cc b/qt5/src/poppler-form.cc index 7396b596..03d04898 100644 --- a/qt5/src/poppler-form.cc +++ b/qt5/src/poppler-form.cc @@ -204,6 +204,37 @@ Link *FormField::additionalAction(AdditionalActionType type) const return action; } +Link *FormField::additionalAction(Annotation::AdditionalActionType type) const +{ + ::AnnotWidget *w = m_formData->fm->getWidgetAnnotation(); + if (!w) + { + return nullptr; + } + + Annot::AdditionalActionsType actionType = Annot::actionMouseReleased; + switch (type) + { + case Annotation::CursorEnteringAction: actionType = Annot::actionCursorEntering; break; + case Annotation::CursorLeavingAction: actionType = Annot::actionCursorLeaving; break; + case Annotation::MousePressedAction: actionType = Annot::actionMousePressed; break; + case Annotation::MouseReleasedAction: actionType = Annot::actionMouseReleased; break; + case Annotation::FocusInAction: actionType = Annot::actionFocusIn; break; + case Annotation::FocusOutAction: actionType = Annot::actionFocusOut; break; + case Annotation::PageOpeningAction: actionType = Annot::actionPageOpening; break; + case Annotation::PageClosingAction: actionType = Annot::actionPageClosing; break; + case Annotation::PageVisibleAction: actionType = Annot::actionPageVisible; break; + case Annotation::PageInvisibleAction: actionType = Annot::actionPageInvisible; break; + } + + Link* action = nullptr; + if (::LinkAction *act = w->getAdditionalAction(actionType)) + { + action = PageData::convertLinkActionToLink(act, m_formData->doc, QRectF()); + } + return action; +} + FormFieldButton::FormFieldButton(DocumentData *doc, ::Page *p, ::FormWidgetButton *w) : FormField(*new FormFieldData(doc, p, w)) { diff --git a/qt5/src/poppler-form.h b/qt5/src/poppler-form.h index e83deca3..2dc3fe71 100644 --- a/qt5/src/poppler-form.h +++ b/qt5/src/poppler-form.h @@ -32,6 +32,7 @@ #include <QtCore/QStringList> #include <QtCore/QSharedPointer> #include "poppler-export.h" +#include "poppler-annotation.h" class Page; class FormWidget; @@ -153,6 +154,13 @@ namespace Poppler { */ Link* additionalAction(AdditionalActionType type) const; + /** + * Returns a given widget annotation additional action + * + * \since 0.65 + */ + Link* additionalAction(Annotation::AdditionalActionType type) const; + protected: /// \cond PRIVATE FormField(FormFieldData &dd); _______________________________________________ poppler mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/poppler
