aboutsummaryrefslogtreecommitdiff
path: root/src/events/NotificationReceivedEvent.hpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/events/NotificationReceivedEvent.hpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/events/NotificationReceivedEvent.hpp b/src/events/NotificationReceivedEvent.hpp
new file mode 100644
index 0000000..ade2132
--- /dev/null
+++ b/src/events/NotificationReceivedEvent.hpp
@@ -0,0 +1,47 @@
+#pragma once
+
+#include <QWebEngineNotification>
+#include <QtCore>
+#include <lua.hpp>
+
+#include "events/Event.hpp"
+
+class NotificationReceivedEvent : public Event {
+public:
+ std::unique_ptr<QWebEngineNotification> notification;
+
+ NotificationReceivedEvent(std::unique_ptr<QWebEngineNotification> notification)
+ : notification(std::move(notification)) {
+ kind = "NotificationReceived";
+ }
+
+ void lua_push(lua_State *state) const override {
+ lua_newtable(state);
+ SET_FIELD("type", string, kind.toStdString().c_str())
+ SET_FIELD("title", string, notification->title().toStdString().c_str())
+ SET_FIELD("message", string, notification->message().toStdString().c_str())
+ SET_FIELD("tag", string, notification->tag().toStdString().c_str())
+ SET_FIELD("origin", string, notification->origin().toString().toStdString().c_str())
+
+ SET_FIELD_CLOSURE_WITH_SELF("click", [](lua_State *state) {
+ auto *event = GET_CLOSURE_SELF(NotificationReceivedEvent *);
+ event->notification->click();
+ lua_pushnil(state);
+ return 1;
+ });
+
+ SET_FIELD_CLOSURE_WITH_SELF("show", [](lua_State *state) {
+ auto *event = GET_CLOSURE_SELF(NotificationReceivedEvent *);
+ event->notification->show();
+ lua_pushnil(state);
+ return 1;
+ });
+
+ SET_FIELD_CLOSURE_WITH_SELF("close", [](lua_State *state) {
+ auto *event = GET_CLOSURE_SELF(NotificationReceivedEvent *);
+ event->notification->close();
+ lua_pushnil(state);
+ return 1;
+ });
+ }
+};