From fc7ec7a877ce088d0ed9879af5791b3c3e3ee241 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 7 Jul 2017 16:15:55 +0200 Subject: Block downloads with user feedback --- src/webview.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'src/webview.cpp') diff --git a/src/webview.cpp b/src/webview.cpp index aa9c650..29afb19 100644 --- a/src/webview.cpp +++ b/src/webview.cpp @@ -1,5 +1,20 @@ #include "webview.h" #include +#include +#include +#include + +WebView::WebView(QWidget* parent) + : QWebView(parent), + _timer(new QTimer(this)), + _abortedDownload(false) { + _timer->setSingleShot(true); + connect(page(), SIGNAL(windowCloseRequested()), this, SLOT(windowCloseRequested())); + page()->setForwardUnsupportedContent(true); + connect(page(), SIGNAL(unsupportedContent(QNetworkReply*)),this,SLOT(unsupportedContent(QNetworkReply*))); + connect(page(), SIGNAL(downloadRequested(QNetworkRequest)),this,SLOT(downloadRequest(QNetworkRequest))); + connect(_timer, SIGNAL(timeout()), this, SLOT(downloadDeniedMessage())); +} void WebView::windowCloseRequested() { @@ -16,3 +31,23 @@ QWebView* WebView::createWindow(QWebPage::WebWindowType) _urls.push(this->url()); return this; } + +void WebView::unsupportedContent(QNetworkReply* rep) +{ + _abortedDownload = true; + rep->abort(); + rep->deleteLater(); + _timer->start(1); +} + +void WebView::downloadRequest(QNetworkRequest) +{ + _timer->start(1); +} + +void WebView::downloadDeniedMessage() +{ + QMessageBox::warning(this->parentWidget(), QString::fromUtf8("Denied"), + QString::fromUtf8("The requested action triggered a download, which is not allowed.\n\n" + "Diese Aktion löst einen Download aus, was nicht erlaubt ist.")); +} -- cgit v1.2.3-55-g7522