aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/platform/android/qandroidquickviewembedding.cpp
diff options
context:
space:
mode:
authorSoheil Armin <soheil.armin@qt.io>2023-12-08 14:27:09 +0200
committerSoheil Armin <soheil.armin@qt.io>2024-02-20 11:34:25 +0200
commitd62b40c34ede1cbc4542e63b71b1b5197c661b15 (patch)
treebc0b10c9165cfb06f0d30c9c7a7fcda8984023bc /src/quick/platform/android/qandroidquickviewembedding.cpp
parent93d98e485a820a44194e6f6d8625310007259f62 (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.cpp20
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,