summaryrefslogtreecommitdiffstats
path: root/src/webview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/webview.cpp')
-rw-r--r--src/webview.cpp35
1 files changed, 35 insertions, 0 deletions
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 <QWebFrame>
+#include <QNetworkReply>
+#include <QMessageBox>
+#include <QTimer>
+
+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."));
+}