summaryrefslogtreecommitdiff
path: root/src/lib/corelib/tools/scripttools.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2023-05-16 13:34:52 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2023-05-17 08:11:47 +0000
commitad0825d42c1ddfe24ac7489fb324ec0635b45d85 (patch)
tree29207e3af9c9cec6f8c67681e0ee56b77b1fe9b0 /src/lib/corelib/tools/scripttools.cpp
parent5c1973d4b74e0823b4f4fedc896ac342520ae852 (diff)
downloadqbs-ad0825d42c1ddfe24ac7489fb324ec0635b45d85.tar.gz
Support Date properties
Fixes: QBS-1735 Change-Id: Ide0800d397c5c45c9b4129b732bd27d0d374b7b2 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
Diffstat (limited to 'src/lib/corelib/tools/scripttools.cpp')
-rw-r--r--src/lib/corelib/tools/scripttools.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/lib/corelib/tools/scripttools.cpp b/src/lib/corelib/tools/scripttools.cpp
index 4953bbbb5..a9fa1955d 100644
--- a/src/lib/corelib/tools/scripttools.cpp
+++ b/src/lib/corelib/tools/scripttools.cpp
@@ -43,6 +43,7 @@
#include <tools/error.h>
#include <QtCore/qdatastream.h>
+#include <QtCore/qdatetime.h>
namespace qbs {
namespace Internal {
@@ -235,6 +236,8 @@ JSValue makeJsVariant(JSContext *ctx, const QVariant &v)
return JS_NewInt64(ctx, v.toInt());
case QMetaType::Bool:
return JS_NewBool(ctx, v.toBool());
+ case QMetaType::QDateTime:
+ return JS_NewDate(ctx, v.toDateTime().toString(Qt::ISODateWithMs).toUtf8().constData());
case QMetaType::QVariantMap:
return makeJsVariantMap(ctx, v.toMap());
default:
@@ -277,6 +280,15 @@ static QVariant getJsVariantImpl(JSContext *ctx, JSValue val, QList<JSValue> pat
}
return l;
}
+ if (JS_IsDate(val)) {
+ ScopedJsValue toString(ctx, getJsProperty(ctx, val, QLatin1String("toISOString")));
+ if (!JS_IsFunction(ctx, toString))
+ return {};
+ ScopedJsValue dateString(ctx, JS_Call(ctx, toString, val, 0, nullptr));
+ if (!JS_IsString(dateString))
+ return {};
+ return QDateTime::fromString(getJsString(ctx, dateString), Qt::ISODateWithMs);
+ }
if (JS_IsObject(val)) {
if (path.contains(val))
return {};