aboutsummaryrefslogtreecommitdiff
path: root/lib/addressbar/addressbar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/addressbar/addressbar.cpp')
-rw-r--r--lib/addressbar/addressbar.cpp57
1 files changed, 21 insertions, 36 deletions
diff --git a/lib/addressbar/addressbar.cpp b/lib/addressbar/addressbar.cpp
index 2409cb9..7d17462 100644
--- a/lib/addressbar/addressbar.cpp
+++ b/lib/addressbar/addressbar.cpp
@@ -8,7 +8,6 @@
#include "addressbar.h"
#include "urllineedit.h"
-#include <QWebEngineView>
#include <QProgressBar>
#include <QShortcut>
#include <QVBoxLayout>
@@ -35,6 +34,19 @@ AddressBar::AddressBar(const QHash<QString, QString> &config, QWidget *parent)
emit complete(text, callback);
});
+ connect(urlBar, &UrlLineEdit::returnPressed, [=]() {
+ const QUrl url = QUrl::fromUserInput(urlBar->text());
+
+ // check if url contains \w+:// (matches protocol://) or contains a '.' (matches site.domain)
+ // this is because single words are valid URLs for QUrl (searchterm becomes http://searchterm)
+ // check for protocol://site because \. wouldn't match it (localhost is a search term; http://localhost is an address)
+ if(urlBar->text().contains(QRegularExpression("\\w+://|\\.")) && url.isValid()) {
+ emit load(url);
+ } else {
+ emit search(urlBar->text());
+ }
+ });
+
progressBar = new QProgressBar(this);
progressBar->setObjectName("LoadingBar");
progressBar->setMaximumHeight(5);
@@ -44,46 +56,19 @@ AddressBar::AddressBar(const QHash<QString, QString> &config, QWidget *parent)
AddressBar::~AddressBar()
{
- disconnect(urlChangedConnection);
- disconnect(loadUrlConnection);
- disconnect(progressBarConnection);
- disconnect(focusConnection);
+ disconnect(this);
}
-void AddressBar::setView(QWebEngineView *view)
+void AddressBar::setUrl(const QUrl &url)
{
- disconnect(urlChangedConnection);
- disconnect(loadUrlConnection);
- disconnect(progressBarConnection);
- disconnect(focusConnection);
-
- progressBar->setValue(100);
-
- if(view == nullptr) {
+ if(url.isEmpty())
urlBar->clear();
- urlBar->pageMenu = nullptr;
- urlBar->toolsMenu = nullptr;
- return;
- }
-
- urlBar->setUrl(view->url());
- urlChangedConnection = connect(view, &QWebEngineView::urlChanged, urlBar, &UrlLineEdit::setUrl);
- loadUrlConnection = connect(urlBar, &UrlLineEdit::returnPressed, [=]() {
- const QUrl url = QUrl::fromUserInput(urlBar->text());
- if(url.isValid()) {
- view->load(url);
- } else {
- emit search(urlBar->text());
- }
- view->setFocus();
- });
-
- progressBar->setValue(100);
- progressBarConnection = connect(view, &QWebEngineView::loadProgress, progressBar, &QProgressBar::setValue);
+ else
+ urlBar->setUrl(url);
+}
- focusConnection = connect(urlBar, &UrlLineEdit::focusView, view, [view]() {
- view->setFocus();
- });
+void AddressBar::setProgress(int value) {
+ progressBar->setValue(std::min(value, 100));
}
void AddressBar::setPageMenu(QMenu *menu)