/* * 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/smolbote.hg * * SPDX-License-Identifier: GPL-3.0 */ #ifndef SMOLBOTE_WEBVIEW_H #define SMOLBOTE_WEBVIEW_H #include "webpage.h" #include class QMenu; class WebProfile; class Window; class WebView : public QWebEngineView { Q_OBJECT public: enum ViewAction { GoHome, BookmarkPage }; explicit WebView(WebProfile *profile = nullptr, QWidget *parent = nullptr); ~WebView() override; QMenu *pageMenu(); QMenu *toolsMenu() { Q_CHECK_PTR(m_toolsMenu); return m_toolsMenu; } WebProfile *profile() { return m_profile; } void setPage(QWebEnginePage *page); bool isLoaded() const; int loadProgress() const; void triggerViewAction(ViewAction action); public slots: void search(const QString &term); signals: // loadStarted is always emitted, be it page load or in-page request, // but loadFinished is only emitted when it's a page load // so emit loaded when a load is emitted (progress == 100) void loaded(); void newBookmark(const QString &title, const QUrl &url); protected: WebView *createWindow(QWebEnginePage::WebWindowType type) override; private: Window *m_parentWindow = nullptr; WebProfile *m_profile = nullptr; QMenu *m_pageMenu = nullptr; QMenu *m_toolsMenu = nullptr; bool m_loaded; int m_loadProgress; }; #endif // SMOLBOTE_WEBVIEW_H