Add QMoveEvent

This commit is contained in:
Simon Edwards 2022-04-05 20:48:21 +02:00
parent 4155a1f586
commit 733c24e6cd
6 changed files with 109 additions and 0 deletions

View File

@ -51,6 +51,7 @@ add_library(${CORE_WIDGETS_ADDON} SHARED
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QDrag/qdrag_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QKeyEvent/qkeyevent_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QMouseEvent/qmouseevent_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QMoveEvent/qmoveevent_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QWheelEvent/qwheelevent_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QNativeGestureEvent/qnativegestureevent_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QPaintEvent/qpaintevent_wrap.cpp"

View File

@ -0,0 +1,28 @@
#pragma once
#include <napi.h>
#include <QMoveEvent>
#include "Extras/Export/export.h"
#include "QtGui/QEvent/QEvent/qevent_macro.h"
#include "core/Component/component_macro.h"
class DLL_EXPORT QMoveEventWrap : public Napi::ObjectWrap<QMoveEventWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION
QEVENT_WRAPPED_METHODS_DECLARATION
private:
QMoveEvent* instance;
public:
static Napi::Object init(Napi::Env env, Napi::Object exports);
QMoveEventWrap(const Napi::CallbackInfo& info);
~QMoveEventWrap();
QMoveEvent* getInternalInstance();
// class constructor
static Napi::FunctionReference constructor;
// wrapped methods
Napi::Value oldPos(const Napi::CallbackInfo& info);
Napi::Value pos(const Napi::CallbackInfo& info);
};

View File

@ -0,0 +1,59 @@
#include "QtGui/QEvent/QMoveEvent/qmoveevent_wrap.h"
#include <QString>
#include "Extras/Utils/nutils.h"
#include "QtCore/QPoint/qpoint_wrap.h"
Napi::FunctionReference QMoveEventWrap::constructor;
Napi::Object QMoveEventWrap::init(Napi::Env env, Napi::Object exports) {
Napi::HandleScope scope(env);
char CLASSNAME[] = "QMoveEvent";
Napi::Function func =
DefineClass(env, CLASSNAME,
{InstanceMethod("oldPos", &QMoveEventWrap::oldPos),
InstanceMethod("pos", &QMoveEventWrap::pos),
COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE(QMoveEventWrap)
QEVENT_WRAPPED_METHODS_EXPORT_DEFINE(QMoveEventWrap)});
constructor = Napi::Persistent(func);
exports.Set(CLASSNAME, func);
return exports;
}
QMoveEvent* QMoveEventWrap::getInternalInstance() { return this->instance; }
QMoveEventWrap::QMoveEventWrap(const Napi::CallbackInfo& info)
: Napi::ObjectWrap<QMoveEventWrap>(info) {
Napi::Env env = info.Env();
if (info.Length() == 1) {
Napi::External<QMoveEvent> eventObject =
info[0].As<Napi::External<QMoveEvent>>();
this->instance = static_cast<QMoveEvent*>(eventObject.Data());
} else {
Napi::TypeError::New(env, "Wrong number of arguments")
.ThrowAsJavaScriptException();
}
this->rawData = extrautils::configureComponent(this->getInternalInstance());
}
QMoveEventWrap::~QMoveEventWrap() {
// Do not destroy instance here. It will be done by Qt Event loop.
}
Napi::Value QMoveEventWrap::oldPos(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
QPoint ret = this->instance->oldPos();
auto instance = QPointWrap::constructor.New(
{Napi::External<QPoint>::New(env, new QPoint(ret))});
return instance;
}
Napi::Value QMoveEventWrap::pos(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
QPoint ret = this->instance->pos();
auto instance = QPointWrap::constructor.New(
{Napi::External<QPoint>::New(env, new QPoint(ret))});
return instance;
}

View File

@ -29,6 +29,7 @@
#include "QtGui/QEvent/QDropEvent/qdropevent_wrap.h"
#include "QtGui/QEvent/QKeyEvent/qkeyevent_wrap.h"
#include "QtGui/QEvent/QMouseEvent/qmouseevent_wrap.h"
#include "QtGui/QEvent/QMoveEvent/qmoveevent_wrap.h"
#include "QtGui/QEvent/QNativeGestureEvent/qnativegestureevent_wrap.h"
#include "QtGui/QEvent/QPaintEvent/qpaintevent_wrap.h"
#include "QtGui/QEvent/QResizeEvent/qresizeevent_wrap.h"
@ -202,6 +203,7 @@ Napi::Object Main(Napi::Env env, Napi::Object exports) {
QLineEditWrap::init(env, exports);
QKeyEventWrap::init(env, exports);
QMouseEventWrap::init(env, exports);
QMoveEventWrap::init(env, exports);
QWheelEventWrap::init(env, exports);
QTabletEventWrap::init(env, exports);
QDragWrap::init(env, exports);

View File

@ -24,6 +24,7 @@ export { QFontMetricsF } from './lib/QtGui/QFontMetricsF';
// Events: Maybe a separate module ?
export { QKeyEvent } from './lib/QtGui/QEvent/QKeyEvent';
export { QMouseEvent } from './lib/QtGui/QEvent/QMouseEvent';
export { QMoveEvent } from './lib/QtGui/QEvent/QMoveEvent';
export { QWheelEvent } from './lib/QtGui/QEvent/QWheelEvent';
export { QNativeGestureEvent } from './lib/QtGui/QEvent/QNativeGestureEvent';
export { QTabletEvent } from './lib/QtGui/QEvent/QTabletEvent';

View File

@ -0,0 +1,18 @@
import addon from '../../utils/addon';
import { NativeRawPointer } from '../../core/Component';
import { QEvent } from './QEvent';
import { QPoint } from '../../QtCore/QPoint';
export class QMoveEvent extends QEvent {
constructor(event: NativeRawPointer<'QEvent'>) {
super(new addon.QMoveEvent(event));
}
oldPos(): QPoint {
return new QPoint(this.native.oldPos());
}
pos(): QPoint {
return new QPoint(this.native.pos());
}
}