summaryrefslogtreecommitdiffstats
path: root/src/android/jar/src/org/qtproject/qt/android/QtEmbeddedViewInterfaceFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/android/jar/src/org/qtproject/qt/android/QtEmbeddedViewInterfaceFactory.java')
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/QtEmbeddedViewInterfaceFactory.java34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/android/jar/src/org/qtproject/qt/android/QtEmbeddedViewInterfaceFactory.java b/src/android/jar/src/org/qtproject/qt/android/QtEmbeddedViewInterfaceFactory.java
new file mode 100644
index 0000000000..4ba337e19f
--- /dev/null
+++ b/src/android/jar/src/org/qtproject/qt/android/QtEmbeddedViewInterfaceFactory.java
@@ -0,0 +1,34 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+package org.qtproject.qt.android;
+
+import android.content.Context;
+import android.app.Activity;
+import android.app.Service;
+
+import java.util.HashMap;
+
+class QtEmbeddedViewInterfaceFactory {
+ private static final HashMap<Context, QtEmbeddedViewInterface> m_interfaces = new HashMap<>();
+ private static final Object m_interfaceLock = new Object();
+
+ static QtEmbeddedViewInterface create(Context context) {
+ synchronized (m_interfaceLock) {
+ if (!m_interfaces.containsKey(context)) {
+ if (context instanceof Activity)
+ m_interfaces.put(context, new QtEmbeddedDelegate((Activity)context));
+ else if (context instanceof Service)
+ m_interfaces.put(context, new QtServiceEmbeddedDelegate((Service)context));
+ }
+
+ return m_interfaces.get(context);
+ }
+ }
+
+ static void remove(Context context) {
+ synchronized (m_interfaceLock) {
+ m_interfaces.remove(context);
+ }
+ }
+}