From bcecbced7e1af9d99443a7e823f18328c7943f09 Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Sat, 29 Mar 2025 11:45:18 +0530 Subject: Add window action router for multi-window --- src/widgets/BrowserWindow.cpp | 56 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/widgets/BrowserWindow.cpp (limited to 'src/widgets/BrowserWindow.cpp') 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 +#include +#include +#include + +#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, "", [keymap_evaluator]() { + keymap_evaluator->set_current_mode(KeyMode::Normal); + }); + keymap_evaluator->add_keymap(KeyMode::Normal, "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; +} -- cgit v1.3.1