aboutsummaryrefslogtreecommitdiff
path: root/src/widgets
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/widgets/BrowserWindow.cpp5
-rw-r--r--src/widgets/BrowserWindow.hpp3
-rw-r--r--src/widgets/Decorations.cpp5
-rw-r--r--src/widgets/Decorations.hpp4
-rw-r--r--src/widgets/EdgeDecoration.cpp4
-rw-r--r--src/widgets/EdgeDecoration.hpp2
-rw-r--r--src/widgets/IWebViewMediator.hpp3
-rw-r--r--src/widgets/WebView.hpp3
-rw-r--r--src/widgets/WebViewStack.cpp5
-rw-r--r--src/widgets/WebViewStack.hpp3
10 files changed, 24 insertions, 13 deletions
diff --git a/src/widgets/BrowserWindow.cpp b/src/widgets/BrowserWindow.cpp
index 87e315c..acb07f7 100644
--- a/src/widgets/BrowserWindow.cpp
+++ b/src/widgets/BrowserWindow.cpp
@@ -102,8 +102,9 @@ void BrowserWindow::set_html(const QString &html, WebViewId webview_id) {
get_webview_mediator(webview_id)->set_html(html, webview_id);
}
-void BrowserWindow::run_javascript(const QString &js_code, WebViewId webview_id) {
- get_webview_mediator(webview_id)->run_javascript(js_code, webview_id);
+void BrowserWindow::run_javascript(const QString &js_code, WebViewId webview_id,
+ const JsOnResultFunc &on_result) {
+ get_webview_mediator(webview_id)->run_javascript(js_code, webview_id, on_result);
}
void BrowserWindow::expose_rpc_function(const QString &name, const RpcFunc &action,
diff --git a/src/widgets/BrowserWindow.hpp b/src/widgets/BrowserWindow.hpp
index de48c6e..2842983 100644
--- a/src/widgets/BrowserWindow.hpp
+++ b/src/widgets/BrowserWindow.hpp
@@ -38,7 +38,8 @@ public:
bool has_webview(WebViewId webview_id);
void open_url(const QUrl &url, OpenType open_type, WebViewId webview_id);
void set_html(const QString &html, WebViewId webview_id);
- void run_javascript(const QString &js_code, WebViewId webview_id);
+ void run_javascript(const QString &js_code, WebViewId webview_id,
+ const JsOnResultFunc &on_result);
void expose_rpc_function(const QString &name, const RpcFunc &action, WebViewId webview_id);
void reload(WebViewId webview_id);
diff --git a/src/widgets/Decorations.cpp b/src/widgets/Decorations.cpp
index 1cff3d4..22aa9f9 100644
--- a/src/widgets/Decorations.cpp
+++ b/src/widgets/Decorations.cpp
@@ -84,10 +84,11 @@ void Decorations::set_html(const QString &html, WebViewId view_id) {
decoration.value()->set_html(html);
}
-void Decorations::run_javascript(const QString &js_code, WebViewId view_id) {
+void Decorations::run_javascript(const QString &js_code, WebViewId view_id,
+ const JsOnResultFunc &on_result) {
auto decoration = get_decoration_widget_by_view_id(view_id);
if (decoration.has_value())
- decoration.value()->run_javascript(js_code);
+ decoration.value()->run_javascript(js_code, on_result);
}
std::optional<WebViewId> Decorations::get_view_id(DecorationType type) {
diff --git a/src/widgets/Decorations.hpp b/src/widgets/Decorations.hpp
index 108b13e..3df4fd7 100644
--- a/src/widgets/Decorations.hpp
+++ b/src/widgets/Decorations.hpp
@@ -3,6 +3,7 @@
#include "WebViewData.hpp"
#include "widgets/EdgeDecoration.hpp"
#include "widgets/IWebViewMediator.hpp"
+#include "widgets/WebView.hpp"
#include <QWidget>
#include <QtCore>
#include <optional>
@@ -29,7 +30,8 @@ public:
bool has_webview(WebViewId view_id) override;
void open_url(const QUrl &url, OpenType open_type, WebViewId view_id) override;
void set_html(const QString &html, WebViewId view_id) override;
- void run_javascript(const QString &js_code, WebViewId webview_id) override;
+ void run_javascript(const QString &js_code, WebViewId webview_id,
+ const JsOnResultFunc &on_result) override;
void expose_rpc_function(const QString &name, const RpcFunc &action,
WebViewId webview_id) override;
void reload(WebViewId webview_id) override;
diff --git a/src/widgets/EdgeDecoration.cpp b/src/widgets/EdgeDecoration.cpp
index bb114bf..76974be 100644
--- a/src/widgets/EdgeDecoration.cpp
+++ b/src/widgets/EdgeDecoration.cpp
@@ -94,10 +94,10 @@ void EdgeDecoration::set_url(const QUrl &url) {
webview.value()->setUrl(url);
}
-void EdgeDecoration::run_javascript(const QString &js_code) {
+void EdgeDecoration::run_javascript(const QString &js_code, const JsOnResultFunc &on_result) {
if (!webview.has_value())
return;
- webview.value()->run_javascript(js_code);
+ webview.value()->run_javascript(js_code, on_result);
}
std::optional<WebViewId> EdgeDecoration::get_view_id() {
diff --git a/src/widgets/EdgeDecoration.hpp b/src/widgets/EdgeDecoration.hpp
index 2c92de7..ed64658 100644
--- a/src/widgets/EdgeDecoration.hpp
+++ b/src/widgets/EdgeDecoration.hpp
@@ -21,7 +21,7 @@ public:
void set_html(const QString &content);
void set_enabled(bool enabled_value);
void set_url(const QUrl &url);
- void run_javascript(const QString &js_code);
+ void run_javascript(const QString &js_code, const JsOnResultFunc &on_result);
std::optional<WebViewId> get_view_id();
void expose_rpc_function(const QString &name, const RpcFunc &action);
diff --git a/src/widgets/IWebViewMediator.hpp b/src/widgets/IWebViewMediator.hpp
index a7007f2..a5a8fdb 100644
--- a/src/widgets/IWebViewMediator.hpp
+++ b/src/widgets/IWebViewMediator.hpp
@@ -12,6 +12,7 @@ public:
virtual void set_html(const QString &html, WebViewId webview_id) = 0;
virtual void expose_rpc_function(const QString &name, const RpcFunc &action,
WebViewId webview_id) = 0;
- virtual void run_javascript(const QString &js_code, WebViewId webview_id) = 0;
+ virtual void run_javascript(const QString &js_code, WebViewId webview_id,
+ const JsOnResultFunc &on_result) = 0;
virtual void reload(WebViewId webview_id) = 0;
};
diff --git a/src/widgets/WebView.hpp b/src/widgets/WebView.hpp
index 36a252d..0f2bd43 100644
--- a/src/widgets/WebView.hpp
+++ b/src/widgets/WebView.hpp
@@ -20,6 +20,8 @@
using RpcArgs = std::unordered_map<QString, QVariant>;
using RpcFunc = std::function<void(RpcArgs)>;
+using JsOnResultFunc = std::function<void(const std::optional<QVariant> &value)>;
+
class WebView : public QWebEngineView {
Q_OBJECT
@@ -31,6 +33,7 @@ public:
void scroll_to_bottom();
void enable_rpc_api();
void expose_rpc_function(const QString &name, const RpcFunc &action);
+ // void run_javascript(const QString &code, const JsOnResultFunc &on_result);
DELEGATE(page(), runJavaScript, run_javascript)
DEFINE_GETTER(get_id, id)
diff --git a/src/widgets/WebViewStack.cpp b/src/widgets/WebViewStack.cpp
index ab5808f..5503a3c 100644
--- a/src/widgets/WebViewStack.cpp
+++ b/src/widgets/WebViewStack.cpp
@@ -342,14 +342,15 @@ void WebViewStack::set_html(const QString &html, WebViewId webview_id) {
webview->setHtml(html);
}
-void WebViewStack::run_javascript(const QString &js_code, WebViewId webview_id) {
+void WebViewStack::run_javascript(const QString &js_code, WebViewId webview_id,
+ const JsOnResultFunc &on_result) {
auto *webview = get_webview(webview_id);
if (webview == nullptr) {
qDebug() << "Webview does not exist";
return;
}
- webview->run_javascript(js_code);
+ webview->run_javascript(js_code, on_result);
}
void WebViewStack::expose_rpc_function(const QString &name, const RpcFunc & /* unused */,
diff --git a/src/widgets/WebViewStack.hpp b/src/widgets/WebViewStack.hpp
index bbee44c..cbff0be 100644
--- a/src/widgets/WebViewStack.hpp
+++ b/src/widgets/WebViewStack.hpp
@@ -62,7 +62,8 @@ public slots:
void scroll_to_top(WebViewId webview_id);
void scroll_to_bottom(WebViewId webview_id);
void set_html(const QString &html, WebViewId webview_id = 0) override;
- void run_javascript(const QString &js_code, WebViewId webview_id) override;
+ void run_javascript(const QString &js_code, WebViewId webview_id,
+ const JsOnResultFunc &on_result) override;
void expose_rpc_function(const QString &name, const RpcFunc &action,
WebViewId webview_id) override;
void reload(WebViewId webview_id) override;