global->Set(v8::String::New("Qt"), qt);
global->Set(v8::String::New("gc"), V8FUNCTION(gc, this));
+ v8::Local<v8::Object> string = v8::Local<v8::Object>::Cast(global->Get(v8::String::New("String")));
+ v8::Local<v8::Object> stringPrototype = v8::Local<v8::Object>::Cast(string->Get(v8::String::New("prototype")));
+ stringPrototype->Set(v8::String::New("arg"), V8FUNCTION(stringArg, this));
+
m_xmlHttpRequestData = qt_add_qmlxmlhttprequest(this);
m_sqlDatabaseData = qt_add_qmlsqldatabase(this);
return v8::Undefined();
}
+v8::Handle<v8::Value> QV8Engine::stringArg(const v8::Arguments &args)
+{
+ QString value = V8ENGINE()->toString(args.This()->ToString());
+ if (args.Length() != 1)
+ V8THROW_ERROR("String.arg(): Invalid arguments");
+
+ if (args[0]->IsUint32())
+ return V8ENGINE()->toString(value.arg(args[0]->Uint32Value()));
+ else if (args[0]->IsInt32())
+ return V8ENGINE()->toString(value.arg(args[0]->Int32Value()));
+ else if (args[0]->IsNumber())
+ return V8ENGINE()->toString(value.arg(args[0]->NumberValue()));
+ else if (args[0]->IsBoolean())
+ return V8ENGINE()->toString(value.arg(args[0]->BooleanValue()));
+
+ return V8ENGINE()->toString(value.arg(V8ENGINE()->toString(args[0])));
+}
/*!
\qmlmethod bool Qt::isQtObject(object)
Returns true if \c object is a valid reference to a Qt or QML object, otherwise false.
static v8::Handle<v8::Value> qsTrNoOp(const v8::Arguments &args);
static v8::Handle<v8::Value> qsTrId(const v8::Arguments &args);
static v8::Handle<v8::Value> qsTrIdNoOp(const v8::Arguments &args);
+ static v8::Handle<v8::Value> stringArg(const v8::Arguments &args);
double qtDateTimeToJsDate(const QDateTime &dt);
QDateTime qtDateTimeFromJsDate(double jsDate);
--- /dev/null
+import Qt.test 1.0
+import QtQuick 2.0
+
+MyTypeObject {
+ stringProperty:"string:%0 false:%1 true:%2 uint32:%3 int32:%4 double:%5 date:%6!"
+ Component.onCompleted: {
+ var date = new Date();
+ date.setDate(11);
+ date.setMonth(1);
+ date.setFullYear(2011);
+ date.setHours(5);
+ date.setMinutes(30);
+ date.setSeconds(50);
+ stringProperty = stringProperty.arg("Hello World").arg(false).arg(true).arg(100).arg(-100).arg(3.1415926).arg(Qt.formatDateTime(date, "yyyy-MM-dd hh::mm:ss"));
+ }
+}
void aliasWritesOverrideBindings();
void aliasToCompositeElement();
void realToInt();
-
+ void dynamicString();
void include();
void callQtInvokables();
QMetaObject::invokeMethod(object, "test2");
QCOMPARE(object->value(), int(8));
}
+void tst_qdeclarativeecmascript::dynamicString()
+{
+ QDeclarativeComponent component(&engine, TEST_FILE("dynamicString.qml"));
+ QObject *object = component.create();
+ QVERIFY(object != 0);
+ QCOMPARE(object->property("stringProperty").toString(),
+ QString::fromLatin1("string:Hello World false:0 true:1 uint32:100 int32:-100 double:3.14159 date:2011-02-11 05::30:50!"));
+}
QTEST_MAIN(tst_qdeclarativeecmascript)