diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2023-05-16 13:34:52 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2023-05-17 08:11:47 +0000 |
commit | ad0825d42c1ddfe24ac7489fb324ec0635b45d85 (patch) | |
tree | 29207e3af9c9cec6f8c67681e0ee56b77b1fe9b0 /src/lib/corelib/tools/scripttools.cpp | |
parent | 5c1973d4b74e0823b4f4fedc896ac342520ae852 (diff) | |
download | qbs-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.cpp | 12 |
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 {}; |