nodeguy/src/cpp/QtGui/QEvent/QKeyEvent/qkeyevent_wrap.cpp

45 lines
1.5 KiB
C++

#include "qkeyevent_wrap.h"
#include "src/cpp/Extras/Utils/nutils.h"
#include <QString>
#include "deps/spdlog/spdlog.h"
#include "src/cpp/core/Component/component_macro.h"
Napi::FunctionReference QKeyEventWrap::constructor;
Napi::Object QKeyEventWrap::init(Napi::Env env, Napi::Object exports) {
Napi::HandleScope scope(env);
char CLASSNAME[] = "QKeyEvent";
Napi::Function func = DefineClass(env, CLASSNAME, {
InstanceMethod("text", &QKeyEventWrap::text),
COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE
});
constructor = Napi::Persistent(func);
exports.Set(CLASSNAME, func);
return exports;
}
QKeyEvent* QKeyEventWrap::getInternalInstance() {
return this->instance.get();
}
QKeyEventWrap::QKeyEventWrap(const Napi::CallbackInfo& info): Napi::ObjectWrap<QKeyEventWrap>(info) {
Napi::Env env = info.Env();
Napi::HandleScope scope(env);
if(info.Length() == 1) {
Napi::External<QKeyEvent> eventObject = info[0].As<Napi::External<QKeyEvent>>();
this->instance = std::unique_ptr<QKeyEvent>(eventObject.Data());
} else {
Napi::TypeError::New(env, "Wrong number of arguments").ThrowAsJavaScriptException();
}
}
QKeyEventWrap::~QKeyEventWrap() {
// Do not destroy instance here. It will be done by Qt Event loop.
}
Napi::Value QKeyEventWrap::text(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
QString text = this->instance->text();
Napi::String keyValue = Napi::String::New(env, text.toStdString());
return keyValue;
}