#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); page()->settings()->setAttribute(QWebSettings::LocalStorageEnabled, 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() { // If we have an old URL stored on the stack, navigate back to it, otherwise we return and nothing happens if (_urls.empty()) return; QUrl url = _urls.pop(); page()->mainFrame()->load(url); } QWebView* WebView::createWindow(QWebPage::WebWindowType) { // Remember current URL, then return the current Web View so no new window opens _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.")); }