From 220f6b43c274286d987a5e25a08e46aef3344301 Mon Sep 17 00:00:00 2001
From: Roberto Raggi <roberto.raggi@nokia.com>
Date: Wed, 10 Feb 2010 15:51:21 +0100
Subject: [PATCH] Register the `Qt' and the `console' object.

---
 src/libs/qmljs/qmljsinterpreter.cpp | 40 +++++++++++++++++++++++++++++
 src/libs/qmljs/qmljsinterpreter.h   |  2 ++
 2 files changed, 42 insertions(+)

diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp
index 2fd0aa6581a..ae22a628389 100644
--- a/src/libs/qmljs/qmljsinterpreter.cpp
+++ b/src/libs/qmljs/qmljsinterpreter.cpp
@@ -1410,6 +1410,7 @@ Engine::Engine()
       _regexpCtor(0),
       _globalObject(0),
       _mathObject(0),
+      _qtObject(0),
 #ifndef NO_DECLARATIVE_BACKEND
       _qmlKeysObject(0),
 #endif
@@ -1566,6 +1567,11 @@ const ObjectValue *Engine::mathObject() const
     return _mathObject;
 }
 
+const ObjectValue *Engine::qtObject() const
+{
+    return _qtObject;
+}
+
 void Engine::registerValue(Value *value)
 {
     _registeredValues.append(value);
@@ -1856,6 +1862,40 @@ void Engine::initializePrototypes()
     _globalObject->setProperty("Number", numberCtor());
     _globalObject->setProperty("Date", dateCtor());
     _globalObject->setProperty("RegExp", regexpCtor());
+
+
+    //types
+    _qtObject = newObject(/*prototype */ 0);
+    addFunction(_qtObject, QLatin1String("rgba"), 4);
+    addFunction(_qtObject, QLatin1String("hsla"), 4);
+    addFunction(_qtObject, QLatin1String("rect"), 4);
+    addFunction(_qtObject, QLatin1String("point"), 2);
+    addFunction(_qtObject, QLatin1String("size"), 2);
+    addFunction(_qtObject, QLatin1String("vector3d"), 3);
+
+    //color helpers
+    addFunction(_qtObject, QLatin1String("lighter"), 1);
+    addFunction(_qtObject, QLatin1String("darker"), 1);
+    addFunction(_qtObject, QLatin1String("tint"), 2);
+
+    //misc methods
+    addFunction(_qtObject, QLatin1String("closestAngle"), 2);
+    addFunction(_qtObject, QLatin1String("playSound"), 1);
+    addFunction(_qtObject, QLatin1String("openUrlExternally"), 1);
+    addFunction(_qtObject, QLatin1String("md5"), 1);
+    addFunction(_qtObject, QLatin1String("btoa"), 1);
+    addFunction(_qtObject, QLatin1String("atob"), 1);
+    addFunction(_qtObject, QLatin1String("quit"), 0);
+    addFunction(_qtObject, QLatin1String("resolvedUrl"), 1);
+
+    //firebug/webkit compat
+    ObjectValue *consoleObject = newObject(/*prototype */ 0);
+    addFunction(consoleObject, QLatin1String("log"), 1);
+    addFunction(consoleObject, QLatin1String("debug"), 1);
+
+    _globalObject->setProperty(QLatin1String("console"), consoleObject);
+
+    _globalObject->setProperty(QLatin1String("Qt"), _qtObject);
 }
 
 const ObjectValue *Engine::qmlKeysObject()
diff --git a/src/libs/qmljs/qmljsinterpreter.h b/src/libs/qmljs/qmljsinterpreter.h
index 3a03be7a642..b07a1491513 100644
--- a/src/libs/qmljs/qmljsinterpreter.h
+++ b/src/libs/qmljs/qmljsinterpreter.h
@@ -547,6 +547,7 @@ public:
     // global object
     ObjectValue *globalObject() const;
     const ObjectValue *mathObject() const;
+    const ObjectValue *qtObject() const;
 
     // prototypes
     ObjectValue *objectPrototype() const;
@@ -608,6 +609,7 @@ private:
 
     ObjectValue *_globalObject;
     ObjectValue *_mathObject;
+    ObjectValue *_qtObject;
 #ifndef NO_DECLARATIVE_BACKEND
     ObjectValue *_qmlKeysObject;
 #endif
-- 
GitLab