summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@theqtcompany.com>2015-07-13 15:34:40 +0200
committerSimon Hausmann <simon.hausmann@theqtcompany.com>2015-07-18 08:54:46 +0000
commit9a45b7d4f6c126f4bf21e0a06cfe26c43b09deb7 (patch)
tree8c6650410c3472c6b6862e363040da3e81f06c29 /src
parentc53fd1412efebbbf11798fb81735a520c72464e0 (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.cpp18
-rw-r--r--src/webengine/api/qquickwebengineview_p.h3
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
};