diff --git a/CMakeLists.txt b/CMakeLists.txt index fe20d42f5..c7715017e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,6 +58,7 @@ add_library(${CORE_WIDGETS_ADDON} SHARED "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QDropEvent/qdropevent_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QDragMoveEvent/qdragmoveevent_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QDragLeaveEvent/qdragleaveevent_wrap.cpp" + "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QResizeEvent/qresizeevent_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QFontDatabase/qfontdatabase_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QFontMetrics/qfontmetrics_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QFontMetricsF/qfontmetricsf_wrap.cpp" diff --git a/src/cpp/include/nodegui/QtGui/QEvent/QResizeEvent/qresizeevent_wrap.h b/src/cpp/include/nodegui/QtGui/QEvent/QResizeEvent/qresizeevent_wrap.h new file mode 100644 index 000000000..e5d85f14d --- /dev/null +++ b/src/cpp/include/nodegui/QtGui/QEvent/QResizeEvent/qresizeevent_wrap.h @@ -0,0 +1,28 @@ +#pragma once + +#include + +#include + +#include "Extras/Export/export.h" +#include "QtGui/QEvent/QEvent/qevent_macro.h" +#include "core/Component/component_macro.h" + +class DLL_EXPORT QResizeEventWrap : public Napi::ObjectWrap { + COMPONENT_WRAPPED_METHODS_DECLARATION + QEVENT_WRAPPED_METHODS_DECLARATION + + private: + QResizeEvent* instance; + + public: + static Napi::Object init(Napi::Env env, Napi::Object exports); + QResizeEventWrap(const Napi::CallbackInfo& info); + ~QResizeEventWrap(); + QResizeEvent* getInternalInstance(); + // class constructor + static Napi::FunctionReference constructor; + // wrapped methods + Napi::Value oldSize(const Napi::CallbackInfo& info); + Napi::Value size(const Napi::CallbackInfo& info); +}; diff --git a/src/cpp/lib/QtGui/QEvent/QResizeEvent/qresizeevent_wrap.cpp b/src/cpp/lib/QtGui/QEvent/QResizeEvent/qresizeevent_wrap.cpp new file mode 100644 index 000000000..27fe96f1a --- /dev/null +++ b/src/cpp/lib/QtGui/QEvent/QResizeEvent/qresizeevent_wrap.cpp @@ -0,0 +1,56 @@ +#include "QtCore/QSize/qsize_wrap.h" +#include "QtGui/QEvent/QResizeEvent/qresizeevent_wrap.h" + +#include "Extras/Utils/nutils.h" + +Napi::FunctionReference QResizeEventWrap::constructor; + +Napi::Object QResizeEventWrap::init(Napi::Env env, Napi::Object exports) { + Napi::HandleScope scope(env); + char CLASSNAME[] = "QResizeEvent"; + Napi::Function func = DefineClass( + env, CLASSNAME, + {InstanceMethod("oldSize", &QResizeEventWrap::oldSize), + InstanceMethod("size", &QResizeEventWrap::size), + COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE(QResizeEventWrap) + QEVENT_WRAPPED_METHODS_EXPORT_DEFINE(QResizeEventWrap)}); + constructor = Napi::Persistent(func); + exports.Set(CLASSNAME, func); + return exports; +} + +QResizeEvent* QResizeEventWrap::getInternalInstance() { return this->instance; } + +QResizeEventWrap::QResizeEventWrap(const Napi::CallbackInfo& info) + : Napi::ObjectWrap(info) { + Napi::Env env = info.Env(); + if (info.Length() == 1) { + Napi::External eventObject = + info[0].As>(); + this->instance = static_cast(eventObject.Data()); + } else { + Napi::TypeError::New(env, "Wrong number of arguments") + .ThrowAsJavaScriptException(); + } + this->rawData = extrautils::configureComponent(this->getInternalInstance()); +} + +QResizeEventWrap::~QResizeEventWrap() { + // Do not destroy instance here. It will be done by Qt Event loop. +} + +Napi::Value QResizeEventWrap::oldSize(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + QSize size = this->instance->oldSize(); + auto instance = QSizeWrap::constructor.New({Napi::External::New( + env, new QSize(size.width(), size.height()))}); + return instance; +} + +Napi::Value QResizeEventWrap::size(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + QSize size = this->instance->size(); + auto instance = QSizeWrap::constructor.New({Napi::External::New( + env, new QSize(size.width(), size.height()))}); + return instance; +} diff --git a/src/cpp/main.cpp b/src/cpp/main.cpp index 4fedbcdcd..e57bb8297 100644 --- a/src/cpp/main.cpp +++ b/src/cpp/main.cpp @@ -31,6 +31,7 @@ #include "QtGui/QEvent/QMouseEvent/qmouseevent_wrap.h" #include "QtGui/QEvent/QNativeGestureEvent/qnativegestureevent_wrap.h" #include "QtGui/QEvent/QPaintEvent/qpaintevent_wrap.h" +#include "QtGui/QEvent/QResizeEvent/qresizeevent_wrap.h" #include "QtGui/QEvent/QTabletEvent/qtabletevent_wrap.h" #include "QtGui/QEvent/QWheelEvent/qwheelevent_wrap.h" #include "QtGui/QFont/qfont_wrap.h" @@ -240,6 +241,7 @@ Napi::Object Main(Napi::Env env, Napi::Object exports) { QStyleFactoryWrap::init(env, exports); QScreenWrap::init(env, exports); QWindowWrap::init(env, exports); + QResizeEventWrap::init(env, exports); // Test CacheTestQObjectWrap::init(env, exports); diff --git a/src/index.ts b/src/index.ts index 0325ad449..62c56c0ce 100644 --- a/src/index.ts +++ b/src/index.ts @@ -32,6 +32,7 @@ export { QDropEvent } from './lib/QtGui/QEvent/QDropEvent'; export { QDragMoveEvent } from './lib/QtGui/QEvent/QDragMoveEvent'; export { QDragLeaveEvent } from './lib/QtGui/QEvent/QDragLeaveEvent'; export { QPaintEvent } from './lib/QtGui/QEvent/QPaintEvent'; +export { QResizeEvent } from './lib/QtGui/QEvent/QResizeEvent'; export { QScreen } from './lib/QtGui/QScreen'; export { QWindow } from './lib/QtGui/QWindow'; export { WidgetEventTypes } from './lib/core/EventWidget'; diff --git a/src/lib/QtGui/QEvent/QResizeEvent.ts b/src/lib/QtGui/QEvent/QResizeEvent.ts new file mode 100644 index 000000000..51f73ec3e --- /dev/null +++ b/src/lib/QtGui/QEvent/QResizeEvent.ts @@ -0,0 +1,16 @@ +import addon from '../../utils/addon'; +import { NativeRawPointer } from '../../core/Component'; +import { QEvent } from './QEvent'; +import { QSize } from '../../QtCore/QSize'; + +export class QResizeEvent extends QEvent { + constructor(event: NativeRawPointer<'QEvent'>) { + super(new addon.QResizeEvent(event)); + } + oldSize(): QSize { + return new QSize(this.native.oldSize()); + } + size(): QSize { + return new QSize(this.native.size()); + } +}