From 49ee5ed6e80b8f06337f92d14e2cab1c1512c1e3 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Fri, 19 Jan 2018 02:10:31 +0100 Subject: Refactoring MainWindow - Added NavigationBar object that manages the navigation buttons - Removed NavigationButton class that it obsoleted --- lib/navigation/CMakeLists.txt | 2 - lib/navigation/navigationbutton.cpp | 138 ------------------------------------ lib/navigation/navigationbutton.h | 48 ------------- 3 files changed, 188 deletions(-) delete mode 100644 lib/navigation/navigationbutton.cpp delete mode 100644 lib/navigation/navigationbutton.h (limited to 'lib/navigation') 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 -#include - -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 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 - -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 -- cgit v1.2.1