diff options
Diffstat (limited to 'lib/addressbar/addressbar.cpp')
-rw-r--r-- | lib/addressbar/addressbar.cpp | 57 |
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) |