From 06fdf013b318c3d8f5efb3d2f87dedcdb507b8bc Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Thu, 24 Aug 2017 15:38:33 +0200 Subject: Cleaned up code --- src/lib/navigation/addressbar.cpp | 30 ++++++++++++++++++++++++++++++ src/lib/navigation/addressbar.h | 25 +++++++++++++++++++++++++ src/lib/navigation/navigation.qbs | 6 +++++- src/lib/navigation/urllineedit.cpp | 32 +++----------------------------- src/lib/navigation/urllineedit.h | 5 ----- src/mainwindow.cpp | 14 ++++++-------- src/mainwindow.h | 4 ++-- 7 files changed, 71 insertions(+), 45 deletions(-) create mode 100644 src/lib/navigation/addressbar.cpp create mode 100644 src/lib/navigation/addressbar.h diff --git a/src/lib/navigation/addressbar.cpp b/src/lib/navigation/addressbar.cpp new file mode 100644 index 0000000..dd9991d --- /dev/null +++ b/src/lib/navigation/addressbar.cpp @@ -0,0 +1,30 @@ +#include "addressbar.h" +#include + +AddressBar::AddressBar(QWidget *parent) : QWidget(parent) +{ + QHBoxLayout *_layout = new QHBoxLayout(this); + _layout->setMargin(0); + _layout->setSpacing(0); + setLayout(_layout); + + m_urlLineEdit = new UrlLineEdit(this); + setFocusProxy(m_urlLineEdit); + _layout->addWidget(m_urlLineEdit); + + connect(m_urlLineEdit, &UrlLineEdit::returnPressed, [&](){ + if(m_urlLineEdit->text().startsWith('#')) { + QString term = m_urlLineEdit->text().mid(1); + term.replace(' ', '+'); + emit searchTermEntered(term); + } else { + emit addressEntered(QUrl::fromUserInput(m_urlLineEdit->text())); + } + }); +} + +void AddressBar::setWebView(const WebView *view) +{ + connect(view, &WebView::urlChanged, m_urlLineEdit, &UrlLineEdit::setUrl); + m_urlLineEdit->setUrl(view->url()); +} diff --git a/src/lib/navigation/addressbar.h b/src/lib/navigation/addressbar.h new file mode 100644 index 0000000..b5b312a --- /dev/null +++ b/src/lib/navigation/addressbar.h @@ -0,0 +1,25 @@ +#ifndef ADDRESSBAR_H +#define ADDRESSBAR_H + +#include +#include "urllineedit.h" +#include + +class AddressBar : public QWidget +{ + Q_OBJECT +public: + explicit AddressBar(QWidget *parent = nullptr); + +signals: + void addressEntered(const QUrl &url); + void searchTermEntered(const QString &term); + +public slots: + void setWebView(const WebView *view); + +private: + UrlLineEdit *m_urlLineEdit; +}; + +#endif // ADDRESSBAR_H diff --git a/src/lib/navigation/navigation.qbs b/src/lib/navigation/navigation.qbs index 5f7ba41..7ffb3ee 100644 --- a/src/lib/navigation/navigation.qbs +++ b/src/lib/navigation/navigation.qbs @@ -7,13 +7,17 @@ Project { id: navigation name: "navigation" + cpp.includePaths: ['../..'] + Depends { name: "Qt" versionAtLeast: "5.9.0" - submodules: ["core", "widgets"] + submodules: ["core", "widgets", "webengine", "webenginewidgets"] } files: [ + "addressbar.cpp", + "addressbar.h", "urllineedit.cpp", "urllineedit.h", ] diff --git a/src/lib/navigation/urllineedit.cpp b/src/lib/navigation/urllineedit.cpp index f3fcccd..85bcacc 100644 --- a/src/lib/navigation/urllineedit.cpp +++ b/src/lib/navigation/urllineedit.cpp @@ -57,10 +57,10 @@ UrlLineEdit::UrlLineEdit(QWidget *parent) : listWidget->addItem("neueland.iserlohn-fortress.net"); connect(listWidget, &QListWidget::itemSelectionChanged, [this](){ - setUrl(urlFromUserInput(listWidget->currentItem()->text())); + setText(listWidget->currentItem()->text()); }); connect(listWidget, &QListWidget::itemActivated, [this](QListWidgetItem *item){ - setUrl(urlFromUserInput(item->text())); + setText(listWidget->currentItem()->text());; this->m_menu->hide(); }); @@ -73,11 +73,6 @@ UrlLineEdit::UrlLineEdit(QWidget *parent) : // connect signals connect(this, SIGNAL(textEdited(QString)), this, SLOT(showCompleter(QString))); connect(this, &QLineEdit::returnPressed, [this](){ - if(text().startsWith('#')) { - emit searchTermEntered(text()); - } else { - emit addressEntered(url()); - } m_menu->hide(); }); @@ -97,11 +92,6 @@ void UrlLineEdit::setUrl(const QUrl &url) setText(urlText); } -QUrl UrlLineEdit::url() -{ - return urlFromUserInput(text()); -} - void UrlLineEdit::focusInEvent(QFocusEvent *event) { clearTextFormat(); @@ -112,15 +102,6 @@ void UrlLineEdit::focusInEvent(QFocusEvent *event) // http://stackoverflow.com/a/35725950/1054406 // mousePressEvent triggers right after focusInEvent so text selected in focusInEvent unselects by mousePressEvent QTimer::singleShot(0, this, SLOT(selectAll())); - - //QTimer::singleShot(0, this, SLOT(showCompleter())); -} - -void UrlLineEdit::focusOutEvent(QFocusEvent *event) -{ - wasFocused = false; - setUrl(urlFromUserInput(text())); - QLineEdit::focusOutEvent(event); } void UrlLineEdit::resizeEvent(QResizeEvent *event) @@ -170,17 +151,12 @@ void UrlLineEdit::clearTextFormat() setTextFormat(QTextLayout::FormatRange()); } -QUrl UrlLineEdit::urlFromUserInput(const QString &input) -{ - return QUrl::fromUserInput(input); -} - // Completer void UrlLineEdit::showCompleter(const QString &text) { m_menu->move(mapToGlobal(QPoint(0, height()))); - listWidget->setCurrentRow(0, QItemSelectionModel::SelectCurrent); + //listWidget->setCurrentRow(0, QItemSelectionModel::SelectCurrent); m_menu->exec(); } @@ -202,14 +178,12 @@ void UrlLineEdit::pasteUrl() { clear(); paste(); - setUrl(urlFromUserInput(text())); } void UrlLineEdit::pasteUrlAndGo() { clear(); paste(); - setUrl(urlFromUserInput(text())); emit returnPressed(); } diff --git a/src/lib/navigation/urllineedit.h b/src/lib/navigation/urllineedit.h index 0865d47..8432f14 100644 --- a/src/lib/navigation/urllineedit.h +++ b/src/lib/navigation/urllineedit.h @@ -39,11 +39,9 @@ signals: public slots: void setUrl(const QUrl &url); - QUrl url(); protected: void focusInEvent(QFocusEvent *event); - void focusOutEvent(QFocusEvent *event); void resizeEvent(QResizeEvent *event); void keyPressEvent(QKeyEvent *event); @@ -59,12 +57,9 @@ private: void setTextFormat(const QTextLayout::FormatRange &format); void clearTextFormat(); - QUrl urlFromUserInput(const QString &input); - QTextLayout::FormatRange m_hostFormat; QMenu *m_contextMenu; - bool wasFocused = false; QMenu *m_menu; QListWidget *listWidget; }; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index b42fb7e..6306f62 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -36,7 +36,7 @@ MainWindow::MainWindow(QUrl defaultUrl, QWidget *parent) : navigationToolBar(new QToolBar(tr("Navigation"), this)), tabToolBar(new QToolBar(tr("Tab bar"), this)), tabBar(new WebViewTabBar(nullptr, this)), - urlLineEdit(new UrlLineEdit(navigationToolBar)), + m_addressBar(new AddressBar(navigationToolBar)), m_progressBar(new LoadingBar(this)) { // set up UI @@ -87,14 +87,14 @@ MainWindow::MainWindow(QUrl defaultUrl, QWidget *parent) : navigationToolBar->addWidget(forwardButton); navigationToolBar->addWidget(reloadButton); navigationToolBar->addWidget(homepageButton); - navigationToolBar->addWidget(urlLineEdit); + navigationToolBar->addWidget(m_addressBar); this->addToolBar(Qt::TopToolBarArea, navigationToolBar); // connect signals - connect(urlLineEdit, &UrlLineEdit::addressEntered, [&](const QUrl &url){ + connect(m_addressBar, &AddressBar::addressEntered, [&](const QUrl &url){ tabBar->currentView()->load(url); }); - connect(urlLineEdit, &UrlLineEdit::searchTermEntered, [&](const QString &string){ + connect(m_addressBar, &AddressBar::searchTermEntered, [&](const QString &string){ QString term = string.mid(1); term.replace(' ', '+'); tabBar->currentView()->load(QUrl::fromUserInput(qApp->settings()->value("general.search").toString().replace("$term", term))); @@ -168,8 +168,7 @@ void MainWindow::newTab(const QUrl &url) void MainWindow::focusAddress() { - urlLineEdit->setFocus(); - urlLineEdit->selectAll(); + m_addressBar->setFocus(); } void MainWindow::closeEvent(QCloseEvent *event) @@ -227,14 +226,13 @@ void MainWindow::handleTabChanged(WebView *view) setCentralWidget(view); // connect signals - connect(view, SIGNAL(urlChanged(QUrl)), urlLineEdit, SLOT(setUrl(QUrl))); + m_addressBar->setWebView(view); connect(view, SIGNAL(titleChanged(QString)), this, SLOT(handleTitleUpdated(QString))); connect(view, SIGNAL(linkHovered(QString)), ui->statusBar, SLOT(showMessage(QString))); m_progressBar->connectWebView(view); // update UI - urlLineEdit->setUrl(view->url()); this->handleTitleUpdated(view->title()); centralWidget()->setFocus(); } diff --git a/src/mainwindow.h b/src/mainwindow.h index 6db3102..b0572c5 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -23,7 +23,7 @@ #include #include -#include +#include #include #include "webengine/webengineprofile.h" #include @@ -69,7 +69,7 @@ private: Ui::MainWindow *ui; QToolBar *navigationToolBar, *tabToolBar; WebViewTabBar *tabBar; - UrlLineEdit *urlLineEdit; + AddressBar *m_addressBar; LoadingBar *m_progressBar; }; -- cgit v1.2.1