aboutsummaryrefslogtreecommitdiff
path: root/src/mainwindow/widgets/navigationbar.cpp
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2018-04-16 17:07:36 +0200
committerAqua-sama <aqua@iserlohn-fortress.net>2018-04-16 17:07:36 +0200
commitd796821f8304306dbe088701724243b39e8eb358 (patch)
tree836c85aa421db5c495e2b36f6a02cea924b6d919 /src/mainwindow/widgets/navigationbar.cpp
parentBranch of Qt5.11 features (diff)
downloadsmolbote-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.cpp115
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));
}