#pragma once #include #include #include #include #include "Configuration.hpp" #include "completion/TabsModel.hpp" enum OpenType { OpenUrl, OpenUrlInTab, OpenUrlInBgTab, OpenUrlInWindow }; class WebViewStack : public QWidget { Q_OBJECT public: inline static const QUrl NewtabURL = QUrl("about:blank"); public: WebViewStack(const Configuration *configuration, QWebEngineProfile *profile = new QWebEngineProfile, QWidget *parent = nullptr); void openUrl(QUrl url, 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(); QList getTabList(); private: void setCurrentUrl(QUrl url); QWebEngineView *createNewWebView(QUrl url, bool focus = false); private slots: void onNewWebViewRequest(QWebEngineNewWindowRequest &request); private: const Configuration *configuration; QWebEngineProfile *profile; QStackedLayout *layout; QList webViewList; };