From e541e2ecfcd3a817e36069d12a23666ce3dda614 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Mon, 11 Sep 2017 00:35:18 +0200 Subject: Reload/Stop NavigationButton class --- src/lib/navigation/navigationbutton.cpp | 53 +++++++++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 5 deletions(-) (limited to 'src/lib/navigation/navigationbutton.cpp') diff --git a/src/lib/navigation/navigationbutton.cpp b/src/lib/navigation/navigationbutton.cpp index 7065535..6e31028 100644 --- a/src/lib/navigation/navigationbutton.cpp +++ b/src/lib/navigation/navigationbutton.cpp @@ -34,28 +34,57 @@ NavigationButton::NavigationButton(Type type, QWidget *parent) : 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); - connect(menu, &QMenu::aboutToShow, this, &NavigationButton::prepareMenu); + } -void NavigationButton::setView(const WebView *view) +void NavigationButton::setView(WebView *view) { + disconnect(loadStartedConnection); disconnect(loadFinishedConnection); m_view = view; - updateEnableState(); - loadFinishedConnection = connect(view, &WebView::loadFinished, this, &NavigationButton::updateEnableState); + 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::updateEnableState() +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: @@ -72,6 +101,12 @@ void NavigationButton::updateEnableState() setEnabled(false); } break; + case ReloadButton: + break; + case StopButton: + m_type = ReloadButton; + setIcon(style()->standardIcon(QStyle::SP_BrowserReload)); + break; } } @@ -84,6 +119,12 @@ void NavigationButton::doAction() case ForwardButton: m_view->history()->forward(); break; + case ReloadButton: + m_view->reload(); + break; + case StopButton: + m_view->stop(); + break; } } @@ -99,6 +140,8 @@ void NavigationButton::prepareMenu() case ForwardButton: items = m_view->history()->forwardItems(10); break; + default: + break; } for(QWebEngineHistoryItem i : items) { -- cgit v1.2.1