/* * This file is part of smolbote. It's copyrighted by the contributors recorded * in the version control history of the file, available from its original * location: https://neueland.iserlohn-fortress.net/gitea/aqua/smolbote * * SPDX-License-Identifier: GPL-3.0 */ #ifndef SMOLBOTE_WEBVIEW_H #define SMOLBOTE_WEBVIEW_H #include "webpage.h" #include #include #include class WebProfile; class WebViewContextMenu; class WebView final : public QWebEngineView { friend class WebViewContextMenu; Q_OBJECT explicit WebView(QWidget *parent = nullptr); public: typedef std::function cb_createWindow_t; WebView(WebProfile *profile, cb_createWindow_t cb, QWidget *parent = nullptr); WebView(const Session::WebView &data, cb_createWindow_t cb, QWidget *parent = nullptr); ~WebView() = default; [[nodiscard]] WebProfile *profile() const { return m_profile; } void setProfile(WebProfile *profile); [[nodiscard]] Session::WebView serialize() const; bool isLoaded() const { return m_loaded; } public slots: void search(const QString &term); signals: void newBookmark(const QString &title, const QUrl &url); protected: WebView *createWindow(QWebEnginePage::WebWindowType type) override { return cb_createWindow ? cb_createWindow(type) : nullptr; } void contextMenuEvent(QContextMenuEvent *event) override; private: cb_createWindow_t cb_createWindow; WebProfile *m_profile = nullptr; bool m_loaded = false; }; #endif // SMOLBOTE_WEBVIEW_H