Get rid of QV8Engine::qtDateTimeFromJsDate
authorSimon Hausmann <simon.hausmann@digia.com>
Tue, 7 May 2013 11:17:08 +0000 (13:17 +0200)
committerLars Knoll <lars.knoll@digia.com>
Tue, 7 May 2013 11:43:07 +0000 (13:43 +0200)
Change-Id: I6a748ace761661ffe40e8fa73839f974e8a0afac
QV4::DateObject has a very convenient toQDateTime() function :)
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
src/qml/qml/qqmllocale.cpp
src/qml/qml/v8/qv8engine.cpp
src/qml/qml/v8/qv8engine_p.h
src/qml/types/qqmllistmodel.cpp

index 3dc7f69..c71973f 100644 (file)
@@ -176,7 +176,7 @@ QV4::Value QQmlDateExtension::toLocaleString(const v8::Arguments& args)
     if (!args.This()->IsDate())
         return QV4::Value::undefinedValue();
 
-    QDateTime dt = QV8Engine::qtDateTimeFromJsDate(v8::Handle<v8::Date>::Cast(args.This())->NumberValue());
+    QDateTime dt = args.This()->v4Value().asDateObject()->toQDateTime();
 
     if (args.Length() == 0) {
         // Use QLocale for standard toLocaleString() function
@@ -217,7 +217,7 @@ QV4::Value QQmlDateExtension::toLocaleTimeString(const v8::Arguments& args)
     if (!args.This()->IsDate())
         return QV4::Value::undefinedValue();
 
-    QDateTime dt = QV8Engine::qtDateTimeFromJsDate(v8::Handle<v8::Date>::Cast(args.This())->NumberValue());
+    QDateTime dt = args.This()->v4Value().asDateObject()->toQDateTime();;
     QTime time = dt.time();
 
     if (args.Length() == 0) {
@@ -259,7 +259,7 @@ QV4::Value QQmlDateExtension::toLocaleDateString(const v8::Arguments& args)
     if (!args.This()->IsDate())
         return QV4::Value::undefinedValue();
 
-    QDateTime dt = QV8Engine::qtDateTimeFromJsDate(v8::Handle<v8::Date>::Cast(args.This())->NumberValue());
+    QDateTime dt = args.This()->v4Value().asDateObject()->toQDateTime();;
     QDate date = dt.date();
 
     if (args.Length() == 0) {
index 6dc3ac7..bf361a3 100644 (file)
@@ -508,7 +508,7 @@ QVariant QV8Engine::toBasicVariant(const QV4::Value &value)
     if (value.isString())
         return value.stringValue()->toQString();
     if (QV4::DateObject *d = value.asDateObject())
-        return qtDateTimeFromJsDate(d->value.doubleValue());
+        return d->toQDateTime();
     // NOTE: since we convert QTime to JS Date, round trip will change the variant type (to QDateTime)!
 
     Q_ASSERT(value.isObject());
@@ -763,14 +763,6 @@ void QV8Engine::setExtensionData(int index, Deletable *data)
     m_extensionData[index] = data;
 }
 
-QDateTime QV8Engine::qtDateTimeFromJsDate(double jsDate)
-{
-    if (qIsNaN(jsDate))
-        return QDateTime();
-
-    return QDateTime::fromMSecsSinceEpoch(jsDate);
-}
-
 v8::Persistent<v8::Object> *QV8Engine::findOwnerAndStrength(QObject *object, bool *shouldBeStrong)
 {
     QQmlData *data = QQmlData::get(object);
index db8984c..7d3bd21 100644 (file)
@@ -408,8 +408,6 @@ public:
 
     QObject *qtObjectFromJS(const QV4::Value &value);
 
-    static QDateTime qtDateTimeFromJsDate(double jsDate);
-
     void addRelationshipForGC(QObject *object, v8::Persistent<v8::Value> handle);
     void addRelationshipForGC(QObject *object, QObject *other);
 
index 8a5dd1f..eb52179 100644 (file)
@@ -51,6 +51,7 @@
 #include <private/qqmlengine_p.h>
 
 #include <private/qv4object_p.h>
+#include <private/qv4dateobject_p.h>
 
 #include <qqmlcontext.h>
 #include <qqmlinfo.h>
@@ -453,7 +454,7 @@ void ListModel::set(int elementIndex, v8::Handle<v8::Object> object, QVector<int
             roleIndex = e->setBoolProperty(r, propertyValue->BooleanValue());
         } else if (propertyValue->IsDate()) {
             const ListLayout::Role &r = m_layout->getRoleOrCreate(propertyName, ListLayout::Role::DateTime);
-            QDateTime dt = QV8Engine::qtDateTimeFromJsDate(v8::Handle<v8::Date>::Cast(propertyValue)->NumberValue());
+            QDateTime dt = propertyValue->v4Value().asDateObject()->toQDateTime();
             roleIndex = e->setDateTimeProperty(r, dt);
         } else if (propertyValue->IsObject()) {
             QV8ObjectResource *r = (QV8ObjectResource *) propertyValue->ToObject()->GetExternalResource();
@@ -530,7 +531,7 @@ void ListModel::set(int elementIndex, v8::Handle<v8::Object> object, QV8Engine *
         } else if (propertyValue->IsDate()) {
             const ListLayout::Role &r = m_layout->getRoleOrCreate(propertyName, ListLayout::Role::DateTime);
             if (r.type == ListLayout::Role::DateTime) {
-                QDateTime dt = QV8Engine::qtDateTimeFromJsDate(v8::Handle<v8::Date>::Cast(propertyValue)->NumberValue());
+                QDateTime dt = propertyValue->v4Value().asDateObject()->toQDateTime();;
                 e->setDateTimePropertyFast(r, dt);
             }
         } else if (propertyValue->IsObject()) {
@@ -1194,7 +1195,7 @@ int ListElement::setJsProperty(const ListLayout::Role &role, v8::Handle<v8::Valu
     } else if (d->IsBoolean()) {
         roleIndex = setBoolProperty(role, d->BooleanValue());
     } else if (d->IsDate()) {
-        QDateTime dt = QV8Engine::qtDateTimeFromJsDate(v8::Handle<v8::Date>::Cast(d)->NumberValue());
+        QDateTime dt = d->v4Value().asDateObject()->toQDateTime();;
         roleIndex = setDateTimeProperty(role, dt);
     } else if (d->IsObject()) {
         QV8ObjectResource *r = (QV8ObjectResource *) d->ToObject()->GetExternalResource();