From bcecbced7e1af9d99443a7e823f18328c7943f09 Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Sat, 29 Mar 2025 11:45:18 +0530 Subject: Add window action router for multi-window --- src/WindowMediator.hpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/WindowMediator.hpp (limited to 'src/WindowMediator.hpp') diff --git a/src/WindowMediator.hpp b/src/WindowMediator.hpp new file mode 100644 index 0000000..3c35de2 --- /dev/null +++ b/src/WindowMediator.hpp @@ -0,0 +1,38 @@ +#pragma once + +#include +#include + +#include "LuaRuntime.hpp" +#include "keymap/KeymapEvaluator.hpp" +#include "utils.hpp" +#include "widgets/WebViewStack.hpp" + +class WindowMediator : public QObject { + Q_OBJECT + +public: + WindowMediator(WebViewStack *webview_stack, LuaRuntime *lua_runtime, + KeymapEvaluator *keymap_evaluator); + ~WindowMediator() override; + + DELEGATE(keymap_evaluator, evaluate, evaluate_keymap) + DELEGATE(webview_stack, has_webview, has_webview) + +signals: + void history_back_requested(WebViewId webview_id, qsizetype history_index); + void history_forward_requested(WebViewId webview_id, qsizetype history_index); + void keymap_added(QString mode, QString keyseq, std::function); + void url_opened(QString url, OpenType open_type); + void webview_closed(WebViewId webview_id); + void webview_selected(WebViewId webview_id); + +protected slots: + void add_keymap(const QString &mode_string, const QString &keyseq, + std::function action); + +private: + WebViewStack *webview_stack; + LuaRuntime *lua_runtime; + KeymapEvaluator *keymap_evaluator; +}; -- cgit v1.3.1