diff options
| author | Akshay Nair <phenax5@gmail.com> | 2025-03-11 23:02:44 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2025-03-12 00:13:47 +0530 |
| commit | 35d8464f8975ab35c1e2f1a076302d9f95bfb22c (patch) | |
| tree | 0b4e26e36fb27dd32c0e174e4ef829f1f77c1daf /src | |
| parent | 0d5b7cb2a8bea5d91c58dd40f80d60bca384b766 (diff) | |
| download | null-browser-35d8464f8975ab35c1e2f1a076302d9f95bfb22c.tar.gz null-browser-35d8464f8975ab35c1e2f1a076302d9f95bfb22c.zip | |
Refactor browsermanager to webviewstack
Diffstat (limited to 'src')
| -rw-r--r-- | src/widgets/MainWindow.cpp | 29 | ||||
| -rw-r--r-- | src/widgets/WebViewStack.cpp (renamed from src/widgets/BrowserManager.cpp) | 57 |
2 files changed, 36 insertions, 50 deletions
diff --git a/src/widgets/MainWindow.cpp b/src/widgets/MainWindow.cpp index f2825e8..2d936aa 100644 --- a/src/widgets/MainWindow.cpp +++ b/src/widgets/MainWindow.cpp @@ -7,9 +7,9 @@ #include "CommandParser.hpp" #include "completion/CommandsAdapter.hpp" #include "completion/UrlAdapter.hpp" -#include "widgets/BrowserManager.hpp" #include "widgets/InputLine.hpp" #include "widgets/MainWindow.hpp" +#include "widgets/WebViewStack.hpp" MainWindow::MainWindow() { setStyleSheet("background-color: #000; color: #fff;"); @@ -23,8 +23,8 @@ MainWindow::MainWindow() { centralWidget()->setLayout(layout); // Web engine - browserManager = new BrowserManager(new QWebEngineProfile("web-browser")); - layout->addWidget(browserManager); + webViewStack = new WebViewStack(new QWebEngineProfile("web-browser")); + layout->addWidget(webViewStack); // Command input inputLine = new InputLine; @@ -38,7 +38,7 @@ MainWindow::MainWindow() { luaRuntime = LuaRuntime::instance(); connect(luaRuntime, &LuaRuntime::urlOpened, this, [this](QString url, OpenType openType) { - browserManager->openUrl(QUrl(url), openType); + webViewStack->openUrl(QUrl(url), openType); }); } @@ -78,7 +78,7 @@ void MainWindow::onInputSubmit(QString input) { if (dynamic_cast<CommandEval *>(currentEvaluationType)) { evaluateCommand(input); } else if (auto urlEval = dynamic_cast<UrlEval *>(currentEvaluationType)) { - browserManager->openUrl(input, urlEval->type()); + webViewStack->openUrl(input, urlEval->type()); } } @@ -94,19 +94,19 @@ void MainWindow::evaluateCommand(QString command) { if (cmd.argsString.trimmed().isEmpty()) showURLInput("", OpenType::OpenUrl); else - browserManager->openUrl(cmd.argsString, OpenType::OpenUrl); + webViewStack->openUrl(cmd.argsString, OpenType::OpenUrl); break; case CommandType::TabOpen: if (cmd.argsString.trimmed().isEmpty()) showURLInput("", OpenType::OpenUrlInTab); else - browserManager->openUrl(cmd.argsString, OpenType::OpenUrlInTab); + webViewStack->openUrl(cmd.argsString, OpenType::OpenUrlInTab); break; case CommandType::TabNext: - browserManager->nextWebView(); + webViewStack->next(); break; case CommandType::TabPrev: - browserManager->previousWebView(); + webViewStack->previous(); break; case CommandType::Noop: break; @@ -117,21 +117,22 @@ void MainWindow::keyPressEvent(QKeyEvent *event) { auto combo = event->keyCombination(); if (combo.key() == Qt::Key_L && combo.keyboardModifiers().testFlag(Qt::ControlModifier)) { - showURLInput(browserManager->currentUrl().toString(), OpenType::OpenUrl); + showURLInput(webViewStack->currentUrl().toString(), OpenType::OpenUrl); } else if (combo.key() == Qt::Key_Semicolon && combo.keyboardModifiers().testFlag(Qt::ControlModifier)) { showCommandInput(""); } else if (combo.key() == Qt::Key_T && combo.keyboardModifiers().testFlag(Qt::ControlModifier)) { - browserManager->createNewWebView(QUrl("https://lite.duckduckgo.com"), true); + webViewStack->openUrl(QUrl("https://lite.duckduckgo.com"), + OpenType::OpenUrlInTab); } else if (combo.key() == Qt::Key_J && combo.keyboardModifiers().testFlag(Qt::ControlModifier)) { - browserManager->nextWebView(); + webViewStack->next(); } else if (combo.key() == Qt::Key_K && combo.keyboardModifiers().testFlag(Qt::ControlModifier)) { - browserManager->previousWebView(); + webViewStack->previous(); } else if (combo.key() == Qt::Key_W && combo.keyboardModifiers().testFlag(Qt::ControlModifier)) { - browserManager->closeCurrentWebView(); + webViewStack->closeCurrent(); } } diff --git a/src/widgets/BrowserManager.cpp b/src/widgets/WebViewStack.cpp index 5ac6479..8102351 100644 --- a/src/widgets/BrowserManager.cpp +++ b/src/widgets/WebViewStack.cpp @@ -2,21 +2,20 @@ #include <QWebEngineNewWindowRequest> #include <QWebEngineView> -#include "widgets/BrowserManager.hpp" +#include "widgets/WebViewStack.hpp" -BrowserManager::BrowserManager(QWebEngineProfile *profile) : QWidget() { +WebViewStack::WebViewStack(QWebEngineProfile *profile, QWidget *parent) + : QWidget(parent), profile(profile) { setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); layout = new QStackedLayout(this); layout->setStackingMode(QStackedLayout::StackAll); layout->setContentsMargins(0, 0, 0, 0); - this->profile = profile; - - createNewWebView(BrowserManager::NewtabURL, true); + createNewWebView(WebViewStack::NewtabURL, true); } -void BrowserManager::openUrl(QUrl url, OpenType openType) { +void WebViewStack::openUrl(QUrl url, OpenType openType) { switch (openType) { case OpenType::OpenUrl: setCurrentUrl(url); @@ -28,29 +27,19 @@ void BrowserManager::openUrl(QUrl url, OpenType openType) { createNewWebView(url, false); break; case OpenType::OpenUrlInWindow: - // TODO: impl + createNewWebView(url, true); break; } } -QWebEngineView *BrowserManager::createNewWebView(QUrl url, bool focus) { +QWebEngineView *WebViewStack::createNewWebView(QUrl url, bool focus) { auto webview = new QWebEngineView(profile); webview->setUrl(url); layout->addWidget(webview); webViewList.append(webview); connect(webview->page(), &QWebEnginePage::newWindowRequested, this, - &BrowserManager::onNewWebViewRequest); - // connect(webview->page(), &QWebEnginePage::windowCloseRequested, this, - // [this, webview]() { - // for (int i = 0; i <= this->webViewList.length(); i++) { - // auto w = this->webViewList.at(0); - // printf("::::: %d\n\n", w == webview); - // if (w == webview) { - // this->closeWebView(i); - // } - // } - // }); + &WebViewStack::onNewWebViewRequest); if (focus) focusWebView(webViewList.length() - 1); @@ -58,7 +47,7 @@ QWebEngineView *BrowserManager::createNewWebView(QUrl url, bool focus) { return webview; } -void BrowserManager::onNewWebViewRequest(QWebEngineNewWindowRequest &request) { +void WebViewStack::onNewWebViewRequest(QWebEngineNewWindowRequest &request) { switch (request.destination()) { case QWebEngineNewWindowRequest::InNewTab: createNewWebView(request.requestedUrl(), true); @@ -77,7 +66,7 @@ void BrowserManager::onNewWebViewRequest(QWebEngineNewWindowRequest &request) { } } -void BrowserManager::nextWebView() { +void WebViewStack::next() { if (webViewList.isEmpty()) return; auto index = currentWebViewIndex() + 1; @@ -86,7 +75,7 @@ void BrowserManager::nextWebView() { focusWebView(index); } -void BrowserManager::previousWebView() { +void WebViewStack::previous() { if (webViewList.isEmpty()) return; auto index = currentWebViewIndex() - 1; @@ -95,11 +84,9 @@ void BrowserManager::previousWebView() { focusWebView(index); } -void BrowserManager::closeCurrentWebView() { - closeWebView(currentWebViewIndex()); -} +void WebViewStack::closeCurrent() { close(currentWebViewIndex()); } -void BrowserManager::closeWebView(long index) { +void WebViewStack::close(long index) { if (index < 0 || index >= webViewList.length()) return; @@ -112,23 +99,21 @@ void BrowserManager::closeWebView(long index) { focusWebView(currentWebViewIndex()); if (webViewList.isEmpty()) { - createNewWebView(BrowserManager::NewtabURL, true); + createNewWebView(WebViewStack::NewtabURL, true); } } -std::vector<QUrl> BrowserManager::webViewUrls() { +std::vector<QUrl> WebViewStack::urls() { std::vector<QUrl> urls; for (auto &view : webViewList) urls.push_back(view->url()); return urls; } -u_int32_t BrowserManager::currentWebViewIndex() { - return layout->currentIndex(); -} -u_int32_t BrowserManager::webViewCount() { return webViewList.length(); } +u_int32_t WebViewStack::currentWebViewIndex() { return layout->currentIndex(); } +u_int32_t WebViewStack::count() { return webViewList.length(); } -void BrowserManager::focusWebView(long index) { +void WebViewStack::focusWebView(long index) { if (webViewList.isEmpty()) return; @@ -136,14 +121,14 @@ void BrowserManager::focusWebView(long index) { layout->setCurrentIndex(index); } -QUrl BrowserManager::currentUrl() { +QUrl WebViewStack::currentUrl() { if (currentWebViewIndex() >= webViewList.length()) - return QUrl("about:newtab"); + return QUrl(""); return webViewList.at(currentWebViewIndex())->url(); } -void BrowserManager::setCurrentUrl(QUrl url) { +void WebViewStack::setCurrentUrl(QUrl url) { if (currentWebViewIndex() >= webViewList.length()) return; |
