Simplify form action handling

Instead of going widget -> controller -> pageview -> document do
widget -> document directly.
remotes/origin/work/commitevent
Nicolas Fella 4 years ago committed by Nicolas Fella
parent a8e5f6e9f7
commit 3e2e5cc95e
  1. 17
      part/formwidgets.cpp
  2. 10
      part/formwidgets.h
  3. 4
      part/pageview.cpp

@ -224,6 +224,11 @@ void FormWidgetsController::slotFormButtonsChangedByUndoRedo(int pageNumber, con
emit changed(pageNumber);
}
Okular::Document *FormWidgetsController::document() const
{
return m_doc;
}
FormWidgetIface *FormWidgetFactory::createWidget(Okular::FormField *ff, PageView *pageView)
{
FormWidgetIface *widget = nullptr;
@ -486,7 +491,7 @@ bool FormLineEdit::event(QEvent *e)
QFocusEvent *focusEvent = static_cast<QFocusEvent *>(e);
if (focusEvent->reason() != Qt::ActiveWindowFocusReason) {
if (const Okular::Action *action = m_ff->additionalAction(Okular::Annotation::FocusIn))
emit m_controller->focusAction(action, fft);
m_controller->document()->processFocusAction(action, fft);
}
setFocus();
} else if (e->type() == QEvent::FocusOut) {
@ -499,10 +504,10 @@ bool FormLineEdit::event(QEvent *e)
if (const Okular::Action *action = m_ff->additionalAction(Okular::Annotation::FocusOut)) {
bool ok = false;
emit m_controller->validateAction(action, static_cast<Okular::FormFieldText *>(m_ff), ok);
m_controller->document()->processValidateAction(action, static_cast<Okular::FormFieldText *>(m_ff), ok);
}
if (const Okular::Action *action = m_ff->additionalAction(Okular::FormField::FormatField)) {
emit m_controller->formatAction(action, static_cast<Okular::FormFieldText *>(m_ff));
m_controller->document()->processFormatAction(action, static_cast<Okular::FormFieldText *>(m_ff));
}
}
return QLineEdit::event(e);
@ -546,7 +551,7 @@ void FormLineEdit::slotChanged()
bool ok = false;
QString oldInputText = form->text();
form->setText(text());
emit m_controller->keystrokeAction(form->additionalAction(Okular::FormField::FieldModified), form, ok);
m_controller->document()->processKeystrokeAction(form->additionalAction(Okular::FormField::FieldModified), form, ok);
form->setText(oldInputText);
if (!ok) {
setText(oldInputText);
@ -642,7 +647,7 @@ bool TextAreaEdit::event(QEvent *e)
} else if (e->type() == QEvent::FocusOut) {
m_editing = false;
if (const Okular::Action *action = m_ff->additionalAction(Okular::FormField::FormatField)) {
emit m_controller->formatAction(action, static_cast<Okular::FormFieldText *>(m_ff));
m_controller->document()->processFormatAction(action, static_cast<Okular::FormFieldText *>(m_ff));
}
}
return KTextEdit::event(e);
@ -706,7 +711,7 @@ void TextAreaEdit::slotChanged()
bool ok = false;
QString oldInputText = form->text();
form->setText(toPlainText());
emit m_controller->keystrokeAction(form->additionalAction(Okular::FormField::FieldModified), form, ok);
m_controller->document()->processKeystrokeAction(form->additionalAction(Okular::FormField::FieldModified), form, ok);
form->setText(oldInputText);
if (!ok) {
setText(oldInputText);

@ -68,6 +68,8 @@ public:
bool canUndo();
bool canRedo();
Okular::Document *document() const;
static bool shouldFormWidgetBeShown(Okular::FormField *form);
Q_SIGNALS:
@ -92,14 +94,6 @@ Q_SIGNALS:
void action(Okular::Action *action);
void focusAction(const Okular::Action *action, Okular::FormFieldText *ff);
void formatAction(const Okular::Action *action, Okular::FormFieldText *ff);
void keystrokeAction(const Okular::Action *action, Okular::FormFieldText *ff, bool &ok);
void validateAction(const Okular::Action *action, Okular::FormFieldText *ff, bool &ok);
void refreshFormWidget(Okular::FormField *form);
private Q_SLOTS:

@ -282,10 +282,6 @@ FormWidgetsController *PageViewPrivate::formWidgetsController()
formsWidgetController = new FormWidgetsController(document);
QObject::connect(formsWidgetController, &FormWidgetsController::changed, q, &PageView::slotFormChanged);
QObject::connect(formsWidgetController, &FormWidgetsController::action, q, &PageView::slotAction);
QObject::connect(formsWidgetController, &FormWidgetsController::formatAction, q, [this](const Okular::Action *action, Okular::FormFieldText *fft) { document->processFormatAction(action, fft); });
QObject::connect(formsWidgetController, &FormWidgetsController::keystrokeAction, q, [this](const Okular::Action *action, Okular::FormFieldText *fft, bool &ok) { document->processKeystrokeAction(action, fft, ok); });
QObject::connect(formsWidgetController, &FormWidgetsController::focusAction, q, [this](const Okular::Action *action, Okular::FormFieldText *fft) { document->processFocusAction(action, fft); });
QObject::connect(formsWidgetController, &FormWidgetsController::validateAction, q, [this](const Okular::Action *action, Okular::FormFieldText *fft, bool &ok) { document->processValidateAction(action, fft, ok); });
}
return formsWidgetController;

Loading…
Cancel
Save