equal
deleted
inserted
replaced
1 /**************************************************************************** |
1 /**************************************************************************** |
2 ** |
2 ** |
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). |
3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). |
4 ** All rights reserved. |
4 ** All rights reserved. |
5 ** Contact: Nokia Corporation (qt-info@nokia.com) |
5 ** Contact: Nokia Corporation (qt-info@nokia.com) |
6 ** |
6 ** |
7 ** This file is part of the QtScript module of the Qt Toolkit. |
7 ** This file is part of the QtScript module of the Qt Toolkit. |
8 ** |
8 ** |
52 #include "bridge/qscriptobject_p.h" |
52 #include "bridge/qscriptobject_p.h" |
53 #include "bridge/qscriptclassobject_p.h" |
53 #include "bridge/qscriptclassobject_p.h" |
54 #include "bridge/qscriptvariant_p.h" |
54 #include "bridge/qscriptvariant_p.h" |
55 #include "bridge/qscriptqobject_p.h" |
55 #include "bridge/qscriptqobject_p.h" |
56 #include "bridge/qscriptdeclarativeclass_p.h" |
56 #include "bridge/qscriptdeclarativeclass_p.h" |
|
57 #include "bridge/qscriptdeclarativeobject_p.h" |
57 |
58 |
58 /*! |
59 /*! |
59 \since 4.3 |
60 \since 4.3 |
60 \class QScriptValue |
61 \class QScriptValue |
61 |
62 |
1568 QObject *QScriptValue::toQObject() const |
1569 QObject *QScriptValue::toQObject() const |
1569 { |
1570 { |
1570 Q_D(const QScriptValue); |
1571 Q_D(const QScriptValue); |
1571 if (isQObject()) { |
1572 if (isQObject()) { |
1572 QScriptObject *object = static_cast<QScriptObject*>(JSC::asObject(d->jscValue)); |
1573 QScriptObject *object = static_cast<QScriptObject*>(JSC::asObject(d->jscValue)); |
1573 return static_cast<QScript::QObjectDelegate*>(object->delegate())->value(); |
1574 QScriptObjectDelegate *delegate = object->delegate(); |
1574 } else if (QScriptDeclarativeClass *dc = QScriptDeclarativeClass::scriptClass(*this)) { |
1575 if (delegate->type() == QScriptObjectDelegate::DeclarativeClassObject) |
1575 return dc->toQObject(QScriptDeclarativeClass::object(*this)); |
1576 return static_cast<QScript::DeclarativeObjectDelegate*>(delegate)->scriptClass()->toQObject(QScriptDeclarativeClass::object(*this)); |
|
1577 return static_cast<QScript::QObjectDelegate*>(delegate)->value(); |
1576 } else if (isVariant()) { |
1578 } else if (isVariant()) { |
1577 QVariant var = toVariant(); |
1579 QVariant var = toVariant(); |
1578 int type = var.userType(); |
1580 int type = var.userType(); |
1579 if ((type == QMetaType::QObjectStar) || (type == QMetaType::QWidgetStar)) |
1581 if ((type == QMetaType::QObjectStar) || (type == QMetaType::QWidgetStar)) |
1580 return *reinterpret_cast<QObject* const *>(var.constData()); |
1582 return *reinterpret_cast<QObject* const *>(var.constData()); |
2243 Q_D(const QScriptValue); |
2245 Q_D(const QScriptValue); |
2244 if (!d || !d->isJSC() || !d->jscValue.inherits(&QScriptObject::info)) |
2246 if (!d || !d->isJSC() || !d->jscValue.inherits(&QScriptObject::info)) |
2245 return false; |
2247 return false; |
2246 QScriptObject *object = static_cast<QScriptObject*>(JSC::asObject(d->jscValue)); |
2248 QScriptObject *object = static_cast<QScriptObject*>(JSC::asObject(d->jscValue)); |
2247 QScriptObjectDelegate *delegate = object->delegate(); |
2249 QScriptObjectDelegate *delegate = object->delegate(); |
2248 return (delegate && (delegate->type() == QScriptObjectDelegate::QtObject)); |
2250 return (delegate && (delegate->type() == QScriptObjectDelegate::QtObject || |
|
2251 (delegate->type() == QScriptObjectDelegate::DeclarativeClassObject && |
|
2252 static_cast<QScript::DeclarativeObjectDelegate*>(delegate)->scriptClass()->isQObject()))); |
2249 } |
2253 } |
2250 |
2254 |
2251 /*! |
2255 /*! |
2252 Returns true if this QScriptValue is a QMetaObject; otherwise returns |
2256 Returns true if this QScriptValue is a QMetaObject; otherwise returns |
2253 false. |
2257 false. |