diff options
author | Charles Yin <charles.yin@nokia.com> | 2011-07-26 10:47:13 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-07-29 02:47:11 +0200 |
commit | b1200f446e611f167a712eb877d60b2b3a9444e6 (patch) | |
tree | 16319b9d65aae340a284d49f4904a492851ddc87 /src/declarative | |
parent | ea0cb11dc547c3b8a03618d31e4f7a85304f8fe3 (diff) |
Add .arg() for Javascript String type
Change-Id: I973032189c40bfa4d5450396f5bad1a7c81ac68b
Task-number:QTBUG-16734
Reviewed-by:Michael Brasser
Reviewed-on: http://codereview.qt.nokia.com/2134
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
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); |