95 lines
3.3 KiB
C++
95 lines
3.3 KiB
C++
|
|
#include "qdial_wrap.h"
|
|
#include "src/cpp/QtWidgets/QWidget/qwidget_wrap.h"
|
|
#include "src/cpp/Extras/Utils/nutils.h"
|
|
#include <QWidget>
|
|
|
|
Napi::FunctionReference QDialWrap::constructor;
|
|
|
|
Napi::Object QDialWrap::init(Napi::Env env, Napi::Object exports) {
|
|
Napi::HandleScope scope(env);
|
|
char CLASSNAME[] = "QDial";
|
|
Napi::Function func = DefineClass(env, CLASSNAME, {
|
|
InstanceMethod("setNotchesVisible", &QDialWrap::setNotchesVisible),
|
|
InstanceMethod("setWrapping", &QDialWrap::setWrapping),
|
|
InstanceMethod("setNotchTarget", &QDialWrap::setNotchTarget),
|
|
InstanceMethod("notchTarget", &QDialWrap::notchTarget),
|
|
InstanceMethod("notchesVisible", &QDialWrap::notchesVisible),
|
|
InstanceMethod("wrapping", &QDialWrap::wrapping),
|
|
QABSTRACTSLIDER_WRAPPED_METHODS_EXPORT_DEFINE(QDialWrap)
|
|
});
|
|
constructor = Napi::Persistent(func);
|
|
exports.Set(CLASSNAME, func);
|
|
return exports;
|
|
}
|
|
|
|
NDial* QDialWrap::getInternalInstance() {
|
|
return this->instance.get();
|
|
}
|
|
|
|
QDialWrap::QDialWrap(const Napi::CallbackInfo& info): Napi::ObjectWrap<QDialWrap>(info) {
|
|
Napi::Env env = info.Env();
|
|
Napi::HandleScope scope(env);
|
|
|
|
if(info.Length() == 1) {
|
|
Napi::Object parentObject = info[0].As<Napi::Object>();
|
|
QWidgetWrap* parentWidgetWrap = Napi::ObjectWrap<QWidgetWrap>::Unwrap(parentObject);
|
|
this->instance = std::make_unique<NDial>(parentWidgetWrap->getInternalInstance()); //this sets the parent to current widget
|
|
}else if (info.Length() == 0){
|
|
this->instance = std::make_unique<NDial>();
|
|
}else {
|
|
Napi::TypeError::New(env, "Wrong number of arguments").ThrowAsJavaScriptException();
|
|
}
|
|
// Adds measure function on yoga node so that widget size is calculated based on its own size.
|
|
YGNodeSetMeasureFunc(this->instance->getFlexNode(), &extrautils::measureQtWidget);
|
|
}
|
|
|
|
QDialWrap::~QDialWrap() {
|
|
this->instance.reset();
|
|
}
|
|
|
|
Napi::Value QDialWrap::setNotchesVisible(const Napi::CallbackInfo& info) {
|
|
Napi::Env env = info.Env();
|
|
Napi::HandleScope scope(env);
|
|
Napi::Boolean visible = info[0].As<Napi::Boolean>();
|
|
this->instance->setNotchesVisible(visible.Value());
|
|
return env.Null();
|
|
}
|
|
|
|
Napi::Value QDialWrap::setWrapping(const Napi::CallbackInfo& info) {
|
|
Napi::Env env = info.Env();
|
|
Napi::HandleScope scope(env);
|
|
Napi::Boolean on = info[0].As<Napi::Boolean>();
|
|
this->instance->setWrapping(on.Value());
|
|
return env.Null();
|
|
}
|
|
|
|
Napi::Value QDialWrap::setNotchTarget(const Napi::CallbackInfo& info) {
|
|
Napi::Env env = info.Env();
|
|
Napi::HandleScope scope(env);
|
|
Napi::Number target = info[0].As<Napi::Number>();
|
|
this->instance->setNotchTarget(target.FloatValue());
|
|
return env.Null();
|
|
}
|
|
|
|
Napi::Value QDialWrap::notchTarget(const Napi::CallbackInfo& info) {
|
|
Napi::Env env = info.Env();
|
|
Napi::HandleScope scope(env);
|
|
float target = this->instance->notchTarget();
|
|
return Napi::Value::From(env, target);
|
|
}
|
|
|
|
Napi::Value QDialWrap::notchesVisible(const Napi::CallbackInfo& info) {
|
|
Napi::Env env = info.Env();
|
|
Napi::HandleScope scope(env);
|
|
bool notchesVisible = this->instance->notchesVisible();
|
|
return Napi::Value::From(env, notchesVisible);
|
|
}
|
|
|
|
Napi::Value QDialWrap::wrapping(const Napi::CallbackInfo& info) {
|
|
Napi::Env env = info.Env();
|
|
Napi::HandleScope scope(env);
|
|
bool wrapping = this->instance->wrapping();
|
|
return Napi::Value::From(env, wrapping);
|
|
}
|