From 16b9bc5585c500d58e7d19bf67327fa229d6a090 Mon Sep 17 00:00:00 2001 From: Maksim Karelov Date: Wed, 11 Dec 2019 10:42:04 +0300 Subject: [PATCH] Add signals to QSystemTrayIcon (#258) * Add signals to QSystemTrayIcon - `activated(QSystemTrayIcon::ActivationReason reason)` - `messageClicked()` * Fix `QSystemTrayIconActivationReason` export --- .../QSystemTrayIcon/nsystemtrayicon.hpp | 19 ++++++++++++++++++- src/index.ts | 6 +++++- src/lib/QtWidgets/QSystemTrayIcon.ts | 9 +++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/cpp/include/nodegui/QtWidgets/QSystemTrayIcon/nsystemtrayicon.hpp b/src/cpp/include/nodegui/QtWidgets/QSystemTrayIcon/nsystemtrayicon.hpp index ed525d41c..d780a4dd8 100644 --- a/src/cpp/include/nodegui/QtWidgets/QSystemTrayIcon/nsystemtrayicon.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QSystemTrayIcon/nsystemtrayicon.hpp @@ -11,5 +11,22 @@ class NSystemTrayIcon : public QSystemTrayIcon, public EventWidget { public: using QSystemTrayIcon::QSystemTrayIcon; // inherit all constructors of // QSystemTrayIcon - void connectWidgetSignalsToEventEmitter() {} + void connectWidgetSignalsToEventEmitter() { + QObject::connect(this, &QSystemTrayIcon::activated, [=](int reason) { + Napi::Env env = this->emitOnNode.Env(); + Napi::HandleScope scope(env); + this->emitOnNode.Call({ + Napi::String::New(env, "activated"), + Napi::Value::From(env, reason), + }); + }); + + QObject::connect(this, &QSystemTrayIcon::messageClicked, [=]() { + Napi::Env env = this->emitOnNode.Env(); + Napi::HandleScope scope(env); + this->emitOnNode.Call({ + Napi::String::New(env, "messageClicked"), + }); + }); + } }; diff --git a/src/index.ts b/src/index.ts index d1f9dcd60..83f32fb56 100644 --- a/src/index.ts +++ b/src/index.ts @@ -41,7 +41,11 @@ export { QMenu, QMenuEvents } from './lib/QtWidgets/QMenu'; export { QMenuBar, QMenuBarEvents } from './lib/QtWidgets/QMenuBar'; export { QPlainTextEdit, QPlainTextEditEvents, LineWrapMode } from './lib/QtWidgets/QPlainTextEdit'; export { QScrollArea, QScrollAreaEvents } from './lib/QtWidgets/QScrollArea'; -export { QSystemTrayIcon, QSystemTrayIconEvents } from './lib/QtWidgets/QSystemTrayIcon'; +export { + QSystemTrayIcon, + QSystemTrayIconEvents, + QSystemTrayIconActivationReason, +} from './lib/QtWidgets/QSystemTrayIcon'; export { QAction, QActionEvents } from './lib/QtWidgets/QAction'; export { QShortcut, QShortcutEvents } from './lib/QtWidgets/QShortcut'; export { QGroupBox, QGroupBoxEvents } from './lib/QtWidgets/QGroupBox'; diff --git a/src/lib/QtWidgets/QSystemTrayIcon.ts b/src/lib/QtWidgets/QSystemTrayIcon.ts index c95eea897..781b6fdb6 100644 --- a/src/lib/QtWidgets/QSystemTrayIcon.ts +++ b/src/lib/QtWidgets/QSystemTrayIcon.ts @@ -8,6 +8,15 @@ import { NodeObject } from '../QtCore/QObject'; export const QSystemTrayIconEvents = Object.freeze({ ...BaseWidgetEvents, + activated: 'activated', + messageClicked: 'messageClicked', +}); +export const QSystemTrayIconActivationReason = Object.freeze({ + Unknown: 0, + Context: 1, + DoubleClick: 2, + Trigger: 3, + MiddleClick: 4, }); export class QSystemTrayIcon extends NodeObject { native: NativeElement;