C++ equivalent of the script statement \c{new Object()}. You can use
the object-specific functionality in QJSValue to manipulate the
script object (e.g. QJSValue::setProperty()). Similarly, use
- newArray() to create a JavaScript array object. Use newDate() to
- create a \c{Date} object.
+ newArray() to create a JavaScript array object.
\section1 QObject Integration
return d->scriptValueFromInternal(d->global());
}
-#ifdef QT_DEPRECATED
-
-/*!
- \obsolete
-
- Creates a JavaScript object of class Date from the given \a value.
-
- \sa QJSValue::toDateTime()
-*/
-QJSValue QJSEngine::newDate(const QDateTime &dt)
-{
- Q_D(QJSEngine);
- QScriptIsolate api(d, QScriptIsolate::NotNullEngine);
- v8::HandleScope handleScope;
- return d->scriptValueFromInternal(QJSConverter::toDateTime(dt));
-}
-
-/*!
- \obsolete
-
- Creates a JavaScript object of class Date with the given
- \a value (the number of milliseconds since 01 January 1970,
- UTC).
-*/
-QJSValue QJSEngine::newDate(double date)
-{
- Q_D(QJSEngine);
- QScriptIsolate api(d, QScriptIsolate::NotNullEngine);
- v8::HandleScope handleScope;
- return d->scriptValueFromInternal(v8::Handle<v8::Value>(v8::Date::New(date)));
-}
-
-#endif // QT_DEPRECATED
-
/*!
* \internal
* used by QJSEngine::toScriptValue
QT_BEGIN_NAMESPACE
-class QDateTime;
class QV8Engine;
template <typename T>
QT_DEPRECATED QJSValue undefinedValue();
QT_DEPRECATED QJSValue newVariant(const QVariant &value);
-
- QT_DEPRECATED QJSValue newDate(double value);
- QT_DEPRECATED QJSValue newDate(const QDateTime &value);
#endif
Q_SIGNALS:
QJSEngine eng;
{
- QJSValue date = eng.newDate(0);
+ QJSValue date = eng.evaluate("new Date(0)");
QCOMPARE(date.isValid(), true);
QCOMPARE(date.isDate(), true);
QCOMPARE(date.isObject(), true);
{
QDateTime dt = QDateTime(QDate(1, 2, 3), QTime(4, 5, 6, 7), Qt::LocalTime);
- QJSValue date = eng.newDate(dt);
+ QJSValue date = eng.toScriptValue(dt);
QCOMPARE(date.isValid(), true);
QCOMPARE(date.isDate(), true);
QCOMPARE(date.isObject(), true);
{
QDateTime dt = QDateTime(QDate(1, 2, 3), QTime(4, 5, 6, 7), Qt::UTC);
- QJSValue date = eng.newDate(dt);
+ QJSValue date = eng.toScriptValue(dt);
// toDateTime() result should be in local time
QCOMPARE(date.toDateTime(), dt.toLocalTime());
}
QJSEngine eng1;
QJSEngine eng2;
{
- QJSValue d1 = eng1.newDate(0);
- QJSValue d2 = eng2.newDate(0);
+ QDateTime dt = QDateTime::currentDateTime();
+ QJSValue d1 = eng1.toScriptValue(dt);
+ QJSValue d2 = eng2.toScriptValue(dt);
QCOMPARE(d1.toDateTime(), d2.toDateTime());
QCOMPARE(d2.toDateTime(), d1.toDateTime());
}
for (int i = 0; i < 8000; ++i) {
QJSValue jsDate = eng.evaluate(QString::fromLatin1("new Date(%0)").arg(secs * 1000.0));
QDateTime qtDate = jsDate.toDateTime();
- QJSValue jsDate2 = eng.newDate(qtDate);
+ QJSValue jsDate2 = eng.toScriptValue(qtDate);
if (jsDate2.toNumber() != jsDate.toNumber())
QFAIL(qPrintable(jsDate.toString()));
secs += 2*60*60;
QDateTime qtDate = QDateTime(QDate(2009, 1, 1));
QJSEngine eng;
for (int i = 0; i < 8000; ++i) {
- QJSValue jsDate = eng.newDate(qtDate);
+ QJSValue jsDate = eng.toScriptValue(qtDate);
QDateTime qtDate2 = jsDate.toDateTime();
if (qtDate2 != qtDate)
QFAIL(qPrintable(qtDate.toString()));
QDateTime qtDate = QDateTime(QDate(2009, 1, 1));
QJSEngine eng;
for (int i = 0; i < 8000; ++i) {
- QJSValue jsDate = eng.newDate(qtDate);
+ QJSValue jsDate = eng.toScriptValue(qtDate);
QString jsUTCDateStr = jsDate.property("toISOString").callWithInstance(jsDate).toString();
jsUTCDateStr.remove(jsUTCDateStr.length() - 5, 4); // get rid of milliseconds (".000")
QString qtUTCDateStr = qtDate.toUTC().toString(Qt::ISODate);
{
QDateTime dateTime = QDateTime(QDate(1980, 10, 4));
- QJSValue dateObject = eng.newDate(dateTime);
+ QJSValue dateObject = eng.toScriptValue(dateTime);
QVariant var = dateObject.toVariant();
QCOMPARE(var, QVariant(dateTime));
}
QTest::newRow("null bound") << engine->nullValue();
QTest::newRow("object") << engine->newObject();
QTest::newRow("array") << engine->newArray();
- QTest::newRow("date") << engine->newDate(124);
+ QTest::newRow("date") << engine->evaluate("new Date(124)");
QTest::newRow("variant(12345)") << engine->newVariant(12345);
QTest::newRow("variant((QObject*)0)") << engine->newVariant(qVariantFromValue((QObject*)0));
QTest::newRow("newQObject(0)") << engine->newQObject(0);
QTest::newRow("object from evaluate") << engine->evaluate("new Object()");
QTest::newRow("object from engine") << engine->newObject();
QTest::newRow("Array") << engine->newArray();
- QTest::newRow("Date") << engine->newDate(12324);
+ QTest::newRow("Date") << engine->evaluate("new Date(12324)");
QTest::newRow("QObject") << engine->newQObject(this);
QTest::newRow("RegExp") << engine->newRegExp(QRegExp());
#endif
QCOMPARE(obj1.lessThan(obj1), false);
QCOMPARE(obj2.lessThan(obj2), false);
- QJSValue date1 = eng.newDate(QDateTime(QDate(2000, 1, 1)));
- QJSValue date2 = eng.newDate(QDateTime(QDate(1999, 1, 1)));
+ QJSValue date1 = eng.toScriptValue(QDateTime(QDate(2000, 1, 1)));
+ QJSValue date2 = eng.toScriptValue(QDateTime(QDate(1999, 1, 1)));
QCOMPARE(date1.lessThan(date2), false);
QCOMPARE(date2.lessThan(date1), true);
QCOMPARE(date1.lessThan(date1), false);
QCOMPARE(str2.equals(QJSValue(321)), false);
QCOMPARE(str2.equals(QJSValue()), false);
- QJSValue date1 = eng.newDate(QDateTime(QDate(2000, 1, 1)));
- QJSValue date2 = eng.newDate(QDateTime(QDate(1999, 1, 1)));
+ QJSValue date1 = eng.toScriptValue(QDateTime(QDate(2000, 1, 1)));
+ QJSValue date2 = eng.toScriptValue(QDateTime(QDate(1999, 1, 1)));
QCOMPARE(date1.equals(date2), false);
QCOMPARE(date1.equals(date1), true);
QCOMPARE(date2.equals(date2), true);
QCOMPARE(str2.strictlyEquals(QJSValue(321)), false);
QVERIFY(!str2.strictlyEquals(QJSValue()));
- QJSValue date1 = eng.newDate(QDateTime(QDate(2000, 1, 1)));
- QJSValue date2 = eng.newDate(QDateTime(QDate(1999, 1, 1)));
+ QJSValue date1 = eng.toScriptValue(QDateTime(QDate(2000, 1, 1)));
+ QJSValue date2 = eng.toScriptValue(QDateTime(QDate(1999, 1, 1)));
QCOMPARE(date1.strictlyEquals(date2), false);
QCOMPARE(date1.strictlyEquals(date1), true);
QCOMPARE(date2.strictlyEquals(date2), true);