diff options
Diffstat (limited to 'src/widgets')
| -rw-r--r-- | src/widgets/MainWindow.hpp | 19 | ||||
| -rw-r--r-- | src/widgets/WebView.hpp | 13 | ||||
| -rw-r--r-- | src/widgets/WebViewStack.hpp | 55 |
3 files changed, 87 insertions, 0 deletions
diff --git a/src/widgets/MainWindow.hpp b/src/widgets/MainWindow.hpp new file mode 100644 index 0000000..2bbc42e --- /dev/null +++ b/src/widgets/MainWindow.hpp @@ -0,0 +1,19 @@ +#pragma once + +#include <QMainWindow> + +#include "Configuration.hpp" +#include "InputMediator.hpp" + +class MainWindow : public QMainWindow { +public: + MainWindow(); + +private: + void keyPressEvent(QKeyEvent *event) override; + bool eventFilter(QObject *object, QEvent *event) override; + +private: + InputMediator *inputMediator; + Configuration configuration; +}; diff --git a/src/widgets/WebView.hpp b/src/widgets/WebView.hpp new file mode 100644 index 0000000..8a95139 --- /dev/null +++ b/src/widgets/WebView.hpp @@ -0,0 +1,13 @@ +#pragma once + +#include <QKeyEvent> +#include <QWebEngineView> +#include <QWidget> +#include <QtCore> + +class WebView : public QWebEngineView { + Q_OBJECT + +public: + WebView(QWebEngineProfile *profile); +}; diff --git a/src/widgets/WebViewStack.hpp b/src/widgets/WebViewStack.hpp new file mode 100644 index 0000000..e5b7ecc --- /dev/null +++ b/src/widgets/WebViewStack.hpp @@ -0,0 +1,55 @@ +#pragma once + +#include <QStackedLayout> +#include <QWebEngineProfile> +#include <sys/types.h> + +#include "Configuration.hpp" +#include "widgets/WebView.hpp" + +enum OpenType { OpenUrl, OpenUrlInTab, OpenUrlInBgTab, OpenUrlInWindow }; + +struct Tab { + QString url; + QString title; +}; + +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<QUrl> urls(); + QList<Tab> getTabList(); + 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); + WebView *createNewWebView(QUrl url, bool focus = false); + +private slots: + void onNewWebViewRequest(QWebEngineNewWindowRequest &request); + +private: + const Configuration *configuration; + QWebEngineProfile *profile; + QStackedLayout *layout; + QList<WebView *> webViewList; +}; |
