Added QIcon isMask and setIsMask (#157)

This commit is contained in:
Dimitar Nestorov 2019-10-27 00:55:37 +03:00 committed by Atul R
parent b5f21bae0b
commit bd1c334722
5 changed files with 49 additions and 0 deletions

View File

@ -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);
};

View File

@ -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<QPixmap>::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<Napi::Boolean>();
this->instance->setIsMask(isMask.Value());
}
else
{
Napi::TypeError::New(env, "Wrong number of arguments").ThrowAsJavaScriptException();
}
return env.Null();
}

View File

@ -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);

View File

@ -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);
}
}

View File

@ -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