From 35d8464f8975ab35c1e2f1a076302d9f95bfb22c Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Tue, 11 Mar 2025 23:02:44 +0530 Subject: Refactor browsermanager to webviewstack --- include/widgets/WebViewStack.hpp | 47 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 include/widgets/WebViewStack.hpp (limited to 'include/widgets/WebViewStack.hpp') diff --git a/include/widgets/WebViewStack.hpp b/include/widgets/WebViewStack.hpp new file mode 100644 index 0000000..1d10715 --- /dev/null +++ b/include/widgets/WebViewStack.hpp @@ -0,0 +1,47 @@ +#pragma once + +#include +#include +#include +#include + +enum OpenType { OpenUrl, OpenUrlInTab, OpenUrlInBgTab, OpenUrlInWindow }; + +class WebViewStack : public QWidget { + Q_OBJECT + +public: + inline static const QUrl NewtabURL = QUrl("about:blank"); + +public: + WebViewStack(QWebEngineProfile *profile = new QWebEngineProfile, + QWidget *parent = nullptr); + + void openUrl(QUrl url = WebViewStack::NewtabURL, + OpenType openType = OpenType::OpenUrl); + + std::vector urls(); + u_int32_t currentWebViewIndex(); + u_int32_t count(); + QUrl currentUrl(); + + void focusWebView(long index); + void next(); + void previous(); + + void close(long index); + void closeCurrent(); + +private: + void setCurrentUrl(QUrl url); + QWebEngineView *createNewWebView(QUrl url = WebViewStack::NewtabURL, + bool focus = false); + +private slots: + void onNewWebViewRequest(QWebEngineNewWindowRequest &request); + +private: + QWebEngineProfile *profile; + QStackedLayout *layout; + QList webViewList; +}; -- cgit v1.3.1