aboutsummaryrefslogtreecommitdiff
path: root/src/WindowMediator.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/WindowMediator.hpp')
-rw-r--r--src/WindowMediator.hpp38
1 files changed, 38 insertions, 0 deletions
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 <QWidget>
+#include <QtCore>
+
+#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()>);
+ 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<void()> action);
+
+private:
+ WebViewStack *webview_stack;
+ LuaRuntime *lua_runtime;
+ KeymapEvaluator *keymap_evaluator;
+};