diff options
13 files changed, 82 insertions, 14 deletions
diff --git a/src/android/jar/CMakeLists.txt b/src/android/jar/CMakeLists.txt index f600598c4d..7bef9679c2 100644 --- a/src/android/jar/CMakeLists.txt +++ b/src/android/jar/CMakeLists.txt @@ -23,12 +23,13 @@ set(java_sources src/org/qtproject/qt/android/QtNative.java src/org/qtproject/qt/android/QtSurface.java src/org/qtproject/qt/android/QtThread.java - src/org/qtproject/qt/android/extras//QtAndroidBinder.java + src/org/qtproject/qt/android/extras/QtAndroidBinder.java src/org/qtproject/qt/android/extras/QtAndroidServiceConnection.java src/org/qtproject/qt/android/extras/QtNative.java src/org/qtproject/qt/android/QtConstants.java src/org/qtproject/qt/android/QtClipboardManager.java src/org/qtproject/qt/android/QtDisplayManager.java + src/org/qtproject/qt/android/UsedFromNativeCode.java ) qt_internal_add_jar(Qt${QtBase_VERSION_MAJOR}Android diff --git a/src/android/jar/src/org/qtproject/qt/android/ExtractStyle.java b/src/android/jar/src/org/qtproject/qt/android/ExtractStyle.java index e4bc395d3a..e2f0a3fe61 100644 --- a/src/android/jar/src/org/qtproject/qt/android/ExtractStyle.java +++ b/src/android/jar/src/org/qtproject/qt/android/ExtractStyle.java @@ -1129,10 +1129,6 @@ public class ExtractStyle { return json; } - public JSONObject extractTextAppearanceInformation(int styleName, String qtClass, AttributeSet attributeSet) { - return extractTextAppearanceInformation(styleName, qtClass, android.R.attr.textAppearance, attributeSet); - } - public JSONObject extractTextAppearanceInformation(int styleName, String qtClass) { return extractTextAppearanceInformation(styleName, qtClass, android.R.attr.textAppearance, null); } diff --git a/src/android/jar/src/org/qtproject/qt/android/QtActivityBase.java b/src/android/jar/src/org/qtproject/qt/android/QtActivityBase.java index 45ed09a88a..1d70698ef7 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtActivityBase.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtActivityBase.java @@ -298,11 +298,13 @@ public class QtActivityBase extends Activity QtNative.sendRequestPermissionsResult(requestCode, permissions, grantResults); } + @UsedFromNativeCode public void hideSplashScreen(final int duration) { m_delegate.hideSplashScreen(duration); } + @UsedFromNativeCode QtActivityDelegate getActivityDelegate() { return m_delegate; diff --git a/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java b/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java index b57576fa46..a4c776b4b3 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java @@ -85,15 +85,18 @@ public class QtActivityDelegate return m_displayManager; } + @UsedFromNativeCode QtInputDelegate getInputDelegate() { return m_inputDelegate; } + @UsedFromNativeCode QtLayout getQtLayout() { return m_layout; } + @UsedFromNativeCode public void setSystemUiVisibility(int systemUiVisibility) { QtNative.runAction(new Runnable() { @@ -163,11 +166,6 @@ public class QtActivityDelegate } } - public void onTerminate() { - QtNative.terminateQt(); - QtNative.m_qtThread.exit(); - } - public void startNativeApplication(ArrayList<String> appParams, String mainLib) { if (m_surfaces != null) @@ -307,6 +305,7 @@ public class QtActivityDelegate }); } + @UsedFromNativeCode public void notifyLocationChange(int viewId) { if (m_accessibilityDelegate == null) @@ -314,6 +313,7 @@ public class QtActivityDelegate m_accessibilityDelegate.notifyLocationChange(viewId); } + @UsedFromNativeCode public void notifyObjectHide(int viewId, int parentId) { if (m_accessibilityDelegate == null) @@ -321,6 +321,7 @@ public class QtActivityDelegate m_accessibilityDelegate.notifyObjectHide(viewId, parentId); } + @UsedFromNativeCode public void notifyObjectFocus(int viewId) { if (m_accessibilityDelegate == null) @@ -328,6 +329,7 @@ public class QtActivityDelegate m_accessibilityDelegate.notifyObjectFocus(viewId); } + @UsedFromNativeCode public void notifyValueChanged(int viewId, String value) { if (m_accessibilityDelegate == null) @@ -335,6 +337,7 @@ public class QtActivityDelegate m_accessibilityDelegate.notifyValueChanged(viewId, value); } + @UsedFromNativeCode public void notifyScrolledEvent(int viewId) { if (m_accessibilityDelegate == null) @@ -342,11 +345,13 @@ public class QtActivityDelegate m_accessibilityDelegate.notifyScrolledEvent(viewId); } + @UsedFromNativeCode public void notifyQtAndroidPluginRunning(boolean running) { m_isPluginRunning = running; } + @UsedFromNativeCode public void initializeAccessibility() { final QtActivityDelegate currentDelegate = this; @@ -386,6 +391,7 @@ public class QtActivityDelegate } } + @UsedFromNativeCode public void resetOptionsMenu() { QtNative.runAction(new Runnable() { @@ -396,6 +402,7 @@ public class QtActivityDelegate }); } + @UsedFromNativeCode public void openOptionsMenu() { QtNative.runAction(new Runnable() { @@ -414,6 +421,7 @@ public class QtActivityDelegate m_contextMenuVisible = true; } + @UsedFromNativeCode public void openContextMenu(final int x, final int y, final int w, final int h) { m_layout.postDelayed(new Runnable() { @@ -439,6 +447,7 @@ public class QtActivityDelegate }, 100); } + @UsedFromNativeCode public void closeContextMenu() { QtNative.runAction(new Runnable() { @@ -459,6 +468,7 @@ public class QtActivityDelegate m_activity.getActionBar().show(); } + @UsedFromNativeCode public void insertNativeView(int id, View view, int x, int y, int w, int h) { QtNative.runAction(new Runnable() { @Override @@ -485,6 +495,7 @@ public class QtActivityDelegate }); } + @UsedFromNativeCode public void createSurface(int id, boolean onTop, int x, int y, int w, int h, int imageDepth) { QtNative.runAction(new Runnable() { @Override @@ -526,6 +537,7 @@ public class QtActivityDelegate }); } + @UsedFromNativeCode public void setSurfaceGeometry(int id, int x, int y, int w, int h) { QtNative.runAction(new Runnable() { @Override @@ -544,6 +556,7 @@ public class QtActivityDelegate }); } + @UsedFromNativeCode public void destroySurface(int id) { QtNative.runAction(new Runnable() { @Override @@ -577,6 +590,7 @@ public class QtActivityDelegate return m_surfaces.size(); } + @UsedFromNativeCode public void bringChildToFront(int id) { QtNative.runAction(new Runnable() { @@ -597,6 +611,7 @@ public class QtActivityDelegate }); } + @UsedFromNativeCode public void bringChildToBack(int id) { QtNative.runAction(new Runnable() { diff --git a/src/android/jar/src/org/qtproject/qt/android/QtClipboardManager.java b/src/android/jar/src/org/qtproject/qt/android/QtClipboardManager.java index 1737a6134a..1a6b74ddc4 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtClipboardManager.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtClipboardManager.java @@ -59,6 +59,7 @@ public class QtClipboardManager } } + @UsedFromNativeCode public void clearClipData() { if (m_clipboardManager != null) { @@ -72,6 +73,8 @@ public class QtClipboardManager } m_usePrimaryClip = false; } + + @UsedFromNativeCode public void setClipboardText(Context context, String text) { if (m_clipboardManager != null) { @@ -101,11 +104,13 @@ public class QtClipboardManager return false; } + @UsedFromNativeCode public boolean hasClipboardText() { return hasClipboardMimeType("text/(.*)"); } + @UsedFromNativeCode public String getClipboardText() { try { @@ -144,6 +149,7 @@ public class QtClipboardManager } } + @UsedFromNativeCode public void setClipboardHtml(Context context, String text, String html) { if (m_clipboardManager != null) { @@ -170,11 +176,13 @@ public class QtClipboardManager return false; } + @UsedFromNativeCode public boolean hasClipboardHtml() { return hasClipboardMimeType("text/html"); } + @UsedFromNativeCode public String getClipboardHtml() { try { @@ -192,6 +200,7 @@ public class QtClipboardManager return ""; } + @UsedFromNativeCode public void setClipboardUri(Context context, String uriString) { if (m_clipboardManager != null) { @@ -201,11 +210,13 @@ public class QtClipboardManager } } + @UsedFromNativeCode public boolean hasClipboardUri() { return hasClipboardMimeType("text/uri-list"); } + @UsedFromNativeCode private String[] getClipboardUris() { ArrayList<String> uris = new ArrayList<>(); diff --git a/src/android/jar/src/org/qtproject/qt/android/QtDisplayManager.java b/src/android/jar/src/org/qtproject/qt/android/QtDisplayManager.java index 2bbe28a331..cbbb2a1256 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtDisplayManager.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtDisplayManager.java @@ -172,6 +172,7 @@ public class QtDisplayManager { } } + @UsedFromNativeCode public static Display getDisplay(Context context, int displayId) { DisplayManager displayManager = @@ -182,6 +183,7 @@ public class QtDisplayManager { return null; } + @UsedFromNativeCode public static List<Display> getAvailableDisplays(Context context) { DisplayManager displayManager = @@ -193,6 +195,7 @@ public class QtDisplayManager { return new ArrayList<>(); } + @UsedFromNativeCode public static Size getDisplaySize(Context displayContext, Display display) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { diff --git a/src/android/jar/src/org/qtproject/qt/android/QtInputDelegate.java b/src/android/jar/src/org/qtproject/qt/android/QtInputDelegate.java index ee53dcd9ac..97decb5826 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtInputDelegate.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtInputDelegate.java @@ -139,6 +139,7 @@ public class QtInputDelegate { } // Is the keyboard fully visible i.e. visible and no ongoing animation + @UsedFromNativeCode public boolean isSoftwareKeyboardVisible() { return isKeyboardVisible() && !m_isKeyboardHidingAnimationOngoing; @@ -182,6 +183,7 @@ public class QtInputDelegate { } + @UsedFromNativeCode public void resetSoftwareKeyboard() { if (m_imm == null) @@ -452,6 +454,7 @@ public class QtInputDelegate { }); } + @UsedFromNativeCode public void updateSelection(final int selStart, final int selEnd, final int candidatesStart, final int candidatesEnd) { @@ -466,6 +469,7 @@ public class QtInputDelegate { }); } + @UsedFromNativeCode public int getSelectHandleWidth() { int width = 0; @@ -481,6 +485,7 @@ public class QtInputDelegate { be adjusted. mode is one of QAndroidInputContext::CursorHandleShowMode */ + @UsedFromNativeCode public void updateHandles(Activity activity, QtLayout layout, int mode, int editX, int editY, int editButtons, int x1, int y1, int x2, int y2, boolean rtl) diff --git a/src/android/jar/src/org/qtproject/qt/android/QtMessageDialogHelper.java b/src/android/jar/src/org/qtproject/qt/android/QtMessageDialogHelper.java index b53ec13369..bb077bc9d2 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtMessageDialogHelper.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtMessageDialogHelper.java @@ -55,7 +55,7 @@ public class QtMessageDialogHelper m_activity = activity; } - + @UsedFromNativeCode public void setStandardIcon(int icon) { m_standardIcon = icon; @@ -114,26 +114,31 @@ public class QtMessageDialogHelper return null; } + @UsedFromNativeCode public void setTile(String title) { m_title = Html.fromHtml(title); } + @UsedFromNativeCode public void setText(String text) { m_text = Html.fromHtml(text); } + @UsedFromNativeCode public void setInformativeText(String informativeText) { m_informativeText = Html.fromHtml(informativeText); } + @UsedFromNativeCode public void setDetailedText(String text) { m_detailedText = Html.fromHtml(text); } + @UsedFromNativeCode public void addButton(int id, String text) { if (m_buttonsList == null) @@ -150,7 +155,7 @@ public class QtMessageDialogHelper return d; } - + @UsedFromNativeCode public void show(long handler) { m_handler = handler; @@ -314,6 +319,7 @@ public class QtMessageDialogHelper }); } + @UsedFromNativeCode public void hide() { m_activity.runOnUiThread( new Runnable() { diff --git a/src/android/jar/src/org/qtproject/qt/android/QtNative.java b/src/android/jar/src/org/qtproject/qt/android/QtNative.java index ab2042dc05..6cec72376a 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtNative.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtNative.java @@ -59,6 +59,7 @@ public class QtNative return m_started && (hasActivity || hasService); } + @UsedFromNativeCode public static ClassLoader classLoader() { return m_classLoader; @@ -83,6 +84,7 @@ public class QtNative } } + @UsedFromNativeCode public static Activity activity() { synchronized (m_mainActivityMutex) { @@ -90,6 +92,7 @@ public class QtNative } } + @UsedFromNativeCode public static Service service() { synchronized (m_mainActivityMutex) { @@ -97,12 +100,14 @@ public class QtNative } } + @UsedFromNativeCode public static Context getContext() { if (m_activity != null) return m_activity; return m_service; } + @UsedFromNativeCode public static String[] getStringArray(String joinedString) { return joinedString.split(","); @@ -154,6 +159,7 @@ public class QtNative } } + @UsedFromNativeCode public static boolean openURL(Context context, String url, String mime) { final Uri uri = getUriWithValidPermission(context, url, "r"); @@ -207,6 +213,7 @@ public class QtNative } } + @UsedFromNativeCode private static void runPendingCppRunnablesOnAndroidThread() { synchronized (m_mainActivityMutex) { @@ -228,6 +235,7 @@ public class QtNative } } + @UsedFromNativeCode private static void setViewVisibility(final View view, final boolean visible) { runAction(new Runnable() { @@ -278,6 +286,7 @@ public class QtNative }); } + @UsedFromNativeCode public static int checkSelfPermission(String permission) { synchronized (m_mainActivityMutex) { @@ -287,6 +296,7 @@ public class QtNative } } + @UsedFromNativeCode private static byte[][] getSSLCertificates() { ArrayList<byte[]> certificateList = new ArrayList<>(); @@ -314,6 +324,7 @@ public class QtNative return certificateArray; } + @UsedFromNativeCode private static String[] listAssetContent(android.content.res.AssetManager asset, String path) { String [] list; ArrayList<String> res = new ArrayList<>(); diff --git a/src/android/jar/src/org/qtproject/qt/android/UsedFromNativeCode.java b/src/android/jar/src/org/qtproject/qt/android/UsedFromNativeCode.java new file mode 100644 index 0000000000..e0223c083f --- /dev/null +++ b/src/android/jar/src/org/qtproject/qt/android/UsedFromNativeCode.java @@ -0,0 +1,10 @@ +// Copyright (C) 2023 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 java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Retention(RetentionPolicy.CLASS) +public @interface UsedFromNativeCode { } diff --git a/src/android/jar/src/org/qtproject/qt/android/accessibility/QtAccessibilityDelegate.java b/src/android/jar/src/org/qtproject/qt/android/accessibility/QtAccessibilityDelegate.java index 4043746db6..dfabdadc63 100644 --- a/src/android/jar/src/org/qtproject/qt/android/accessibility/QtAccessibilityDelegate.java +++ b/src/android/jar/src/org/qtproject/qt/android/accessibility/QtAccessibilityDelegate.java @@ -324,6 +324,8 @@ public class QtAccessibilityDelegate extends View.AccessibilityDelegate return event; } + // This can be used for debug by performActionForVirtualViewId() + /** @noinspection unused*/ private void dumpNodes(int parentId) { Log.i(TAG, "A11Y hierarchy: " + parentId + " parent: " + QtNativeAccessibility.parentId(parentId)); @@ -369,8 +371,8 @@ public class QtAccessibilityDelegate extends View.AccessibilityDelegate result.setPackageName(source.getPackageName()); result.setClassName(source.getClassName()); -// Spit out the entire hierarchy for debugging purposes -// dumpNodes(-1); + // Spit out the entire hierarchy for debugging purposes + // dumpNodes(-1); if (m_activityDelegate.getSurfaceCount() != 0) { int[] ids = QtNativeAccessibility.childIdListForAccessibleObject(-1); diff --git a/src/android/jar/src/org/qtproject/qt/android/extras/QtAndroidBinder.java b/src/android/jar/src/org/qtproject/qt/android/extras/QtAndroidBinder.java index 1270464576..34aec22c03 100644 --- a/src/android/jar/src/org/qtproject/qt/android/extras/QtAndroidBinder.java +++ b/src/android/jar/src/org/qtproject/qt/android/extras/QtAndroidBinder.java @@ -6,8 +6,11 @@ package org.qtproject.qt.android.extras; import android.os.Binder; import android.os.Parcel; +import org.qtproject.qt.android.UsedFromNativeCode; + public class QtAndroidBinder extends Binder { + @UsedFromNativeCode public QtAndroidBinder(long id) { m_id = id; diff --git a/src/android/jar/src/org/qtproject/qt/android/extras/QtAndroidServiceConnection.java b/src/android/jar/src/org/qtproject/qt/android/extras/QtAndroidServiceConnection.java index 3608051208..5d6dc97b84 100644 --- a/src/android/jar/src/org/qtproject/qt/android/extras/QtAndroidServiceConnection.java +++ b/src/android/jar/src/org/qtproject/qt/android/extras/QtAndroidServiceConnection.java @@ -7,8 +7,11 @@ import android.content.ComponentName; import android.content.ServiceConnection; import android.os.IBinder; +import org.qtproject.qt.android.UsedFromNativeCode; + public class QtAndroidServiceConnection implements ServiceConnection { + @UsedFromNativeCode public QtAndroidServiceConnection(long id) { m_id = id; |