okular/core/script/kjs_event.cpp
Albert Astals Cid 19d98d6a74 Run clang-format
find . \( -name "*.cpp" -or -name "*.h"  -or -name "*.c"  -or -name "*.cc" \) -exec clang-format -i {} \;

If you reached this file doing a git blame, please see README.clang-format (added 2 commits in the future of this one)
2020-07-11 09:17:33 +02:00

152 lines
4.8 KiB
C++

/***************************************************************************
* Copyright (C) 2018 by Intevation GmbH <intevation@intevation.de> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
***************************************************************************/
#include "kjs_event_p.h"
#include <kjs/kjsarguments.h>
#include <kjs/kjsinterpreter.h>
#include <kjs/kjsobject.h>
#include <kjs/kjsprototype.h>
#include "event_p.h"
#include "kjs_field_p.h"
using namespace Okular;
static KJSPrototype *g_eventProto;
// Event.name
static KJSObject eventGetName(KJSContext *, void *object)
{
const Event *event = reinterpret_cast<Event *>(object);
return KJSString(event->name());
}
// Event.type
static KJSObject eventGetType(KJSContext *, void *object)
{
const Event *event = reinterpret_cast<Event *>(object);
return KJSString(event->type());
}
// Event.targetName (getter)
static KJSObject eventGetTargetName(KJSContext *, void *object)
{
const Event *event = reinterpret_cast<Event *>(object);
return KJSString(event->targetName());
}
// Event.targetName (setter)
static void eventSetTargetName(KJSContext *ctx, void *object, KJSObject value)
{
Event *event = reinterpret_cast<Event *>(object);
event->setTargetName(value.toString(ctx));
}
// Event.shift
static KJSObject eventGetShift(KJSContext *, void *object)
{
const Event *event = reinterpret_cast<Event *>(object);
return KJSBoolean(event->shiftModifier());
}
// Event.source
static KJSObject eventGetSource(KJSContext *ctx, void *object)
{
const Event *event = reinterpret_cast<Event *>(object);
if (event->eventType() == Event::FieldCalculate) {
FormField *src = event->source();
if (src)
return JSField::wrapField(ctx, src, event->sourcePage());
}
return KJSUndefined();
}
// Event.target
static KJSObject eventGetTarget(KJSContext *ctx, void *object)
{
const Event *event = reinterpret_cast<Event *>(object);
switch (event->eventType()) {
case Event::FieldCalculate:
case Event::FieldFormat:
case Event::FieldKeystroke:
case Event::FieldFocus:
case Event::FieldValidate: {
FormField *target = static_cast<FormField *>(event->target());
if (target)
return JSField::wrapField(ctx, target, event->targetPage());
break;
}
default: {
}
}
return KJSUndefined();
}
// Event.value (getter)
static KJSObject eventGetValue(KJSContext *, void *object)
{
const Event *event = reinterpret_cast<Event *>(object);
return KJSString(event->value().toString());
}
// Event.value (setter)
static void eventSetValue(KJSContext *ctx, void *object, KJSObject value)
{
Event *event = reinterpret_cast<Event *>(object);
event->setValue(QVariant(value.toString(ctx)));
}
// Event.rc (getter)
static KJSObject eventGetReturnCode(KJSContext *, void *object)
{
const Event *event = reinterpret_cast<Event *>(object);
return KJSBoolean(event->returnCode());
}
// Event.rc (setter)
static void eventSetReturnCode(KJSContext *ctx, void *object, KJSObject value)
{
Event *event = reinterpret_cast<Event *>(object);
event->setReturnCode(value.toBoolean(ctx));
}
// Event.willCommit (getter)
static KJSObject eventGetWillCommit(KJSContext *, void * /*object*/)
{
// TODO Someone try to understand the defintion of willCommit better from js_api_reference.pdf
return KJSBoolean(true);
}
void JSEvent::initType(KJSContext *ctx)
{
static bool initialized = false;
if (initialized)
return;
initialized = true;
if (!g_eventProto)
g_eventProto = new KJSPrototype();
g_eventProto->defineProperty(ctx, QStringLiteral("name"), eventGetName);
g_eventProto->defineProperty(ctx, QStringLiteral("type"), eventGetType);
g_eventProto->defineProperty(ctx, QStringLiteral("targetName"), eventGetTargetName, eventSetTargetName);
g_eventProto->defineProperty(ctx, QStringLiteral("shift"), eventGetShift);
g_eventProto->defineProperty(ctx, QStringLiteral("source"), eventGetSource);
g_eventProto->defineProperty(ctx, QStringLiteral("target"), eventGetTarget);
g_eventProto->defineProperty(ctx, QStringLiteral("willCommit"), eventGetWillCommit);
g_eventProto->defineProperty(ctx, QStringLiteral("value"), eventGetValue, eventSetValue);
g_eventProto->defineProperty(ctx, QStringLiteral("rc"), eventGetReturnCode, eventSetReturnCode);
}
KJSObject JSEvent::wrapEvent(KJSContext *ctx, Event *event)
{
return g_eventProto->constructObject(ctx, event);
}