Implemented DocOpen event and fixed doc() function of JSField

This commit is contained in:
Pratham Gandhi 2024-06-05 02:29:11 +05:30 committed by Albert Astals Cid
parent d02b6aa6f2
commit 51980dd07e
5 changed files with 21 additions and 3 deletions

View File

@ -2562,7 +2562,9 @@ Document::OpenResult Document::openDocument(const QString &docFile, const QUrl &
if (!docScripts.isEmpty()) {
d->m_scripter = new Scripter(d);
for (const QString &docscript : docScripts) {
d->m_scripter->execute(JavaScript, docscript);
const Okular::ScriptAction *linkScript = new Okular::ScriptAction(Okular::JavaScript, docscript);
std::shared_ptr<Event> event = Event::createDocEvent(Event::DocOpen);
d->executeScriptEvent(event, linkScript);
}
}

View File

@ -73,6 +73,8 @@ QString Event::name() const
return QStringLiteral("Validate");
case FieldMouseUp:
return QStringLiteral("MouseUp");
case DocOpen:
return QStringLiteral("Open");
case UnknownEvent:
default:
return QStringLiteral("Unknown");
@ -89,6 +91,8 @@ QString Event::type() const
case FieldValidate:
case FieldMouseUp:
return QStringLiteral("Field");
case DocOpen:
return QStringLiteral("Doc");
case UnknownEvent:
default:
return QStringLiteral("Unknown");
@ -305,3 +309,10 @@ std::shared_ptr<Event> Event::createFieldMouseUpEvent(FormField *target, Page *t
ret->setShiftModifier(QApplication::keyboardModifiers() & Qt::ShiftModifier);
return ret;
}
std::shared_ptr<Event> Event::createDocEvent(Event::EventType type)
{
std::shared_ptr<Event> ret = std::make_shared<Event>(type);
// TODO set target name.
return ret;
}

View File

@ -46,7 +46,7 @@ public:
ConsoleExec, /// < Not implemented.
DocDidPrint, /// < Not implemented.
DocDidSave, /// < Not implemented.
DocOpen, /// < Not implemented.
DocOpen, /// < This event is triggered when a document is opened. The document level script functions are scanned and any exposed scripts are executed
DocWillClose, /// < Not implemented.
DocWillPrint, /// < Not implemented.
DocWillSave, /// < Not implemented.
@ -123,6 +123,7 @@ public:
static std::shared_ptr<Event> createFormFocusEvent(FormField *target, Page *targetPage, const QString &targetName = QString());
static std::shared_ptr<Event> createFormValidateEvent(FormField *target, Page *targetPage, const QString &targetName = QString());
static std::shared_ptr<Event> createFieldMouseUpEvent(FormField *target, Page *targetPage);
static std::shared_ptr<Event> createDocEvent(Event::EventType type);
private:
class Private;

View File

@ -71,6 +71,10 @@ QJSValue JSEvent::target() const
}
break;
}
case Event::DocOpen: {
return qjsEngine(this)->globalObject().property(QStringLiteral("Doc"));
break;
}
default: {
}
}

View File

@ -45,7 +45,7 @@ static void updateField(FormField *field)
// Field.doc
QJSValue JSField::doc() const
{
return qjsEngine(this)->globalObject();
return qjsEngine(this)->globalObject().property(QStringLiteral("Doc"));
}
// Field.name