aboutsummaryrefslogtreecommitdiffstats
path: root/src/declarative
diff options
context:
space:
mode:
authorCharles Yin <charles.yin@nokia.com>2011-07-26 10:47:13 +1000
committerQt by Nokia <qt-info@nokia.com>2011-07-29 02:47:11 +0200
commitb1200f446e611f167a712eb877d60b2b3a9444e6 (patch)
tree16319b9d65aae340a284d49f4904a492851ddc87 /src/declarative
parentea0cb11dc547c3b8a03618d31e4f7a85304f8fe3 (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.cpp21
-rw-r--r--src/declarative/qml/v8/qv8engine_p.h1
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);