From 102ee62d3d7dff0f9ec00df185733f41048bef37 Mon Sep 17 00:00:00 2001 From: David Rosca Date: Sun, 4 Oct 2015 19:35:02 +0200 Subject: [PATCH] WebView: Enable download link/image/media actions with Qt 5.6 --- src/lib/webengine/webview.cpp | 49 +++++++++++++++++++---------------- src/lib/webengine/webview.h | 4 ++- 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/src/lib/webengine/webview.cpp b/src/lib/webengine/webview.cpp index 53c3049c5..8bc01b930 100644 --- a/src/lib/webengine/webview.cpp +++ b/src/lib/webengine/webview.cpp @@ -433,30 +433,33 @@ void WebView::copyLinkToClipboard() } } -void WebView::openUrlInNewTab(const QUrl &url, Qz::NewTabPositionFlags position) +void WebView::downloadLinkToDisk() { - QNetworkRequest request(url); - request.setRawHeader("X-QupZilla-UserLoadAction", QByteArray("1")); +#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) + triggerPageAction(QWebEnginePage::DownloadLinkToDisk); +#endif +} - loadInNewTab(request, position); +void WebView::downloadImageToDisk() +{ +#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) + triggerPageAction(QWebEnginePage::DownloadImageToDisk); +#endif } -void WebView::downloadUrlToDisk() +void WebView::downloadMediaToDisk() { -#if QTWEBENGINE_DISABLED - if (QAction* action = qobject_cast(sender())) { - QNetworkRequest request(action->data().toUrl()); +#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) + triggerPageAction(QWebEnginePage::DownloadMediaToDisk); +#endif +} - DownloadManager::DownloadInfo info; - info.page = page(); - info.suggestedFileName = QString(); - info.askWhatToDo = false; - info.forceChoosingPath = true; +void WebView::openUrlInNewTab(const QUrl &url, Qz::NewTabPositionFlags position) +{ + QNetworkRequest request(url); + request.setRawHeader("X-QupZilla-UserLoadAction", QByteArray("1")); - DownloadManager* dManager = mApp->downloadManager(); - dManager->download(request, info); - } -#endif + loadInNewTab(request, position); } void WebView::openActionUrl() @@ -712,8 +715,8 @@ void WebView::createLinkContextMenu(QMenu* menu, const WebHitTestResult &hitTest bData << hitTest.linkUrl() << hitTest.linkTitle(); menu->addAction(QIcon::fromTheme("bookmark-new"), tr("B&ookmark link"), this, SLOT(bookmarkLink()))->setData(bData); -#if QTWEBENGINE_DISABLED - menu->addAction(QIcon::fromTheme("document-save"), tr("&Save link as..."), this, SLOT(downloadUrlToDisk()))->setData(hitTest.linkUrl()); +#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) + menu->addAction(QIcon::fromTheme("document-save"), tr("&Save link as..."), this, SLOT(downloadLinkToDisk())); #endif menu->addAction(QIcon::fromTheme("mail-message-new"), tr("Send link..."), this, SLOT(sendLinkByMail()))->setData(hitTest.linkUrl()); menu->addAction(QIcon::fromTheme("edit-copy"), tr("&Copy link address"), this, SLOT(copyLinkToClipboard()))->setData(hitTest.linkUrl()); @@ -735,8 +738,8 @@ void WebView::createImageContextMenu(QMenu* menu, const WebHitTestResult &hitTes menu->addAction(act); menu->addAction(QIcon::fromTheme("edit-copy"), tr("Copy image ad&dress"), this, SLOT(copyLinkToClipboard()))->setData(hitTest.imageUrl()); menu->addSeparator(); -#if QTWEBENGINE_DISABLED - menu->addAction(QIcon::fromTheme("document-save"), tr("&Save image as..."), this, SLOT(downloadUrlToDisk()))->setData(hitTest.imageUrl()); +#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) + menu->addAction(QIcon::fromTheme("document-save"), tr("&Save image as..."), this, SLOT(downloadImageToDisk())); #endif menu->addAction(QIcon::fromTheme("mail-message-new"), tr("Send image..."), this, SLOT(sendLinkByMail()))->setData(hitTest.imageUrl()); menu->addSeparator(); @@ -830,8 +833,8 @@ void WebView::createMediaContextMenu(QMenu *menu, const WebHitTestResult &hitTes menu->addSeparator(); menu->addAction(QIcon::fromTheme("edit-copy"), tr("&Copy Media Address"), this, SLOT(copyLinkToClipboard()))->setData(hitTest.mediaUrl()); menu->addAction(QIcon::fromTheme("mail-message-new"), tr("&Send Media Address"), this, SLOT(sendLinkByMail()))->setData(hitTest.mediaUrl()); -#if QTWEBENGINE_DISABLED - menu->addAction(QIcon::fromTheme("document-save"), tr("Save Media To &Disk"), this, SLOT(downloadUrlToDisk()))->setData(hitTest.mediaUrl()); +#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) + menu->addAction(QIcon::fromTheme("document-save"), tr("Save Media To &Disk"), this, SLOT(downloadMediaToDisk())); #endif } diff --git a/src/lib/webengine/webview.h b/src/lib/webengine/webview.h index a4865edad..11ab01e35 100644 --- a/src/lib/webengine/webview.h +++ b/src/lib/webengine/webview.h @@ -117,7 +117,9 @@ protected slots: void openUrlInNewWindow(); void sendLinkByMail(); void copyLinkToClipboard(); - void downloadUrlToDisk(); + void downloadLinkToDisk(); + void downloadImageToDisk(); + void downloadMediaToDisk(); void openActionUrl(); void showSiteInfo(); void searchSelectedText();