From d796821f8304306dbe088701724243b39e8eb358 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Mon, 16 Apr 2018 17:07:36 +0200 Subject: Multiple subwindows interface Subwindows are similar to tab groups. - Rewrote Browser and MainWindow, so they should be somewhat cleaner now - Moved AboutDialog to lib/about What's broken: - loading bar - search box - address bar bookmark suggestions - plugins --- src/mainwindow/widgets/navigationbar.cpp | 115 ++++++++++++++++--------------- 1 file changed, 58 insertions(+), 57 deletions(-) (limited to 'src/mainwindow/widgets/navigationbar.cpp') diff --git a/src/mainwindow/widgets/navigationbar.cpp b/src/mainwindow/widgets/navigationbar.cpp index 0652159..e2c714e 100644 --- a/src/mainwindow/widgets/navigationbar.cpp +++ b/src/mainwindow/widgets/navigationbar.cpp @@ -7,7 +7,9 @@ */ #include "navigationbar.h" -#include "mainwindow/mainwindow.h" +#include "addressbar/urllineedit.h" +#include "configuration/configuration.h" +#include "webengine/webview.h" #include #include #include @@ -15,99 +17,94 @@ #include #include #include -#include "webengine/webview.h" -#include "configuration/configuration.h" -NavigationBar::NavigationBar(MainWindow *parent) - : QObject(parent) +NavigationBar::NavigationBar(const QHash &conf, QWidget *parent) + : QToolBar(parent) { qStyle = parent->style(); // Back button - backButton = new QToolButton(parent); - backButton->setIcon(qStyle->standardIcon(QStyle::SP_ArrowBack)); - backButton->setShortcut(QString::fromStdString(parent->m_config->value("browser.shortcuts.back").value())); - connect(backButton, &QToolButton::clicked, this, [this]() { + backAction = addAction(qStyle->standardIcon(QStyle::SP_ArrowBack), tr("Back")); + backAction->setShortcut(QKeySequence(conf.value("navigation.shortcuts.back"))); + connect(backAction, &QAction::triggered, this, [this]() { m_view->history()->back(); }); - auto *backMenu = new QMenu(backButton); - backButton->setMenu(backMenu); + auto *backMenu = new QMenu(this); connect(backMenu, &QMenu::aboutToShow, this, [this, backMenu]() { backMenu->clear(); - const QList items = m_view->history()->backItems(10); - for(const QWebEngineHistoryItem &i : items) { - QAction *a = backMenu->addAction(i.title()); - connect(a, &QAction::triggered, this, [i, this]() { - m_view->history()->goToItem(i); + for(const QWebEngineHistoryItem &item : m_view->history()->backItems(10)) { + auto *action = backMenu->addAction(item.title()); + connect(action, &QAction::triggered, this, [item, this]() { + m_view->history()->goToItem(item); }); } }); + backAction->setMenu(backMenu); // Forward button - forwardButton = new QToolButton(parent); - forwardButton->setIcon(qStyle->standardIcon(QStyle::SP_ArrowForward)); - forwardButton->setShortcut(QString::fromStdString(parent->m_config->value("browser.shortcuts.forward").value())); - connect(forwardButton, &QToolButton::clicked, this, [this]() { + forwardAction = addAction(qStyle->standardIcon(QStyle::SP_ArrowForward), tr("Forward")); + forwardAction->setShortcut(QKeySequence(conf.value("navigation.shortcuts.forward"))); + connect(forwardAction, &QAction::triggered, this, [this]() { m_view->history()->forward(); }); - auto *forwardMenu = new QMenu(forwardButton); - forwardButton->setMenu(forwardMenu); + auto *forwardMenu = new QMenu(this); connect(forwardMenu, &QMenu::aboutToShow, this, [this, forwardMenu]() { forwardMenu->clear(); - const QList items = m_view->history()->forwardItems(10); - for(const QWebEngineHistoryItem &i : items) { - QAction *a = forwardMenu->addAction(i.title()); - connect(a, &QAction::triggered, this, [i, this]() { - m_view->history()->goToItem(i); + for(const QWebEngineHistoryItem &item : m_view->history()->forwardItems(10)) { + auto *action = forwardMenu->addAction(item.title()); + connect(action, &QAction::triggered, this, [item, this]() { + m_view->history()->goToItem(item); }); } }); + forwardAction->setMenu(forwardMenu); // Stop/Refresh button - stopReloadButton = new QToolButton(parent); - stopReloadButton->setIcon(qStyle->standardIcon(QStyle::SP_BrowserReload)); - stopReloadButton->setShortcut(QString::fromStdString(parent->m_config->value("browser.shortcuts.refresh").value())); - connect(stopReloadButton, &QToolButton::clicked, this, [this]() { + stopReloadAction = addAction(qStyle->standardIcon(QStyle::SP_BrowserReload), tr("Reload")); + stopReloadAction->setShortcut(QKeySequence(conf.value("navigation.shortcuts.refresh"))); + connect(stopReloadAction, &QAction::triggered, this, [this]() { if(m_view->isLoaded()) m_view->reload(); else m_view->stop(); }); - auto *reloadShortcut = new QShortcut( - QString::fromStdString(parent->m_config->value("browser.shortcuts.reload").value()), - parent); - connect(reloadShortcut, &QShortcut::activated, this, [this]() { - m_view->reload(); - }); - // Home button - homeButton = new QToolButton(parent); - homeButton->setIcon(qStyle->standardIcon(QStyle::SP_DirHomeIcon)); - homeButton->setShortcut(QString::fromStdString(parent->m_config->value("browser.shortcuts.home").value())); - connect(homeButton, &QToolButton::clicked, this, [this, parent]() { - m_view->load(parent->m_profile->homepage()); + homeAction = addAction(qStyle->standardIcon(QStyle::SP_DirHomeIcon), tr("Home")); + homeAction->setShortcut(QKeySequence(conf.value("navigation.shortcuts.home"))); + connect(homeAction, &QAction::triggered, this, [this]() { + m_view->triggerViewAction(WebView::GoHome); }); -} -void NavigationBar::addWidgetsTo(QToolBar *toolBar) -{ - toolBar->addWidget(backButton); - toolBar->addWidget(forwardButton); - toolBar->addWidget(stopReloadButton); - toolBar->addWidget(homeButton); + QHash a; + addressBar = new UrlLineEdit(a, this); + addWidget(addressBar); + + auto *focusShortcut = new QShortcut(QKeySequence("F4"), this); + connect(focusShortcut, &QShortcut::activated, this, [this]() { + addressBar->setFocus(); + addressBar->selectAll(); + }); } void NavigationBar::connectWebView(WebView *view) { - Q_CHECK_PTR(view); m_view = view; disconnect(loadStartedConnection); disconnect(loadFinishedConnection); + if(view == nullptr) { + backAction->setEnabled(false); + forwardAction->setEnabled(false); + stopReloadAction->setEnabled(false); + homeAction->setEnabled(false); + + return; + } + if(view->isLoaded()) { update_loadFinished(); } else { @@ -116,18 +113,22 @@ void NavigationBar::connectWebView(WebView *view) loadStartedConnection = connect(view, &QWebEngineView::loadStarted, this, &NavigationBar::update_loadStarted); loadFinishedConnection = connect(view, &WebView::loaded, this, &NavigationBar::update_loadFinished); + stopReloadAction->setEnabled(true); + homeAction->setEnabled(true); + + addressBar->connectWebView(view); } void NavigationBar::update_loadStarted() { - backButton->setEnabled(m_view->history()->canGoForward()); - forwardButton->setEnabled(m_view->history()->canGoForward()); - stopReloadButton->setIcon(qStyle->standardIcon(QStyle::SP_BrowserStop)); + backAction->setEnabled(m_view->history()->canGoForward()); + forwardAction->setEnabled(m_view->history()->canGoForward()); + stopReloadAction->setIcon(qStyle->standardIcon(QStyle::SP_BrowserStop)); } void NavigationBar::update_loadFinished() { - backButton->setEnabled(m_view->history()->canGoBack()); - forwardButton->setEnabled(m_view->history()->canGoForward()); - stopReloadButton->setIcon(qStyle->standardIcon(QStyle::SP_BrowserReload)); + backAction->setEnabled(m_view->history()->canGoBack()); + forwardAction->setEnabled(m_view->history()->canGoForward()); + stopReloadAction->setIcon(qStyle->standardIcon(QStyle::SP_BrowserReload)); } -- cgit v1.2.1