77 lines
4.4 KiB
C
77 lines
4.4 KiB
C
#pragma once
|
|
|
|
#include "QtCore/QDate/qdate_wrap.h"
|
|
#include "QtCore/QDateTime/qdatetime_wrap.h"
|
|
#include "QtCore/QTime/qtime_wrap.h"
|
|
#include "QtWidgets/QAbstractSpinBox/qabstractspinbox_macro.h"
|
|
#include "QtWidgets/QCalendarWidget/qcalendarwidget_wrap.h"
|
|
|
|
/*
|
|
|
|
This macro adds common QDateTimeEdit exported methods
|
|
The exported methods are taken into this macro to avoid writing them in each
|
|
and every widget we export.
|
|
*/
|
|
|
|
#ifndef QDATETIMEEDIT_WRAPPED_METHODS_DECLARATION
|
|
#define QDATETIMEEDIT_WRAPPED_METHODS_DECLARATION \
|
|
QABSTRACTSPINBOX_WRAPPED_METHODS_DECLARATION \
|
|
Napi::Value setCalendarWidget(const Napi::CallbackInfo &info) { \
|
|
Napi::Env env = info.Env(); \
|
|
Napi::Object calendarWidgetObject = info[0].As<Napi::Object>(); \
|
|
QCalendarWidgetWrap *calendarWidgetWrap = \
|
|
Napi::ObjectWrap<QCalendarWidgetWrap>::Unwrap(calendarWidgetObject); \
|
|
this->instance->setCalendarWidget( \
|
|
calendarWidgetWrap->getInternalInstance()); \
|
|
return env.Null(); \
|
|
} \
|
|
Napi::Value calendarWidget(const Napi::CallbackInfo &info) { \
|
|
Napi::Env env = info.Env(); \
|
|
QObject *calendarWidget = this->instance->calendarWidget(); \
|
|
if (calendarWidget) { \
|
|
return WrapperCache::instance.getWrapper(env, calendarWidget); \
|
|
} else { \
|
|
return env.Null(); \
|
|
} \
|
|
}
|
|
|
|
#endif // QDATETIMEEDIT_WRAPPED_METHODS_DECLARATION
|
|
|
|
#ifndef QDATETIMEEDIT_WRAPPED_METHODS_EXPORT_DEFINE
|
|
#define QDATETIMEEDIT_WRAPPED_METHODS_EXPORT_DEFINE(WidgetWrapName) \
|
|
QABSTRACTSPINBOX_WRAPPED_METHODS_EXPORT_DEFINE(WidgetWrapName) \
|
|
InstanceMethod("setCalendarWidget", &WidgetWrapName::setCalendarWidget), \
|
|
InstanceMethod("calendarWidget", &WidgetWrapName::calendarWidget),
|
|
|
|
#endif // QDATETIMEEDIT_WRAPPED_METHODS_EXPORT_DEFINE
|
|
|
|
#ifndef QDATETIMEEDIT_SIGNALS
|
|
#define QDATETIMEEDIT_SIGNALS \
|
|
QABSTRACTSPINBOX_SIGNALS \
|
|
QObject::connect(this, &QDateTimeEdit::dateChanged, [=](const QDate &date) { \
|
|
Napi::Env env = this->emitOnNode.Env(); \
|
|
Napi::HandleScope scope(env); \
|
|
auto instance = QDateWrap::constructor.New({Napi::External<QDate>::New( \
|
|
env, new QDate(date.year(), date.month(), date.day()))}); \
|
|
this->emitOnNode.Call({Napi::String::New(env, "dateChanged"), instance}); \
|
|
}); \
|
|
QObject::connect( \
|
|
this, &QDateTimeEdit::dateTimeChanged, [=](const QDateTime &datetime) { \
|
|
Napi::Env env = this->emitOnNode.Env(); \
|
|
Napi::HandleScope scope(env); \
|
|
auto instance = QDateTimeWrap::constructor.New( \
|
|
{Napi::External<QDateTime>::New(env, new QDateTime(datetime))}); \
|
|
this->emitOnNode.Call( \
|
|
{Napi::String::New(env, "dateTimeChanged"), instance}); \
|
|
}); \
|
|
QObject::connect(this, &QDateTimeEdit::timeChanged, [=](const QTime &time) { \
|
|
Napi::Env env = this->emitOnNode.Env(); \
|
|
Napi::HandleScope scope(env); \
|
|
auto instance = QTimeWrap::constructor.New({Napi::External<QTime>::New( \
|
|
env, \
|
|
new QTime(time.hour(), time.minute(), time.second(), time.msec()))}); \
|
|
this->emitOnNode.Call({Napi::String::New(env, "timeChanged"), instance}); \
|
|
});
|
|
|
|
#endif // QDATETIMEEDIT_SIGNALS
|