diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-01-19 02:10:31 +0100 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-01-19 02:10:31 +0100 |
commit | 49ee5ed6e80b8f06337f92d14e2cab1c1512c1e3 (patch) | |
tree | e35d5472c2a3ed129f5a6a6826f9999b033cc548 /lib | |
parent | Configuration creates missing items based on defaults (diff) | |
download | smolbote-49ee5ed6e80b8f06337f92d14e2cab1c1512c1e3.tar.xz |
Refactoring MainWindow
- Added NavigationBar object that manages the navigation buttons
- Removed NavigationButton class that it obsoleted
Diffstat (limited to 'lib')
-rw-r--r-- | lib/navigation/CMakeLists.txt | 2 | ||||
-rw-r--r-- | lib/navigation/navigationbutton.cpp | 138 | ||||
-rw-r--r-- | lib/navigation/navigationbutton.h | 48 |
3 files changed, 0 insertions, 188 deletions
diff --git a/lib/navigation/CMakeLists.txt b/lib/navigation/CMakeLists.txt index a81818e..4f0208b 100644 --- a/lib/navigation/CMakeLists.txt +++ b/lib/navigation/CMakeLists.txt @@ -1,8 +1,6 @@ cmake_minimum_required(VERSION 3.1.0) add_library(navigation - navigationbutton.cpp - navigationbutton.h urllineedit.cpp urllineedit.h) diff --git a/lib/navigation/navigationbutton.cpp b/lib/navigation/navigationbutton.cpp deleted file mode 100644 index 577c291..0000000 --- a/lib/navigation/navigationbutton.cpp +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This file is part of smolbote. It's copyrighted by the contributors recorded - * in the version control history of the file, available from its original - * location: git://neueland.iserlohn-fortress.net/smolbote.git - * - * SPDX-License-Identifier: GPL-3.0 - */ - -#include "navigationbutton.h" - -#include <QStyle> -#include <QWebEngineHistory> - -NavigationButton::NavigationButton(Type type, QWidget *parent) - : QToolButton(parent) -{ - m_type = type; - menu = new QMenu(this); - - switch(type) { - case BackButton: - setIcon(style()->standardIcon(QStyle::SP_ArrowBack)); - setMenu(menu); - connect(menu, &QMenu::aboutToShow, this, &NavigationButton::prepareMenu); - break; - case ForwardButton: - setIcon(style()->standardIcon(QStyle::SP_ArrowForward)); - setMenu(menu); - connect(menu, &QMenu::aboutToShow, this, &NavigationButton::prepareMenu); - break; - case ReloadButton: - setIcon(style()->standardIcon(QStyle::SP_BrowserReload)); - break; - case StopButton: - setIcon(style()->standardIcon(QStyle::SP_BrowserStop)); - break; - } - - connect(this, &NavigationButton::clicked, this, &NavigationButton::doAction); -} - -void NavigationButton::setView(WebView *view) -{ - disconnect(loadStartedConnection); - disconnect(loadFinishedConnection); - - m_view = view; - if(m_type == BackButton || m_type == ForwardButton) { - updateOnLoadFinished(); - } - - loadStartedConnection = connect(view, &WebView::loadStarted, this, &NavigationButton::updateOnLoadStarted); - loadFinishedConnection = connect(view, &WebView::loadFinished, this, &NavigationButton::updateOnLoadFinished); -} - -void NavigationButton::updateOnLoadStarted() -{ - switch(m_type) { - case BackButton: - break; - case ForwardButton: - break; - case ReloadButton: - m_type = StopButton; - setIcon(style()->standardIcon(QStyle::SP_BrowserStop)); - break; - case StopButton: - break; - } -} - -void NavigationButton::updateOnLoadFinished() -{ - switch(m_type) { - case BackButton: - if(m_view->history()->canGoBack()) { - setEnabled(true); - } else { - setEnabled(false); - } - break; - case ForwardButton: - if(m_view->history()->canGoForward()) { - setEnabled(true); - } else { - setEnabled(false); - } - break; - case ReloadButton: - break; - case StopButton: - m_type = ReloadButton; - setIcon(style()->standardIcon(QStyle::SP_BrowserReload)); - break; - } -} - -void NavigationButton::doAction() -{ - switch(m_type) { - case BackButton: - m_view->history()->back(); - break; - case ForwardButton: - m_view->history()->forward(); - break; - case ReloadButton: - m_view->reload(); - break; - case StopButton: - m_view->stop(); - break; - } -} - -void NavigationButton::prepareMenu() -{ - menu->clear(); - - QList<QWebEngineHistoryItem> items; - switch(m_type) { - case BackButton: - items = m_view->history()->backItems(10); - break; - case ForwardButton: - items = m_view->history()->forwardItems(10); - break; - default: - break; - } - - for(const QWebEngineHistoryItem &i : qAsConst(items)) { - QAction *a = menu->addAction(i.title()); - connect(a, &QAction::triggered, this, [i, this]() { - m_view->history()->goToItem(i); - }); - } -} diff --git a/lib/navigation/navigationbutton.h b/lib/navigation/navigationbutton.h deleted file mode 100644 index e0d358a..0000000 --- a/lib/navigation/navigationbutton.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * This file is part of smolbote. It's copyrighted by the contributors recorded - * in the version control history of the file, available from its original - * location: git://neueland.iserlohn-fortress.net/smolbote.git - * - * SPDX-License-Identifier: GPL-3.0 - */ - -#ifndef NAVIGATIONBUTTON_H -#define NAVIGATIONBUTTON_H - -#include "../../src/webengine/webview.h" -#include <QToolButton> - -class QMenu; - -class NavigationButton : public QToolButton -{ - Q_OBJECT -public: - enum Type { - BackButton, - ForwardButton, - ReloadButton, - StopButton - }; - - explicit NavigationButton(Type type, QWidget *parent = nullptr); - - void setView(WebView *view); - -signals: - -private slots: - void updateOnLoadStarted(); - void updateOnLoadFinished(); - void doAction(); - void prepareMenu(); - -private: - Type m_type; - QMenu *menu; - WebView *m_view; - - QMetaObject::Connection loadStartedConnection, loadFinishedConnection; -}; - -#endif // NAVIGATIONBUTTON_H |