aboutsummaryrefslogtreecommitdiff
path: root/src/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/BrowserApp.cpp14
-rw-r--r--src/widgets/BrowserWindow.cpp48
-rw-r--r--src/widgets/BrowserWindow.hpp6
-rw-r--r--src/widgets/WebViewStack.cpp6
-rw-r--r--src/widgets/WebViewStack.hpp3
5 files changed, 49 insertions, 28 deletions
diff --git a/src/widgets/BrowserApp.cpp b/src/widgets/BrowserApp.cpp
index 13d855b..f2d541d 100644
--- a/src/widgets/BrowserApp.cpp
+++ b/src/widgets/BrowserApp.cpp
@@ -7,24 +7,24 @@
#include "widgets/BrowserWindow.hpp"
BrowserApp::BrowserApp() {
- auto *lua = LuaRuntime::instance();
- lua->start_event_loop();
+ auto &lua = LuaRuntime::instance();
+ lua.start_event_loop();
// Router init
- auto *router = WindowActionRouter::instance();
- router->initialize();
+ auto &router = WindowActionRouter::instance();
+ router.initialize();
// Global event filter
qApp->installEventFilter(this);
// NOTE: TMP
- LuaRuntime::instance()->load_file("./config.lua");
+ lua.load_file("./config.lua");
};
BrowserWindow *BrowserApp::create_window() {
auto *win = new BrowserWindow((const Configuration &)configuration);
- WindowActionRouter::instance()->add_window(win);
win->setWindowTitle("null-browser");
+ WindowActionRouter::instance().add_window(win);
win->show();
return win;
}
@@ -33,7 +33,7 @@ bool BrowserApp::eventFilter(QObject *target, QEvent *event) {
if (event->type() != QEvent::KeyPress)
return false;
- for (const auto &match : WindowActionRouter::instance()->windows()) {
+ for (const auto &match : WindowActionRouter::instance().windows()) {
auto *win = match.second;
if (auto *target_widget = dynamic_cast<QWidget *>(target);
diff --git a/src/widgets/BrowserWindow.cpp b/src/widgets/BrowserWindow.cpp
index 886572e..e38f234 100644
--- a/src/widgets/BrowserWindow.cpp
+++ b/src/widgets/BrowserWindow.cpp
@@ -26,35 +26,47 @@ BrowserWindow::BrowserWindow(const Configuration &configuration)
new WebViewStack(&configuration, new QWebEngineProfile("null-browser"));
layout->addWidget(web_view_stack);
- auto *keymap_evaluator = KeymapEvaluator::instance();
+ auto &keymap_evaluator = KeymapEvaluator::instance();
// TODO: remove
- keymap_evaluator->add_keymap(KeyMode::Normal, "i", [keymap_evaluator]() {
- keymap_evaluator->set_current_mode(KeyMode::Insert);
+ 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::Insert, "<esc>", [&keymap_evaluator]() {
+ keymap_evaluator.set_current_mode(KeyMode::Normal);
});
- keymap_evaluator->add_keymap(KeyMode::Normal, "<c-t>a",
- []() { qDebug() << "Stuff"; });
+ keymap_evaluator.add_keymap(KeyMode::Normal, "<c-t>a",
+ []() { qDebug() << "Stuff"; });
- input_mediator = new WindowMediator(web_view_stack);
+ win_mediator = new WindowMediator(web_view_stack);
- auto *lua = LuaRuntime::instance();
- lua->queue_task([this]() {
- emit input_mediator->url_opened("https://github.com/phenax/null-browser",
- OpenType::OpenUrl, 0);
- emit input_mediator->url_opened("https://ediblemonad.dev",
- OpenType::OpenUrlInBgTab, 0);
- emit input_mediator->url_opened("https://github.com/trending",
- OpenType::OpenUrlInBgTab, 0);
+ connect(web_view_stack, &WebViewStack::current_webview_changed, this,
+ [this](int index) {
+ auto webviews = win_mediator->get_webview_list();
+ if (index >= 0 && index < webviews.count()) {
+ const auto &webview = webviews.at(index);
+ setWindowTitle(webview.title);
+ }
+ });
+
+ // TODO: remove
+ auto &lua = LuaRuntime::instance();
+ lua.queue_task([this]() {
+ emit win_mediator->url_opened("https://github.com/phenax/null-browser",
+ OpenType::OpenUrl, 0);
+ emit win_mediator->url_opened("https://ediblemonad.dev",
+ OpenType::OpenUrlInBgTab, 0);
+ emit win_mediator->url_opened("https://github.com/trending",
+ OpenType::OpenUrlInBgTab, 0);
});
}
+void BrowserWindow::closeEvent(QCloseEvent * /*event*/) { emit closed(); }
+
bool BrowserWindow::on_window_key_event(QKeyEvent *event) {
- auto *keymap_evaluator = KeymapEvaluator::instance();
+ auto &keymap_evaluator = KeymapEvaluator::instance();
const bool should_skip =
- keymap_evaluator->evaluate(event->modifiers(), (Qt::Key)event->key());
+ keymap_evaluator.evaluate(event->modifiers(), (Qt::Key)event->key());
return should_skip;
}
diff --git a/src/widgets/BrowserWindow.hpp b/src/widgets/BrowserWindow.hpp
index cab7721..9aeeda3 100644
--- a/src/widgets/BrowserWindow.hpp
+++ b/src/widgets/BrowserWindow.hpp
@@ -14,19 +14,19 @@ class BrowserWindow : public QMainWindow {
public:
BrowserWindow(const Configuration &configuration);
- DEFINE_GETTER(mediator, input_mediator)
+ DEFINE_GETTER(mediator, win_mediator)
DEFINE_GETTER(get_id, win_id)
DEFINE_SETTER(set_id, win_id)
bool on_window_key_event(QKeyEvent *event);
- void closeEvent(QCloseEvent * /*event*/) override { emit closed(); }
+ void closeEvent(QCloseEvent * /*event*/) override;
signals:
void closed();
private:
- WindowMediator *input_mediator;
+ WindowMediator *win_mediator;
const Configuration &configuration;
WindowId win_id = -1;
diff --git a/src/widgets/WebViewStack.cpp b/src/widgets/WebViewStack.cpp
index f01b75c..6de170a 100644
--- a/src/widgets/WebViewStack.cpp
+++ b/src/widgets/WebViewStack.cpp
@@ -17,6 +17,9 @@ WebViewStack::WebViewStack(const Configuration *configuration,
layout->setContentsMargins(0, 0, 0, 0);
layout->setStackingMode(QStackedLayout::StackOne);
+ connect(layout, &QStackedLayout::currentChanged, this,
+ &WebViewStack::current_webview_changed);
+
create_new_webview(configuration->new_tab_url, true);
}
@@ -50,6 +53,8 @@ WebView *WebViewStack::create_new_webview(const QUrl &url, bool focus) {
if (focus)
focus_webview(webview->get_id());
+ emit current_webview_changed(layout->currentIndex());
+
return webview;
}
@@ -116,6 +121,7 @@ void WebViewStack::close(WebViewId webview_id) {
// TODO: Close window on empty
if (webview_list.isEmpty()) {
+ // window()->close();
create_new_webview(configuration->new_tab_url, true);
}
}
diff --git a/src/widgets/WebViewStack.hpp b/src/widgets/WebViewStack.hpp
index 40c2184..0f0d923 100644
--- a/src/widgets/WebViewStack.hpp
+++ b/src/widgets/WebViewStack.hpp
@@ -45,6 +45,9 @@ public:
/// @deprecated TODO: Remove
uint32_t current_webview_index();
+signals:
+ void current_webview_changed(int index);
+
protected:
void set_current_url(const QUrl &url);
WebView *create_new_webview(const QUrl &url, bool focus = false);