diff options
| author | Soheil Armin <soheil.armin@qt.io> | 2023-12-08 14:27:09 +0200 |
|---|---|---|
| committer | Soheil Armin <soheil.armin@qt.io> | 2024-02-20 11:34:25 +0200 |
| commit | d62b40c34ede1cbc4542e63b71b1b5197c661b15 (patch) | |
| tree | bc0b10c9165cfb06f0d30c9c7a7fcda8984023bc /src/quick/platform/android/qandroidquickviewembedding.cpp | |
| parent | 93d98e485a820a44194e6f6d8625310007259f62 (diff) | |
Android: Add user-defined QML import paths to QtQuickView
Add a way to pass a list of QML import paths to createQuickView
so that it can add additional user-define QML import paths to
the QQmlEngine of the QQuickView.
Pick-to: 6.7
Change-Id: I49d5c2ee7fde86def54754d31e718d79975bcc2e
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Diffstat (limited to 'src/quick/platform/android/qandroidquickviewembedding.cpp')
| -rw-r--r-- | src/quick/platform/android/qandroidquickviewembedding.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/quick/platform/android/qandroidquickviewembedding.cpp b/src/quick/platform/android/qandroidquickviewembedding.cpp index 70f8cba4d6..ed7829f1f3 100644 --- a/src/quick/platform/android/qandroidquickviewembedding.cpp +++ b/src/quick/platform/android/qandroidquickviewembedding.cpp @@ -5,6 +5,7 @@ #include <QtCore/qjnienvironment.h> #include <QtCore/qjniobject.h> +#include <QtCore/qjniarray.h> #include <QtCore/qjnitypes.h> #include <QtQuick/qquickitem.h> @@ -26,23 +27,36 @@ Q_DECLARE_JNI_CLASS(Class, "java/lang/Class"); namespace QtAndroidQuickViewEmbedding { void createQuickView(JNIEnv*, jobject nativeWindow, jstring qmlUri, jint width, jint height, - jlong parentWindowReference) + jlong parentWindowReference, QtJniTypes::StringArray qmlImportPaths) { static_assert (sizeof(jlong) >= sizeof(void*), "Insufficient size of Java type to hold the c++ pointer"); const QUrl qmlUrl(QJniObject(qmlUri).toString()); + + QStringList importPaths; + if (qmlImportPaths.isValid()) { + QJniArray<QtJniTypes::String> importPathsArray(qmlImportPaths); + importPaths.reserve(importPathsArray.size()); + for (int i = 0; i < importPathsArray.size(); ++i) + importPaths << importPathsArray.at(i).toString(); + } + QMetaObject::invokeMethod(qApp, [qtViewObject = QJniObject(nativeWindow), parentWindowReference, width, height, - qmlUrl] { + qmlUrl, + importPaths] { QWindow *parentWindow = reinterpret_cast<QWindow *>(parentWindowReference); - QQuickView* view = new QQuickView(parentWindow); + QQuickView *view = new QQuickView(parentWindow); + QQmlEngine *engine = view->engine(); new SignalHelper(view); view->setSource(qmlUrl); view->setColor(QColor(Qt::transparent)); view->setWidth(width); view->setHeight(height); + for (const QString &path : importPaths) + engine->addImportPath(path); const QtJniTypes::QtWindow window = reinterpret_cast<jobject>(view->winId()); qtViewObject.callMethod<void>("addQtWindow", window, |
