diff options
author | aqua <aqua@iserlohn-fortress.net> | 2022-08-16 16:19:04 +0300 |
---|---|---|
committer | aqua <aqua@iserlohn-fortress.net> | 2022-08-16 16:19:04 +0300 |
commit | 616e680aa8af8f5056b5133dd44258c252ca656f (patch) | |
tree | 4c89c4fe2b9b2cc77c550c8d52d6d1058ee10846 /plugins | |
parent | Add rView and WebView (diff) | |
download | rekonq-616e680aa8af8f5056b5133dd44258c252ca656f.tar.xz |
Turn WebEngine into a plugin
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/webengine/CMakeLists.txt | 12 | ||||
-rw-r--r-- | plugins/webengine/WebEngine.json | 4 | ||||
-rw-r--r-- | plugins/webengine/webengineplugin.cpp | 13 | ||||
-rw-r--r-- | plugins/webengine/webengineplugin.hpp | 23 | ||||
-rw-r--r-- | plugins/webengine/webview.cpp | 25 | ||||
-rw-r--r-- | plugins/webengine/webview.h | 25 |
6 files changed, 102 insertions, 0 deletions
diff --git a/plugins/webengine/CMakeLists.txt b/plugins/webengine/CMakeLists.txt new file mode 100644 index 00000000..8a11bc76 --- /dev/null +++ b/plugins/webengine/CMakeLists.txt @@ -0,0 +1,12 @@ +add_library(WebEnginePlugin MODULE + webengineplugin.cpp webengineplugin.hpp + webview.cpp webview.h + ${PROJECT_SOURCE_DIR}/src/plugins/rplugininterface.hpp + ${PROJECT_SOURCE_DIR}/src/plugins/rview.hpp +) +target_include_directories(WebEnginePlugin PRIVATE ${PROJECT_SOURCE_DIR}/src/plugins) +target_link_libraries(WebEnginePlugin PUBLIC Qt6::Core Qt6::WebEngineWidgets) + +if(TESTING) + add_test(NAME "load_plugin WebEnginePlugin" COMMAND load_plugin $<TARGET_FILE:WebEnginePlugin>) +endif() diff --git a/plugins/webengine/WebEngine.json b/plugins/webengine/WebEngine.json new file mode 100644 index 00000000..03e2112c --- /dev/null +++ b/plugins/webengine/WebEngine.json @@ -0,0 +1,4 @@ +{ + "name": "WebEngine", + "schemes": [ "file", "http", "https" ] +} diff --git a/plugins/webengine/webengineplugin.cpp b/plugins/webengine/webengineplugin.cpp new file mode 100644 index 00000000..cf6811dc --- /dev/null +++ b/plugins/webengine/webengineplugin.cpp @@ -0,0 +1,13 @@ +/* ============================================================ + * The rekonq project + * ============================================================ + * SPDX-License-Identifier: GPL-3.0-only + * Copyright (C) 2022 aqua <aqua@iserlohn-fortress.net> + * ============================================================ + * Description: WebEngine plugin View factory + * ============================================================ */ + +#include "webengineplugin.hpp" +#include "webview.h" + +rView *WebEnginePlugin::view(const QUrl &url) { return new WebView(url, nullptr); } diff --git a/plugins/webengine/webengineplugin.hpp b/plugins/webengine/webengineplugin.hpp new file mode 100644 index 00000000..3ee63ff8 --- /dev/null +++ b/plugins/webengine/webengineplugin.hpp @@ -0,0 +1,23 @@ +/* ============================================================ + * The rekonq project + * ============================================================ + * SPDX-License-Identifier: GPL-3.0-only + * Copyright (C) 2022 aqua <aqua@iserlohn-fortress.net> + * ============================================================ + * Description: WebEngine plugin View factory + * ============================================================ */ + +#pragma once + +#include <rplugininterface.hpp> + +class WebEnginePlugin final : public RekonqPluginInterface { + Q_OBJECT + Q_PLUGIN_METADATA(IID RekonqPluginInterface_iid FILE "WebEngine.json") + Q_INTERFACES(RekonqPluginInterface) + +public: + WebEnginePlugin() = default; + + rView *view(const QUrl &url) override; +}; diff --git a/plugins/webengine/webview.cpp b/plugins/webengine/webview.cpp new file mode 100644 index 00000000..1aef01e2 --- /dev/null +++ b/plugins/webengine/webview.cpp @@ -0,0 +1,25 @@ +/* ============================================================ + * The rekonq project + * ============================================================ + * SPDX-License-Identifier: GPL-3.0-only + * Copyright (C) 2022 aqua <aqua@iserlohn-fortress.net> + * ============================================================ + * Description: Qt WebEngine View + * ============================================================ */ + +#include "webview.h" +#include <QVBoxLayout> +#include <QWebEngineView> + +WebView::WebView(const QUrl &url, QWidget *parent) : rView(url, parent), view(new QWebEngineView(this)) +{ + auto *layout = new QVBoxLayout; + layout->setContentsMargins(0, 0, 0, 0); + layout->addWidget(view); + setLayout(layout); + + connect(view, &QWebEngineView::iconChanged, this, [this](const QIcon &icon) { emit iconChanged(icon); }); + connect(view, &QWebEngineView::urlChanged, this, [this](const QUrl &url) { emit urlChanged(url); }); + connect(view, &QWebEngineView::titleChanged, this, [this](const QString &title) { emit titleChanged(title); }); + view->load(url); +} diff --git a/plugins/webengine/webview.h b/plugins/webengine/webview.h new file mode 100644 index 00000000..0b8d0dae --- /dev/null +++ b/plugins/webengine/webview.h @@ -0,0 +1,25 @@ +/* ============================================================ + * The rekonq project + * ============================================================ + * SPDX-License-Identifier: GPL-3.0-only + * Copyright (C) 2022 aqua <aqua@iserlohn-fortress.net> + * ============================================================ + * Description: Qt WebEngine View + * ============================================================ */ + +#pragma once + +#include "rview.hpp" + +class QWebEngineView; + +class WebView final : public rView { + Q_OBJECT + +public: + explicit WebView(const QUrl &url = QUrl(), QWidget *parent = nullptr); + ~WebView() final = default; + +private: + QWebEngineView *view; +}; |