From 5c89832668288db79ed0c79d3dda68af62285d18 Mon Sep 17 00:00:00 2001 From: Peter Varga Date: Wed, 30 Jul 2014 16:10:26 +0200 Subject: Add findText to Quick API Change-Id: Ic0de45c1fe2a5537d61ad446c96fe8fda7c30966 Reviewed-by: Jocelyn Turcotte --- src/webengine/api/qquickwebengineview.cpp | 24 ++++++++++++++++++++++++ src/webengine/api/qquickwebengineview_p_p.h | 10 +++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 2678832a7..352c3dcf2 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -554,6 +554,14 @@ void QQuickWebEngineViewPrivate::didRunJavaScript(quint64 requestId, const QVari callback.call(args); } +void QQuickWebEngineViewPrivate::didFindText(quint64 requestId, int matchCount) +{ + QJSValue callback = m_callbacks.take(requestId); + QJSValueList args; + args.append(QJSValue(matchCount)); + callback.call(args); +} + bool QQuickWebEngineView::isLoading() const { Q_D(const QQuickWebEngineView); @@ -637,6 +645,22 @@ QQmlComponent *QQuickWebEngineViewExperimental::extraContextMenuEntriesComponent return d_ptr->contextMenuExtraItems; } +void QQuickWebEngineViewExperimental::findText(const QString &subString, FindFlags options, const QJSValue &callback) +{ + if (subString.isEmpty()) { + d_ptr->adapter->stopFinding(); + if (!callback.isUndefined()) { + QJSValueList args; + args.append(QJSValue(0)); + const_cast(callback).call(args); + } + } else { + quint64 requestId = d_ptr->adapter->findText(subString, options & FindCaseSensitively, options & FindBackward); + if (!callback.isUndefined()) + d_ptr->m_callbacks.insert(requestId, callback); + } +} + QQuickWebEngineHistory *QQuickWebEngineViewExperimental::navigationHistory() const { return d_ptr->m_history.data(); diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h index 280133856..831e91a0b 100644 --- a/src/webengine/api/qquickwebengineview_p_p.h +++ b/src/webengine/api/qquickwebengineview_p_p.h @@ -87,6 +87,7 @@ class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineViewExperimental : public QObjec Q_PROPERTY(bool isFullScreen READ isFullScreen WRITE setIsFullScreen NOTIFY isFullScreenChanged) Q_PROPERTY(QQuickWebEngineHistory *navigationHistory READ navigationHistory CONSTANT FINAL) Q_ENUMS(Feature) + Q_FLAGS(FindFlags) public: enum Feature { @@ -95,6 +96,12 @@ public: MediaAudioVideoDevices }; + enum FindFlag { + FindBackward = 1, + FindCaseSensitively = 2, + }; + Q_DECLARE_FLAGS(FindFlags, FindFlag) + bool inspectable() const; void setInspectable(bool); void setIsFullScreen(bool fullscreen); @@ -107,6 +114,7 @@ public: public Q_SLOTS: void goBackTo(int index); void goForwardTo(int index); + void findText(const QString&, FindFlags, const QJSValue & = QJSValue()); void grantFeaturePermission(const QUrl &securityOrigin, Feature, bool granted); Q_SIGNALS: @@ -165,7 +173,7 @@ public: virtual void didRunJavaScript(quint64, const QVariant&) Q_DECL_OVERRIDE; virtual void didFetchDocumentMarkup(quint64, const QString&) Q_DECL_OVERRIDE { } virtual void didFetchDocumentInnerText(quint64, const QString&) Q_DECL_OVERRIDE { } - virtual void didFindText(quint64, int) Q_DECL_OVERRIDE { } + virtual void didFindText(quint64, int) Q_DECL_OVERRIDE; virtual void passOnFocus(bool reverse) Q_DECL_OVERRIDE; virtual void javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, const QString& message, int lineNumber, const QString& sourceID) Q_DECL_OVERRIDE; virtual void authenticationRequired(const QUrl&, const QString&, bool, const QString&, QString*, QString*) Q_DECL_OVERRIDE { } -- cgit v1.2.3