aboutsummaryrefslogtreecommitdiff
path: root/src/addressbar/addressbar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/addressbar/addressbar.cpp')
-rw-r--r--src/addressbar/addressbar.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/addressbar/addressbar.cpp b/src/addressbar/addressbar.cpp
new file mode 100644
index 0000000..4f2ae6a
--- /dev/null
+++ b/src/addressbar/addressbar.cpp
@@ -0,0 +1,55 @@
+/*
+ * This file is part of smolbote. It's copyrighted by the contributors recorded
+ * in the version control history of the file, available from its original
+ * location: https://neueland.iserlohn-fortress.net/smolbote.hg
+ *
+ * SPDX-License-Identifier: GPL-3.0
+ */
+
+#include "addressbar.h"
+#include "urllineedit.h"
+#include <QProgressBar>
+#include <QVBoxLayout>
+#include <QShortcut>
+
+AddressBar::AddressBar(const QHash<QString, QString> &config, QWidget *parent)
+ : QWidget(parent)
+{
+ setLayout(new QVBoxLayout());
+ layout()->setContentsMargins(0, 0, 0, 0);
+ layout()->setSpacing(0);
+
+ urlBar = new UrlLineEdit(this);
+ layout()->addWidget(urlBar);
+
+ auto *focusShortcut = new QShortcut(QKeySequence(config.value("addressbar.shortcuts.focus")), parent);
+ connect(focusShortcut, &QShortcut::activated, urlBar, [=]() {
+ urlBar->setFocus();
+ urlBar->selectAll();
+ });
+ connect(urlBar, &UrlLineEdit::textEdited, [=](const QString &text) {
+ std::function<void(QStringList&)> callback = std::bind(&UrlLineEdit::updateCompleter, urlBar, std::placeholders::_1);
+ emit complete(text, callback);
+ });
+
+ progressBar = new QProgressBar(this);
+ progressBar->setMaximumHeight(5);
+ progressBar->setTextVisible(false);
+ layout()->addWidget(progressBar);
+}
+
+AddressBar::~AddressBar()
+{
+ disconnect(progressBarConnection);
+}
+
+void AddressBar::connectWebView(WebView* view)
+{
+ disconnect(progressBarConnection);
+ urlBar->connectWebView(view);
+
+ if(view != nullptr) {
+ progressBar->setValue(view->loadProgress());
+ progressBarConnection = connect(view, &QWebEngineView::loadProgress, progressBar, &QProgressBar::setValue);
+ }
+}