diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2020-01-25 01:00:10 +0100 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2020-01-25 01:00:11 +0100 |
commit | 9893e71cea5de10193376c1733db627ef0783614 (patch) | |
tree | 391fabceb9d4ff6ba5f3ff2c2ec42acb613eb4ef /src/qml/qml/v8 | |
parent | 87e7203532d69e0aaa0898a972d1d90fa589d519 (diff) | |
parent | e1b4b267aa8c4d9c53e5af4def54f5e9e14e0103 (diff) |
Merge remote-tracking branch 'origin/5.15' into dev
Change-Id: Icb61522fb41a35303bb3d201b344a0407f67f9a0
Diffstat (limited to 'src/qml/qml/v8')
-rw-r--r-- | src/qml/qml/v8/qqmlbuiltinfunctions.cpp | 43 | ||||
-rw-r--r-- | src/qml/qml/v8/qqmlbuiltinfunctions_p.h | 2 |
2 files changed, 45 insertions, 0 deletions
diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp index 2d3c03cedb..02032142ee 100644 --- a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp +++ b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp @@ -1332,6 +1332,41 @@ ReturnedValue QtObject::method_createComponent(const FunctionObject *b, const Va return QV4::QObjectWrapper::wrap(scope.engine, c); } +ReturnedValue QtObject::method_get_uiLanguage(const FunctionObject *b, const Value * /*thisObject*/, const Value * /*argv*/, int /*argc*/) +{ + QV4::Scope scope(b); + QJSEngine *jsEngine = scope.engine->jsEngine(); + if (!jsEngine) + return Encode::null(); + + QQmlEnginePrivate *ep = QQmlEnginePrivate::get(scope.engine); + if (ep && ep->propertyCapture) { + static int propertyIndex = -1; + static int notifySignalIndex = -1; + if (propertyIndex < 0) { + QMetaProperty metaProperty = + QQmlEngine::staticMetaObject.property(QQmlEngine::staticMetaObject.indexOfProperty("uiLanguage")); + propertyIndex = metaProperty.propertyIndex(); + notifySignalIndex = metaProperty.notifySignalIndex(); + } + ep->propertyCapture->captureProperty(QQmlEnginePrivate::get(ep), propertyIndex, notifySignalIndex); + } + + return Encode(scope.engine->newString(QJSEnginePrivate::get(jsEngine)->uiLanguage)); +} + +ReturnedValue QtObject::method_set_uiLanguage(const FunctionObject *b, const Value * /*thisObject*/, const Value *argv, int argc) +{ + Scope scope(b); + if (!argc) + THROW_TYPE_ERROR(); + QJSEngine *jsEngine = scope.engine->jsEngine(); + if (!jsEngine) + THROW_TYPE_ERROR(); + jsEngine->setUiLanguage(argv[0].toQString()); + return Encode::undefined(); +} + #if QT_CONFIG(qml_locale) /*! \qmlmethod Qt::locale(name) @@ -1829,6 +1864,14 @@ void QV4::GlobalExtensions::init(Object *globalObject, QJSEngine::Extensions ext globalObject->defineDefaultProperty(QStringLiteral("qsTrId"), QV4::GlobalExtensions::method_qsTrId); globalObject->defineDefaultProperty(QStringLiteral("QT_TRID_NOOP"), QV4::GlobalExtensions::method_qsTrIdNoOp); + ScopedString qtName(scope, v4->newString(QStringLiteral("Qt"))); + ScopedObject qt(scope, globalObject->get(qtName)); + if (!qt) { + qt = v4->newObject(); + globalObject->defineDefaultProperty(qtName, qt); + } + qt->defineAccessorProperty(QStringLiteral("uiLanguage"), QV4::QtObject::method_get_uiLanguage, QV4::QtObject::method_set_uiLanguage); + // string prototype extension scope.engine->stringPrototype()->defineDefaultProperty(QStringLiteral("arg"), QV4::GlobalExtensions::method_string_arg); #endif diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions_p.h b/src/qml/qml/v8/qqmlbuiltinfunctions_p.h index d87b83ba10..5cbb52471d 100644 --- a/src/qml/qml/v8/qqmlbuiltinfunctions_p.h +++ b/src/qml/qml/v8/qqmlbuiltinfunctions_p.h @@ -126,6 +126,8 @@ struct QtObject : Object static ReturnedValue method_resolvedUrl(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc); static ReturnedValue method_createQmlObject(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc); static ReturnedValue method_createComponent(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc); + static ReturnedValue method_get_uiLanguage(const FunctionObject *b, const Value *, const Value *, int); + static ReturnedValue method_set_uiLanguage(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc); #if QT_CONFIG(qml_locale) static ReturnedValue method_locale(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc); #endif |