From 2125fddc87f78ca79317912fb497952f0a01bb81 Mon Sep 17 00:00:00 2001 From: No'am Rosenthal Date: Tue, 9 Aug 2011 16:12:44 -0700 Subject: Change the invokeMethod syntax to allow for a return callback --- examples/qtobject/qml/qtobject/index.html | 2 +- examples/qtobject/qml/qtobject/qtobject.js | 11 ++++++++++- examples/qtobject/testobject.cpp | 3 ++- examples/qtobject/testobject.h | 2 +- 4 files changed, 14 insertions(+), 4 deletions(-) (limited to 'examples/qtobject') diff --git a/examples/qtobject/qml/qtobject/index.html b/examples/qtobject/qml/qtobject/index.html index b177522..d79fd7e 100644 --- a/examples/qtobject/qml/qtobject/index.html +++ b/examples/qtobject/qml/qtobject/index.html @@ -12,7 +12,7 @@ - invoke method + invoke method Get property Set property Timer diff --git a/examples/qtobject/qml/qtobject/qtobject.js b/examples/qtobject/qml/qtobject/qtobject.js index 0545737..f0fe370 100644 --- a/examples/qtobject/qml/qtobject/qtobject.js +++ b/examples/qtobject/qml/qtobject/qtobject.js @@ -69,7 +69,16 @@ window.onload = function() { methodsAndSignals.push(data.signals[i]); methodsAndSignals.forEach(function(method) { - object[method] = function(args, callback) { + object[method] = function() { + var args = []; + var callback; + for (var i = 0; i < arguments.length; ++i) { + if (typeof arguments[i] == "function") + callback = arguments[i]; + else + args.push(arguments[i]); + } + webChannel.exec(JSON.stringify({type: "Qt.invokeMethod", object: objectName, method: method, args: args}), function(response) { if (response.length) (callback)(JSON.parse(response)); diff --git a/examples/qtobject/testobject.cpp b/examples/qtobject/testobject.cpp index 5d2f3ce..f13c5ab 100644 --- a/examples/qtobject/testobject.cpp +++ b/examples/qtobject/testobject.cpp @@ -7,9 +7,10 @@ TestObject::TestObject(QObject *parent) : connect(&timer, SIGNAL(timeout()), this, SIGNAL(timeout())); } -void TestObject::debugMe(const QString& data) +QString TestObject::debugMe(const QString& data) { qWarning() << data; + return "OK"; } void TestObject::setProp1(const QString& s) diff --git a/examples/qtobject/testobject.h b/examples/qtobject/testobject.h index de60f36..93aa227 100644 --- a/examples/qtobject/testobject.h +++ b/examples/qtobject/testobject.h @@ -22,7 +22,7 @@ public slots: timer.start(millis); } - void debugMe(const QString& data); + QString debugMe(const QString& data); private: QString p1; -- cgit v1.2.1