From fcda48e14aee987394e1dbfcd68687ef80f6d2ca Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Mon, 18 Jun 2018 12:07:34 +0200 Subject: AddressBar: code cleanup AddressBar: match input for protocol or '.' in addition to url validity --- lib/addressbar/addressbar.cpp | 57 ++++++++++++++++--------------------------- 1 file changed, 21 insertions(+), 36 deletions(-) (limited to 'lib/addressbar/addressbar.cpp') 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 #include #include #include @@ -35,6 +34,19 @@ AddressBar::AddressBar(const QHash &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 &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) -- cgit v1.2.1