From bd1c3347228fb10361ecb6e4521926545020bd09 Mon Sep 17 00:00:00 2001 From: Dimitar Nestorov Date: Sun, 27 Oct 2019 00:55:37 +0300 Subject: [PATCH] Added QIcon isMask and setIsMask (#157) --- .../include/nodegui/QtGui/QIcon/qicon_wrap.h | 2 ++ src/cpp/lib/QtGui/QIcon/qicon_wrap.cpp | 28 +++++++++++++++++++ src/demo.ts | 1 + src/lib/QtGui/QIcon/index.ts | 8 ++++++ website/docs/api/QIcon.md | 10 +++++++ 5 files changed, 49 insertions(+) diff --git a/src/cpp/include/nodegui/QtGui/QIcon/qicon_wrap.h b/src/cpp/include/nodegui/QtGui/QIcon/qicon_wrap.h index b7db9dce6..f19866325 100644 --- a/src/cpp/include/nodegui/QtGui/QIcon/qicon_wrap.h +++ b/src/cpp/include/nodegui/QtGui/QIcon/qicon_wrap.h @@ -18,4 +18,6 @@ public: QIcon *getInternalInstance(); // Wrapped methods Napi::Value pixmap(const Napi::CallbackInfo& info); + Napi::Value isMask(const Napi::CallbackInfo& info); + Napi::Value setIsMask(const Napi::CallbackInfo& info); }; diff --git a/src/cpp/lib/QtGui/QIcon/qicon_wrap.cpp b/src/cpp/lib/QtGui/QIcon/qicon_wrap.cpp index 994f0eb73..74d0b1f90 100644 --- a/src/cpp/lib/QtGui/QIcon/qicon_wrap.cpp +++ b/src/cpp/lib/QtGui/QIcon/qicon_wrap.cpp @@ -11,6 +11,8 @@ Napi::Object QIconWrap::init(Napi::Env env, Napi::Object exports) char CLASSNAME[] = "QIcon"; Napi::Function func = DefineClass(env, CLASSNAME, { InstanceMethod("pixmap", &QIconWrap::pixmap), + InstanceMethod("isMask", &QIconWrap::isMask), + InstanceMethod("setIsMask", &QIconWrap::setIsMask), COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE }); constructor = Napi::Persistent(func); @@ -74,3 +76,29 @@ Napi::Value QIconWrap::pixmap(const Napi::CallbackInfo& info) auto instance = QPixmapWrap::constructor.New({ Napi::External::New(env, pixmap) }); return instance; } + +Napi::Value QIconWrap::isMask(const Napi::CallbackInfo& info) +{ + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + return Napi::Boolean::New(env, this->instance->isMask()); +} + +Napi::Value QIconWrap::setIsMask(const Napi::CallbackInfo& info) +{ + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + if (info.Length() == 1) + { + Napi::Boolean isMask = info[0].As(); + this->instance->setIsMask(isMask.Value()); + } + else + { + Napi::TypeError::New(env, "Wrong number of arguments").ThrowAsJavaScriptException(); + } + + return env.Null(); +} diff --git a/src/demo.ts b/src/demo.ts index 24cf8bbad..ec60bc054 100644 --- a/src/demo.ts +++ b/src/demo.ts @@ -21,6 +21,7 @@ shortcut.addEventListener(QShortcutEvents.activated, () => { const trayIcon = new QIcon( path.resolve(__dirname, "../extras/assets/nodegui_white.png") ); +trayIcon.setIsMask(true); const tray = new QSystemTrayIcon(); tray.setIcon(trayIcon); diff --git a/src/lib/QtGui/QIcon/index.ts b/src/lib/QtGui/QIcon/index.ts index 0408dcebb..92c547691 100644 --- a/src/lib/QtGui/QIcon/index.ts +++ b/src/lib/QtGui/QIcon/index.ts @@ -41,4 +41,12 @@ export class QIcon extends Component { } return new QPixmap(nativePixmap); }; + + isMask(): boolean { + return this.native.isMask(); + } + + setIsMask(isMask: boolean) { + this.native.setIsMask(isMask); + } } diff --git a/website/docs/api/QIcon.md b/website/docs/api/QIcon.md index a41265394..ab21611c9 100644 --- a/website/docs/api/QIcon.md +++ b/website/docs/api/QIcon.md @@ -44,3 +44,13 @@ Returns a pixmap with the requested size, mode, and state, generating one if nec - `height`: number - `mode?`: QIconMode - `state?`: QIconState + +### `icon.isMask()` + +Returns true if this icon has been marked as a mask image. It calls the native method [QIcon: isMask](https://doc.qt.io/qt-5/qicon.html#isMask). + +### `icon.setIsMask(isMask)` + +Indicate that this icon is a mask image, and hence can potentially be modified based on where it's displayed. It calls the native method [QIcon: setIsMask](https://doc.qt.io/qt-5/qicon.html#setIsMask). + +- `isMask`: boolean