4package org.qtproject.qt.android;
6import android.util.Log;
7import java.lang.ref.WeakReference;
8import java.util.HashMap;
9import java.util.HashSet;
10import java.util.concurrent.atomic.AtomicInteger;
22 private final static String TAG =
"QtQuickViewContent";
23 private static AtomicInteger m_nextSignalId =
new AtomicInteger();
25 private WeakReference<QtQuickView> m_viewReference;
27 private HashSet<Integer> m_signalListenerIds =
new HashSet<>();
28 private QtSignalQueue m_signalQueue =
new QtSignalQueue();
50 m_statusChangeListener = listener;
53 view.setStatusChangeListener(listener);
64 if (m_viewReference !=
null)
65 return m_viewReference.get();
81 m_viewReference =
new WeakReference<>(
view);
83 view.setStatusChangeListener(m_statusChangeListener);
84 m_signalQueue.connectQueuedSignalListeners(
view);
96 for (
int signalListenerId : m_signalListenerIds)
97 view.disconnectSignalListener(signalListenerId);
99 view.setStatusChangeListener(
null);
100 m_viewReference.clear();
101 if (m_statusChangeListener !=
null)
110 protected HashMap<String, Object>
attributes() {
return new HashMap<>(); }
132 Log.w(TAG,
"Cannot set property as the QQmlComponent is not loaded in a QtQuickView.");
154 protected <T> T getProperty(
String propertyName)
158 Log.w(
TAG,
"Cannot get property as the QQmlComponent is not loaded in a QtQuickView.");
161 return view.<T>getProperty(propertyName);
182 QtSignalListener<T> listener)
209 if (!
view.connectSignalListener(
signalName, argTypes, listener,
id))
211 m_signalListenerIds.add(
id);
213 m_signalQueue.add(
signalName, argTypes, listener,
id);
232 m_signalListenerIds.remove(signalListenerId);
233 return view.disconnectSignalListener(signalListenerId);
235 return m_signalQueue.remove(signalListenerId);
239 static int generateSignalId()
241 return m_nextSignalId.getAndIncrement();
269 "Cannot call method " +
name +
270 " as the QQmlComponent is not loaded in a QtQuickView.");
288 "Cannot call method " +
name +
289 " as the QQmlComponent is not loaded in a QtQuickView.");
abstract String getLibraryName()
int connectSignalListener(String signalName, Class<?>[] argTypes, Object listener)
HashMap< String, Object > attributes()
void setStatusChangeListener(QtQmlStatusChangeListener listener)
abstract String getModuleName()
boolean disconnectSignalListener(int signalListenerId)
void invokeMethod(String name, Object[] params)
QtQuickView getQuickView()
void setProperty(String propertyName, Object value)
abstract String getFilePath()
void attachView(QtQuickView view)
void invokeMethod(String name)
[vector_of_multirole_objects_0]
EGLOutputLayerEXT EGLint EGLAttrib value
[3]
static const char * signalName(int signum) noexcept
EGLImageKHR EGLint * name