You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
3.7 KiB
116 lines
3.7 KiB
/*************************************************************************** |
|
* 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/kjsinterpreter.h> |
|
#include <kjs/kjsobject.h> |
|
#include <kjs/kjsprototype.h> |
|
#include <kjs/kjsarguments.h> |
|
|
|
#include "kjs_field_p.h" |
|
#include "event_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.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 ); |
|
if ( event->eventType() == Event::FieldCalculate ) |
|
{ |
|
FormField *target = static_cast< FormField * >( event->target() ); |
|
if ( target ) |
|
return JSField::wrapField( ctx, target, event->targetPage() ); |
|
} |
|
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 ) ) ); |
|
} |
|
|
|
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( "source" ), eventGetSource ); |
|
g_eventProto->defineProperty( ctx, QStringLiteral( "target" ), eventGetTarget ); |
|
g_eventProto->defineProperty( ctx, QStringLiteral( "value" ), eventGetValue, eventSetValue ); |
|
} |
|
|
|
KJSObject JSEvent::wrapEvent( KJSContext *ctx, Event *event ) |
|
{ |
|
return g_eventProto->constructObject( ctx, event ); |
|
} |
|
|
|
|
|
|