diff options
Diffstat (limited to 'src/declarative')
-rw-r--r-- | src/declarative/qml/v8/qv8engine.cpp | 21 | ||||
-rw-r--r-- | src/declarative/qml/v8/qv8engine_p.h | 1 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/declarative/qml/v8/qv8engine.cpp b/src/declarative/qml/v8/qv8engine.cpp index 056924291e..0294a60871 100644 --- a/src/declarative/qml/v8/qv8engine.cpp +++ b/src/declarative/qml/v8/qv8engine.cpp @@ -578,6 +578,10 @@ void QV8Engine::initializeGlobal(v8::Handle<v8::Object> global) 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); @@ -721,6 +725,23 @@ v8::Handle<v8::Value> QV8Engine::print(const v8::Arguments &args) 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. diff --git a/src/declarative/qml/v8/qv8engine_p.h b/src/declarative/qml/v8/qv8engine_p.h index 5058eee59f..7dc333630a 100644 --- a/src/declarative/qml/v8/qv8engine_p.h +++ b/src/declarative/qml/v8/qv8engine_p.h @@ -351,6 +351,7 @@ private: 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); |