aboutsummaryrefslogtreecommitdiff
path: root/src/widgets
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2025-03-11 23:02:44 +0530
committerAkshay Nair <phenax5@gmail.com>2025-03-12 00:13:47 +0530
commit35d8464f8975ab35c1e2f1a076302d9f95bfb22c (patch)
tree0b4e26e36fb27dd32c0e174e4ef829f1f77c1daf /src/widgets
parent0d5b7cb2a8bea5d91c58dd40f80d60bca384b766 (diff)
downloadnull-browser-35d8464f8975ab35c1e2f1a076302d9f95bfb22c.tar.gz
null-browser-35d8464f8975ab35c1e2f1a076302d9f95bfb22c.zip
Refactor browsermanager to webviewstack
Diffstat (limited to '')
-rw-r--r--src/widgets/MainWindow.cpp29
-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;