diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-04-16 17:07:36 +0200 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-04-16 17:07:36 +0200 |
commit | d796821f8304306dbe088701724243b39e8eb358 (patch) | |
tree | 836c85aa421db5c495e2b36f6a02cea924b6d919 /src/mainwindow/widgets/navigationbar.cpp | |
parent | Branch of Qt5.11 features (diff) | |
download | smolbote-d796821f8304306dbe088701724243b39e8eb358.tar.xz |
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
Diffstat (limited to 'src/mainwindow/widgets/navigationbar.cpp')
-rw-r--r-- | src/mainwindow/widgets/navigationbar.cpp | 115 |
1 files changed, 58 insertions, 57 deletions
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 <QHBoxLayout> #include <QMenu> #include <QShortcut> @@ -15,99 +17,94 @@ #include <QToolBar> #include <QToolButton> #include <QWebEngineHistory> -#include "webengine/webview.h" -#include "configuration/configuration.h" -NavigationBar::NavigationBar(MainWindow *parent) - : QObject(parent) +NavigationBar::NavigationBar(const QHash<QString, QString> &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<std::string>("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<QWebEngineHistoryItem> 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<std::string>("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<QWebEngineHistoryItem> 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<std::string>("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<std::string>("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<std::string>("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<QString, QString> 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)); } |