From 0cf9afd8ec5c7893fad373cc87df69a0088ee18d Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 28 May 2015 21:21:57 -0700 Subject: [PATCH] attempt to save _created as an iso date in utc --- interface/src/ui/ApplicationOverlay.cpp | 1 - .../entities/src/EntityItemProperties.cpp | 19 +++++++++++++++-- libraries/entities/src/EntityItemProperties.h | 2 ++ .../entities/src/EntityItemPropertiesMacros.h | 21 +++++++++++++------ 4 files changed, 34 insertions(+), 9 deletions(-) diff --git a/interface/src/ui/ApplicationOverlay.cpp b/interface/src/ui/ApplicationOverlay.cpp index 8a64630266..d9d2a1d971 100644 --- a/interface/src/ui/ApplicationOverlay.cpp +++ b/interface/src/ui/ApplicationOverlay.cpp @@ -507,7 +507,6 @@ QPoint ApplicationOverlay::getPalmClickLocation(const PalmData *palm) const { QPoint rv; auto canvasSize = qApp->getCanvasSize(); if (qApp->isHMDMode()) { - float t; glm::vec2 polar = getPolarCoordinates(*palm); glm::vec2 point = sphericalToScreen(-polar); rv.rx() = point.x; diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index d3f5b4d055..7457de3797 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -176,6 +176,14 @@ QString EntityItemProperties::getAnimationSettings() const { return jsonByteString; } + +void EntityItemProperties::setCreated(QDateTime v) { + QDateTime utcV = v; + // utcV.setTimeSpec(Qt::OffsetFromUTC); + _created = utcV.toMSecsSinceEpoch() * 1000; // usec per msec + qDebug() << "EntityItemProperties::setCreated QDateTime" << v << _created; +} + void EntityItemProperties::debugDump() const { qCDebug(entities) << "EntityItemProperties..."; qCDebug(entities) << " _type=" << EntityTypes::getEntityTypeName(_type); @@ -373,7 +381,10 @@ QScriptValue EntityItemProperties::copyToScriptValue(QScriptEngine* engine, bool COPY_PROPERTY_TO_QSCRIPTVALUE_GETTER_NO_SKIP(age, getAge()); // gettable, but not settable COPY_PROPERTY_TO_QSCRIPTVALUE_GETTER_NO_SKIP(ageAsText, formatSecondsElapsed(getAge())); // gettable, but not settable } - COPY_PROPERTY_TO_QSCRIPTVALUE_GETTER(created, getCreated()); + + auto created = QDateTime::fromMSecsSinceEpoch(getCreated() / 1000.0f, Qt::UTC); // usec per msec + created.setTimeSpec(Qt::OffsetFromUTC); + COPY_PROPERTY_TO_QSCRIPTVALUE_GETTER(created, created); COPY_PROPERTY_TO_QSCRIPTVALUE(script); COPY_PROPERTY_TO_QSCRIPTVALUE(registrationPoint); @@ -484,7 +495,11 @@ void EntityItemProperties::copyFromScriptValue(const QScriptValue& object) { COPY_PROPERTY_FROM_QSCRIPTVALUE(restitution, float, setRestitution); COPY_PROPERTY_FROM_QSCRIPTVALUE(friction, float, setFriction); COPY_PROPERTY_FROM_QSCRIPTVALUE(lifetime, float, setLifetime); - COPY_PROPERTY_FROM_QSCRIPTVALUE(created, float, setCreated); + COPY_PROPERTY_FROM_QSCRIPTVALUE_GETTER(created, QDateTime, setCreated, [this]() { + auto result = QDateTime::fromMSecsSinceEpoch(_created / 1000, Qt::UTC); // usec per msec + // result.setTimeSpec(Qt::OffsetFromUTC); + return result; + }); COPY_PROPERTY_FROM_QSCRIPTVALUE(script, QString, setScript); COPY_PROPERTY_FROM_QSCRIPTVALUE(registrationPoint, glmVec3, setRegistrationPoint); COPY_PROPERTY_FROM_QSCRIPTVALUE(angularVelocity, glmVec3, setAngularVelocity); diff --git a/libraries/entities/src/EntityItemProperties.h b/libraries/entities/src/EntityItemProperties.h index a0eab130c4..49fd206f93 100644 --- a/libraries/entities/src/EntityItemProperties.h +++ b/libraries/entities/src/EntityItemProperties.h @@ -194,6 +194,8 @@ public: void setVoxelDataDirty() { _voxelDataChanged = true; } + void setCreated(QDateTime v); + private: QUuid _id; bool _idSet; diff --git a/libraries/entities/src/EntityItemPropertiesMacros.h b/libraries/entities/src/EntityItemPropertiesMacros.h index 30d32446e7..66259ad25f 100644 --- a/libraries/entities/src/EntityItemPropertiesMacros.h +++ b/libraries/entities/src/EntityItemPropertiesMacros.h @@ -9,6 +9,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +#include + #ifndef hifi_EntityItemPropertiesMacros_h #define hifi_EntityItemPropertiesMacros_h @@ -96,11 +98,14 @@ inline QScriptValue convertScriptValue(QScriptEngine* e, const xColor& v) { retu inline QScriptValue convertScriptValue(QScriptEngine* e, const glm::quat& v) { return quatToScriptValue(e, v); } inline QScriptValue convertScriptValue(QScriptEngine* e, const QScriptValue& v) { return v; } -// QScriptValue doesn't support "long long" ints, so use strings -inline QScriptValue convertScriptValue(QScriptEngine* e, quint64 v) { - return QString::number(v); +inline QScriptValue convertScriptValue(QScriptEngine* e, QDateTime v) { + auto utcV = v; + utcV.setTimeSpec(Qt::OffsetFromUTC); + auto result = QScriptValue(utcV.toString(Qt::ISODate)); + return result; } + inline QScriptValue convertScriptValue(QScriptEngine* e, const QByteArray& v) { QByteArray b64 = v.toBase64(); return QScriptValue(QString(b64)); @@ -143,11 +148,15 @@ inline bool bool_convertFromScriptValue(const QScriptValue& v, bool& isValid) { inline QString QString_convertFromScriptValue(const QScriptValue& v, bool& isValid) { isValid = true; return v.toVariant().toString().trimmed(); } inline QUuid QUuid_convertFromScriptValue(const QScriptValue& v, bool& isValid) { isValid = true; return v.toVariant().toUuid(); } -// QScriptValue doesn't support "long long" ints, so use strings -inline uint64_t uint64_t_convertFromScriptValue(const QScriptValue& v, bool& isValid) { - return (uint64_t) v.toVariant().toString().trimmed().toLongLong(); +inline QDateTime QDateTime_convertFromScriptValue(const QScriptValue& v, bool& isValid) { + isValid = true; + auto result = QDateTime::fromString(v.toVariant().toString().trimmed(), Qt::ISODate); + // result.setTimeSpec(Qt::OffsetFromUTC); + return result; } + + inline QByteArray QByteArray_convertFromScriptValue(const QScriptValue& v, bool& isValid) { isValid = true; QString b64 = v.toVariant().toString().trimmed();