diff options
| author | Moss Heim <moss.heim@qt.io> | 2024-05-23 16:06:24 +0200 |
|---|---|---|
| committer | Moss Heim <moss.heim@qt.io> | 2024-05-31 16:09:34 +0200 |
| commit | 378cb6138801b21c643348807b1749a732e7b8e1 (patch) | |
| tree | 833597bc0da5c988a3c55aaa2092987c4d08b860 /src/webenginequick/api/qquickwebengineview.cpp | |
| parent | d825fca2d3c88117aa50269bbe09f5cd49d96ac7 (diff) | |
Merge printToPdf callback systems
Provide a common API in WebContentsAdapterClient so it can be used
easily by QWebEngineFrame.
Change-Id: I9abc1214cf535c3110d54d9ecb3257000c6db5fb
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/webenginequick/api/qquickwebengineview.cpp')
| -rw-r--r-- | src/webenginequick/api/qquickwebengineview.cpp | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/webenginequick/api/qquickwebengineview.cpp b/src/webenginequick/api/qquickwebengineview.cpp index 411caa0a4..f6bd38780 100644 --- a/src/webenginequick/api/qquickwebengineview.cpp +++ b/src/webenginequick/api/qquickwebengineview.cpp @@ -1317,13 +1317,17 @@ void QQuickWebEngineViewPrivate::runJavaScript( adapter->runJavaScript(script, worldId, frameId, callback); } -void QQuickWebEngineViewPrivate::didPrintPage(quint64 requestId, QSharedPointer<QByteArray> result) +void QQuickWebEngineViewPrivate::printToPdf(const QString &filePath, const QPageLayout &layout, + const QPageRanges &ranges) { - Q_Q(QQuickWebEngineView); - QJSValue callback = m_printCallbacks.take(requestId); - QJSValueList args; - args.append(qmlEngine(q)->toScriptValue(*(result.data()))); - callback.call(args); + adapter->printToPDF(layout, ranges, filePath); +} + +void QQuickWebEngineViewPrivate::printToPdf( + std::function<void(QSharedPointer<QByteArray>)> &&callback, const QPageLayout &layout, + const QPageRanges &ranges) +{ + adapter->printToPDFCallbackResult(std::move(callback), layout, ranges); } void QQuickWebEngineViewPrivate::didPrintPageToPdf(const QString &filePath, bool success) @@ -1603,8 +1607,13 @@ void QQuickWebEngineView::printToPdf(const QJSValue &callback, PrintedPageSizeId return; d->ensureContentsAdapter(); - quint64 requestId = d->adapter->printToPDFCallbackResult(pageLayout, ranges); - d->m_printCallbacks.insert(requestId, callback); + std::function wrappedCallback = [this, callback](QSharedPointer<QByteArray> result) { + QJSValueList args; + args.append(qmlEngine(this)->toScriptValue(*result)); + callback.call(args); + }; + + d->printToPdf(std::move(wrappedCallback), pageLayout, ranges); #else Q_UNUSED(pageSizeId); Q_UNUSED(orientation); |
