diff options
author | Joerg Bornemann <joerg.bornemann@theqtcompany.com> | 2015-07-13 15:34:40 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2015-07-18 08:54:46 +0000 |
commit | 9a45b7d4f6c126f4bf21e0a06cfe26c43b09deb7 (patch) | |
tree | 8c6650410c3472c6b6862e363040da3e81f06c29 /src | |
parent | c53fd1412efebbbf11798fb81735a520c72464e0 (diff) |
implement Download* web actions in QML WebView
Change-Id: I4b5afc22a1884f59d6903593b1e62e991eaba57f
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/webengine/api/qquickwebengineview.cpp | 18 | ||||
-rw-r--r-- | src/webengine/api/qquickwebengineview_p.h | 3 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 1f5e56bdb..de9dc4e60 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -213,6 +213,9 @@ bool QQuickWebEngineViewPrivate::contextMenuRequested(const WebEngineContextMenu item = new MenuItemHandler(menu); QObject::connect(item, &MenuItemHandler::triggered, [q] { q->triggerWebAction(QQuickWebEngineView::CopyLinkToClipboard); }); ui()->addMenuItem(item, QObject::tr("Copy Link URL")); + item = new MenuItemHandler(menu); + QObject::connect(item, &MenuItemHandler::triggered, [q] { q->triggerWebAction(QQuickWebEngineView::DownloadLinkToDisk); }); + ui()->addMenuItem(item, QObject::tr("Save Link...")); } if (contextMenuData.mediaUrl.isValid()) { switch (contextMenuData.mediaType) { @@ -223,6 +226,9 @@ bool QQuickWebEngineViewPrivate::contextMenuRequested(const WebEngineContextMenu item = new MenuItemHandler(menu); QObject::connect(item, &MenuItemHandler::triggered, [q] { q->triggerWebAction(QQuickWebEngineView::CopyImageToClipboard); }); ui()->addMenuItem(item, QObject::tr("Copy Image")); + item = new MenuItemHandler(menu); + QObject::connect(item, &MenuItemHandler::triggered, [q] { q->triggerWebAction(QQuickWebEngineView::DownloadImageToDisk); }); + ui()->addMenuItem(item, QObject::tr("Save Image")); break; case WebEngineContextMenuData::MediaTypeCanvas: Q_UNREACHABLE(); // mediaUrl is invalid for canvases @@ -233,6 +239,9 @@ bool QQuickWebEngineViewPrivate::contextMenuRequested(const WebEngineContextMenu QObject::connect(item, &MenuItemHandler::triggered, [q] { q->triggerWebAction(QQuickWebEngineView::CopyMediaUrlToClipboard); }); ui()->addMenuItem(item, QObject::tr("Copy Media URL")); item = new MenuItemHandler(menu); + QObject::connect(item, &MenuItemHandler::triggered, [q] { q->triggerWebAction(QQuickWebEngineView::DownloadMediaToDisk); }); + ui()->addMenuItem(item, QObject::tr("Download Media")); + item = new MenuItemHandler(menu); QObject::connect(item, &MenuItemHandler::triggered, [q] { q->triggerWebAction(QQuickWebEngineView::ToggleMediaPlayPause); }); ui()->addMenuItem(item, QObject::tr("Toggle Play/Pause")); item = new MenuItemHandler(menu); @@ -1198,6 +1207,10 @@ void QQuickWebEngineView::triggerWebAction(WebAction action) qApp->clipboard()->setMimeData(data); } break; + case DownloadLinkToDisk: + if (d->contextMenuData.linkUrl.isValid()) + d->adapter->download(d->contextMenuData.linkUrl, d->contextMenuData.suggestedFileName); + break; case CopyImageToClipboard: if (d->contextMenuData.hasImageContent && (d->contextMenuData.mediaType == WebEngineContextMenuData::MediaTypeImage || @@ -1220,6 +1233,11 @@ void QQuickWebEngineView::triggerWebAction(WebAction action) qApp->clipboard()->setMimeData(data); } break; + case DownloadImageToDisk: + case DownloadMediaToDisk: + if (d->contextMenuData.mediaUrl.isValid()) + d->adapter->download(d->contextMenuData.mediaUrl, d->contextMenuData.suggestedFileName); + break; case CopyMediaUrlToClipboard: if (d->contextMenuData.mediaUrl.isValid() && (d->contextMenuData.mediaType == WebEngineContextMenuData::MediaTypeAudio || diff --git a/src/webengine/api/qquickwebengineview_p.h b/src/webengine/api/qquickwebengineview_p.h index e26e4f360..22fa6b864 100644 --- a/src/webengine/api/qquickwebengineview_p.h +++ b/src/webengine/api/qquickwebengineview_p.h @@ -199,15 +199,18 @@ public: OpenLinkInNewWindow, OpenLinkInNewTab, CopyLinkToClipboard, + DownloadLinkToDisk, CopyImageToClipboard, CopyImageUrlToClipboard, + DownloadImageToDisk, CopyMediaUrlToClipboard, ToggleMediaControls, ToggleMediaLoop, ToggleMediaPlayPause, ToggleMediaMute, + DownloadMediaToDisk, WebActionCount }; |