diff --git a/ui/formwidgets.cpp b/ui/formwidgets.cpp index 99543f33b..ae90887f9 100644 --- a/ui/formwidgets.cpp +++ b/ui/formwidgets.cpp @@ -30,6 +30,11 @@ void FormWidgetsController::signalChanged( FormWidgetIface *w ) emit changed( w ); } +void FormWidgetsController::signalAction( Okular::Action *a ) +{ + emit action( a ); +} + QButtonGroup* FormWidgetsController::registerRadioButton( FormWidgetIface* widget, const QList< int >& siblings ) { if ( !widget->button() ) @@ -212,6 +217,14 @@ PushButtonEdit::PushButtonEdit( Okular::FormFieldButton * button, QWidget * pare setText( m_form->caption() ); setEnabled( !m_form->isReadOnly() ); setVisible( m_form->isVisible() ); + + connect( this, SIGNAL( clicked() ), this, SLOT( slotClicked() ) ); +} + +void PushButtonEdit::slotClicked() +{ + if ( m_form->activationAction() ) + m_controller->signalAction( m_form->activationAction() ); } diff --git a/ui/formwidgets.h b/ui/formwidgets.h index fcd6845b5..6d88ab7bc 100644 --- a/ui/formwidgets.h +++ b/ui/formwidgets.h @@ -27,6 +27,7 @@ class PageViewItem; class RadioButtonEdit; namespace Okular { +class Action; class FormField; class FormFieldButton; class FormFieldChoice; @@ -50,12 +51,14 @@ class FormWidgetsController : public QObject virtual ~FormWidgetsController(); void signalChanged( FormWidgetIface *w ); + void signalAction( Okular::Action *action ); QButtonGroup* registerRadioButton( FormWidgetIface* widget, const QList< int >& siblings ); void dropRadioButtons(); signals: void changed( FormWidgetIface *w ); + void action( Okular::Action *action ); private slots: void slotButtonClicked( QAbstractButton *button ); @@ -108,6 +111,9 @@ class PushButtonEdit : public QPushButton, public FormWidgetIface public: PushButtonEdit( Okular::FormFieldButton * button, QWidget * parent = 0 ); + private slots: + void slotClicked(); + private: Okular::FormFieldButton * m_form; }; diff --git a/ui/pageview.cpp b/ui/pageview.cpp index f2caec1f6..794aa5ea6 100644 --- a/ui/pageview.cpp +++ b/ui/pageview.cpp @@ -172,6 +172,8 @@ FormWidgetsController* PageViewPrivate::formWidgetsController() formsWidgetController = new FormWidgetsController(); QObject::connect( formsWidgetController, SIGNAL( changed( FormWidgetIface* ) ), q, SLOT( slotFormWidgetChanged( FormWidgetIface * ) ) ); + QObject::connect( formsWidgetController, SIGNAL( action( Okular::Action* ) ), + q, SLOT( slotAction( Okular::Action* ) ) ); } return formsWidgetController; @@ -3210,6 +3212,11 @@ void PageView::slotStopSpeaks() d->m_tts->stopAllSpeechs(); } + +void PageView::slotAction( Okular::Action *action ) +{ + d->document->processAction( action ); +} //END private SLOTS #include "pageview.moc" diff --git a/ui/pageview.h b/ui/pageview.h index 8cf2287ba..4d84bf43f 100644 --- a/ui/pageview.h +++ b/ui/pageview.h @@ -31,6 +31,7 @@ class KActionCollection; class KUrl; namespace Okular { +class Action; class Document; class Annotation; } @@ -200,6 +201,7 @@ Q_OBJECT void slotSpeakDocument(); void slotSpeakCurrentPage(); void slotStopSpeaks(); + void slotAction( Okular::Action *action ); }; #endif