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

Reply via email to