aboutsummaryrefslogtreecommitdiff
path: root/src/widgets/BrowserWindow.cpp
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2025-03-29 11:45:18 +0530
committerAkshay Nair <phenax5@gmail.com>2025-03-29 11:45:18 +0530
commitbcecbced7e1af9d99443a7e823f18328c7943f09 (patch)
tree612fac477acfa38358e15916bd4a44f386dc9206 /src/widgets/BrowserWindow.cpp
parentf7392096d2d84be7143947d386528bf4f487ee83 (diff)
downloadnull-browser-bcecbced7e1af9d99443a7e823f18328c7943f09.tar.gz
null-browser-bcecbced7e1af9d99443a7e823f18328c7943f09.zip
Add window action router for multi-window
Diffstat (limited to 'src/widgets/BrowserWindow.cpp')
-rw-r--r--src/widgets/BrowserWindow.cpp56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/widgets/BrowserWindow.cpp b/src/widgets/BrowserWindow.cpp
new file mode 100644
index 0000000..3ff4d3c
--- /dev/null
+++ b/src/widgets/BrowserWindow.cpp
@@ -0,0 +1,56 @@
+#include <QKeyEvent>
+#include <QStackedLayout>
+#include <QVBoxLayout>
+#include <QtCore>
+
+#include "Configuration.hpp"
+#include "WindowMediator.hpp"
+#include "keymap/KeymapEvaluator.hpp"
+#include "widgets/BrowserWindow.hpp"
+#include "widgets/WebViewStack.hpp"
+
+BrowserWindow::BrowserWindow(const Configuration &configuration)
+ : configuration(configuration) {
+ setCentralWidget(new QWidget());
+
+ // Root stacked layout
+ auto *layout = new QStackedLayout();
+ layout->setContentsMargins(0, 0, 0, 0);
+ layout->setSpacing(0);
+ layout->setStackingMode(QStackedLayout::StackAll);
+ centralWidget()->setLayout(layout);
+
+ // Web engine
+ auto *web_view_stack =
+ new WebViewStack(&configuration, new QWebEngineProfile("null-browser"));
+ layout->addWidget(web_view_stack);
+
+ auto *keymap_evaluator = KeymapEvaluator::instance();
+
+ // TODO: remoev
+ web_view_stack->open_url(QUrl("https://duckduckgo.com"), OpenType::OpenUrl);
+ web_view_stack->open_url(QUrl("https://ediblemonad.dev"),
+ OpenType::OpenUrlInBgTab);
+ web_view_stack->open_url(QUrl("https://github.com/trending"),
+ OpenType::OpenUrlInBgTab);
+
+ // TODO: remove
+ keymap_evaluator->add_keymap(KeyMode::Normal, "i", [keymap_evaluator]() {
+ keymap_evaluator->set_current_mode(KeyMode::Insert);
+ });
+ keymap_evaluator->add_keymap(KeyMode::Insert, "<esc>", [keymap_evaluator]() {
+ keymap_evaluator->set_current_mode(KeyMode::Normal);
+ });
+ keymap_evaluator->add_keymap(KeyMode::Normal, "<c-t>a",
+ []() { qDebug() << "Stuff"; });
+
+ input_mediator = new WindowMediator(web_view_stack, LuaRuntime::instance(),
+ keymap_evaluator);
+}
+
+bool BrowserWindow::on_window_key_event(QKeyEvent *event) {
+ const bool should_skip = input_mediator->evaluate_keymap(
+ event->modifiers(), (Qt::Key)event->key());
+
+ return should_skip;
+}