diff options
Diffstat (limited to 'src/widgets/BrowserWindow.cpp')
| -rw-r--r-- | src/widgets/BrowserWindow.cpp | 56 |
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; +} |
