summaryrefslogtreecommitdiffstats
path: root/src/android/jar
diff options
context:
space:
mode:
Diffstat (limited to 'src/android/jar')
-rw-r--r--src/android/jar/.prev_CMakeLists.txt30
-rw-r--r--src/android/jar/CMakeLists.txt31
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java6
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java63
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtLayout.java31
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtNative.java51
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java2
7 files changed, 160 insertions, 54 deletions
diff --git a/src/android/jar/.prev_CMakeLists.txt b/src/android/jar/.prev_CMakeLists.txt
new file mode 100644
index 0000000000..f4c807c33a
--- /dev/null
+++ b/src/android/jar/.prev_CMakeLists.txt
@@ -0,0 +1,30 @@
+# Generated from jar.pro.
+
+set(java_sources
+ src/org/qtproject/qt5/android//accessibility/QtAccessibilityDelegate.java
+ src/org/qtproject/qt5/android//accessibility/QtNativeAccessibility.java
+ src/org/qtproject/qt5/android//CursorHandle.java
+ src/org/qtproject/qt5/android//EditContextView.java
+ src/org/qtproject/qt5/android//EditPopupMenu.java
+ src/org/qtproject/qt5/android//ExtractStyle.java
+ src/org/qtproject/qt5/android//QtActivityDelegate.java
+ src/org/qtproject/qt5/android//QtEditText.java
+ src/org/qtproject/qt5/android//QtInputConnection.java
+ src/org/qtproject/qt5/android//QtLayout.java
+ src/org/qtproject/qt5/android//QtMessageDialogHelper.java
+ src/org/qtproject/qt5/android//QtNative.java
+ src/org/qtproject/qt5/android//QtNativeLibrariesDir.java
+ src/org/qtproject/qt5/android//QtSurface.java
+ src/org/qtproject/qt5/android//QtThread.java
+)
+
+add_jar(QtAndroid
+ INCLUDE_JARS ${QT_ANDROID_JAR}
+ SOURCES ${java_sources}
+)
+
+install_jar(QtAndroid
+ DESTINATION jar
+ COMPONENT Devel
+)
+
diff --git a/src/android/jar/CMakeLists.txt b/src/android/jar/CMakeLists.txt
new file mode 100644
index 0000000000..61af168a67
--- /dev/null
+++ b/src/android/jar/CMakeLists.txt
@@ -0,0 +1,31 @@
+# Generated from jar.pro.
+
+set(java_sources
+ src/org/qtproject/qt5/android/accessibility/QtAccessibilityDelegate.java
+ src/org/qtproject/qt5/android/accessibility/QtNativeAccessibility.java
+ src/org/qtproject/qt5/android/CursorHandle.java
+ src/org/qtproject/qt5/android/EditContextView.java
+ src/org/qtproject/qt5/android/EditPopupMenu.java
+ src/org/qtproject/qt5/android/ExtractStyle.java
+ src/org/qtproject/qt5/android/QtActivityDelegate.java
+ src/org/qtproject/qt5/android/QtEditText.java
+ src/org/qtproject/qt5/android/QtInputConnection.java
+ src/org/qtproject/qt5/android/QtLayout.java
+ src/org/qtproject/qt5/android/QtMessageDialogHelper.java
+ src/org/qtproject/qt5/android/QtNative.java
+ src/org/qtproject/qt5/android/QtNativeLibrariesDir.java
+ src/org/qtproject/qt5/android/QtSurface.java
+ src/org/qtproject/qt5/android/QtThread.java
+ src/org/qtproject/qt5/android/QtServiceDelegate.java # special case
+)
+
+add_jar(QtAndroid
+ INCLUDE_JARS ${QT_ANDROID_JAR}
+ SOURCES ${java_sources}
+)
+
+install_jar(QtAndroid
+ DESTINATION jar
+ COMPONENT Devel
+)
+
diff --git a/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java b/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java
index e6de354ac4..ae06506c96 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java
@@ -673,7 +673,7 @@ public class ExtractStyle {
json.put("gradient",gradientStateClass.getField("mGradient").getInt(obj));
GradientDrawable.Orientation orientation=(Orientation) gradientStateClass.getField("mOrientation").get(obj);
json.put("orientation",orientation.name());
- int [] intArray=(int[]) gradientStateClass.getField((Build.VERSION.SDK_INT < 23) ? "mColors" : "mGradientColors").get(obj);
+ int [] intArray=(int[]) gradientStateClass.getField("mGradientColors").get(obj);
if (intArray != null)
json.put("colors",getJsonArray(intArray, 0, intArray.length));
json.put("positions",getJsonArray((float[]) gradientStateClass.getField("mPositions").get(obj)));
@@ -1089,9 +1089,7 @@ public class ExtractStyle {
{
try {
InsetDrawable d = (InsetDrawable)drawable;
- // mInsetState changed to mState in Android 5.1 (22)
- Object mInsetStateObject = getAccessibleField(InsetDrawable.class, (Build.VERSION.SDK_INT > 21) ? "mState"
- : "mInsetState").get(d);
+ Object mInsetStateObject = getAccessibleField(InsetDrawable.class, "mState").get(d);
Rect _padding = new Rect();
boolean hasPadding = d.getPadding(_padding);
return getDrawable(getAccessibleField(mInsetStateObject.getClass(), "mDrawable").get(mInsetStateObject), filename, hasPadding ? _padding : null);
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
index 2df2ed9a1d..0db9441749 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
@@ -121,6 +121,10 @@ public class QtActivityDelegate
private static final String EXTRACT_STYLE_KEY = "extract.android.style";
private static final String EXTRACT_STYLE_MINIMAL_KEY = "extract.android.style.option";
+ public static final int SYSTEM_UI_VISIBILITY_NORMAL = 0;
+ public static final int SYSTEM_UI_VISIBILITY_FULLSCREEN = 1;
+ public static final int SYSTEM_UI_VISIBILITY_TRANSLUCENT = 2;
+
private static String m_environmentVariables = null;
private static String m_applicationParameters = null;
@@ -131,7 +135,7 @@ public class QtActivityDelegate
private long m_metaState;
private int m_lastChar = 0;
private int m_softInputMode = 0;
- private boolean m_fullScreen = false;
+ private int m_systemUiVisibility = SYSTEM_UI_VISIBILITY_NORMAL;
private boolean m_started = false;
private HashMap<Integer, QtSurface> m_surfaces = null;
private HashMap<Integer, View> m_nativeViews = null;
@@ -153,38 +157,51 @@ public class QtActivityDelegate
private CursorHandle m_rightSelectionHandle;
private EditPopupMenu m_editPopupMenu;
- public void setFullScreen(boolean enterFullScreen)
+
+ public void setSystemUiVisibility(int systemUiVisibility)
{
- if (m_fullScreen == enterFullScreen)
+ if (m_systemUiVisibility == systemUiVisibility)
return;
- if (m_fullScreen = enterFullScreen) {
+ m_systemUiVisibility = systemUiVisibility;
+
+ int systemUiVisibilityFlags = 0;
+ switch (m_systemUiVisibility) {
+ case SYSTEM_UI_VISIBILITY_NORMAL:
+ m_activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
+ m_activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ systemUiVisibilityFlags = View.SYSTEM_UI_FLAG_VISIBLE;
+ break;
+ case SYSTEM_UI_VISIBILITY_FULLSCREEN:
m_activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
m_activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
- try {
- int flags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
- flags |= View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
- flags |= View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
- flags |= View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
- flags |= View.SYSTEM_UI_FLAG_FULLSCREEN;
- flags |= View.class.getDeclaredField("SYSTEM_UI_FLAG_IMMERSIVE_STICKY").getInt(null);
- m_activity.getWindow().getDecorView().setSystemUiVisibility(flags | View.INVISIBLE);
- } catch (Exception e) {
- e.printStackTrace();
- }
- } else {
- m_activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
+ systemUiVisibilityFlags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+ | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
+ | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
+ | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+ | View.SYSTEM_UI_FLAG_FULLSCREEN
+ | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
+ | View.INVISIBLE;
+ break;
+ case SYSTEM_UI_VISIBILITY_TRANSLUCENT:
+ m_activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN
+ | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION
+ | WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
m_activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
- m_activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
- }
+ systemUiVisibilityFlags = View.SYSTEM_UI_FLAG_VISIBLE;
+ break;
+ };
+
+ m_activity.getWindow().getDecorView().setSystemUiVisibility(systemUiVisibilityFlags);
+
m_layout.requestLayout();
}
public void updateFullScreen()
{
- if (m_fullScreen) {
- m_fullScreen = false;
- setFullScreen(true);
+ if (m_systemUiVisibility == SYSTEM_UI_VISIBILITY_FULLSCREEN) {
+ m_systemUiVisibility = SYSTEM_UI_VISIBILITY_NORMAL;
+ setSystemUiVisibility(SYSTEM_UI_VISIBILITY_FULLSCREEN);
}
}
@@ -943,7 +960,7 @@ public class QtActivityDelegate
} catch (Exception e) {
e.printStackTrace();
}
- outState.putBoolean("FullScreen", m_fullScreen);
+ outState.putInt("SystemUiVisibility", m_systemUiVisibility);
outState.putBoolean("Started", m_started);
// It should never
}
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java b/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java
index f22b8176c8..63993f81b5 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java
@@ -46,6 +46,7 @@ import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.ViewGroup;
+import android.view.WindowInsets;
public class QtLayout extends ViewGroup
{
@@ -69,10 +70,32 @@ public class QtLayout extends ViewGroup
@Override
protected void onSizeChanged (int w, int h, int oldw, int oldh)
{
- DisplayMetrics metrics = new DisplayMetrics();
- ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(metrics);
- QtNative.setApplicationDisplayMetrics(metrics.widthPixels, metrics.heightPixels, w, h,
- metrics.xdpi, metrics.ydpi, metrics.scaledDensity, metrics.density);
+ WindowInsets insets = getRootWindowInsets();
+
+ DisplayMetrics realMetrics = new DisplayMetrics();
+ ((Activity) getContext()).getWindowManager().getDefaultDisplay().getRealMetrics(realMetrics);
+
+ boolean isFullScreenView = h == realMetrics.heightPixels;
+
+ int insetLeft = isFullScreenView ? insets.getSystemWindowInsetLeft() : 0;
+ int insetTop = isFullScreenView ? insets.getSystemWindowInsetTop() : 0;
+ int insetRight = isFullScreenView ? insets.getSystemWindowInsetRight() : 0;
+ int insetBottom = isFullScreenView ? insets.getSystemWindowInsetBottom() : 0;
+
+ int usableAreaWidth = w - insetLeft - insetRight;
+ int usableAreaHeight = h - insetTop - insetBottom;
+
+ QtNative.setApplicationDisplayMetrics(realMetrics.widthPixels,
+ realMetrics.heightPixels,
+ insetLeft,
+ insetTop,
+ usableAreaWidth,
+ usableAreaHeight,
+ realMetrics.xdpi,
+ realMetrics.ydpi,
+ realMetrics.scaledDensity,
+ realMetrics.density);
+
if (m_startApplicationRunnable != null) {
m_startApplicationRunnable.run();
m_startApplicationRunnable = null;
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
index a8bf4c15e1..dba407c0b1 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
@@ -96,8 +96,10 @@ public class QtNative
private static boolean m_started = false;
private static int m_displayMetricsScreenWidthPixels = 0;
private static int m_displayMetricsScreenHeightPixels = 0;
- private static int m_displayMetricsDesktopWidthPixels = 0;
- private static int m_displayMetricsDesktopHeightPixels = 0;
+ private static int m_displayMetricsAvailableLeftPixels = 0;
+ private static int m_displayMetricsAvailableTopPixels = 0;
+ private static int m_displayMetricsAvailableWidthPixels = 0;
+ private static int m_displayMetricsAvailableHeightPixels = 0;
private static double m_displayMetricsXDpi = .0;
private static double m_displayMetricsYDpi = .0;
private static double m_displayMetricsScaledDensity = 1.0;
@@ -480,8 +482,10 @@ public class QtNative
res[0] = startQtAndroidPlugin(qtParams, environment);
setDisplayMetrics(m_displayMetricsScreenWidthPixels,
m_displayMetricsScreenHeightPixels,
- m_displayMetricsDesktopWidthPixels,
- m_displayMetricsDesktopHeightPixels,
+ m_displayMetricsAvailableLeftPixels,
+ m_displayMetricsAvailableTopPixels,
+ m_displayMetricsAvailableWidthPixels,
+ m_displayMetricsAvailableHeightPixels,
m_displayMetricsXDpi,
m_displayMetricsYDpi,
m_displayMetricsScaledDensity,
@@ -502,8 +506,10 @@ public class QtNative
public static void setApplicationDisplayMetrics(int screenWidthPixels,
int screenHeightPixels,
- int desktopWidthPixels,
- int desktopHeightPixels,
+ int availableLeftPixels,
+ int availableTopPixels,
+ int availableWidthPixels,
+ int availableHeightPixels,
double XDpi,
double YDpi,
double scaledDensity,
@@ -519,8 +525,10 @@ public class QtNative
if (m_started) {
setDisplayMetrics(screenWidthPixels,
screenHeightPixels,
- desktopWidthPixels,
- desktopHeightPixels,
+ availableLeftPixels,
+ availableTopPixels,
+ availableWidthPixels,
+ availableHeightPixels,
XDpi,
YDpi,
scaledDensity,
@@ -528,8 +536,10 @@ public class QtNative
} else {
m_displayMetricsScreenWidthPixels = screenWidthPixels;
m_displayMetricsScreenHeightPixels = screenHeightPixels;
- m_displayMetricsDesktopWidthPixels = desktopWidthPixels;
- m_displayMetricsDesktopHeightPixels = desktopHeightPixels;
+ m_displayMetricsAvailableLeftPixels = availableLeftPixels;
+ m_displayMetricsAvailableTopPixels = availableTopPixels;
+ m_displayMetricsAvailableWidthPixels = availableWidthPixels;
+ m_displayMetricsAvailableHeightPixels = availableHeightPixels;
m_displayMetricsXDpi = XDpi;
m_displayMetricsYDpi = YDpi;
m_displayMetricsScaledDensity = scaledDensity;
@@ -704,14 +714,9 @@ public class QtNative
synchronized (m_mainActivityMutex) {
Context context = getContext();
try {
- if (Build.VERSION.SDK_INT >= 23) {
- if (m_checkSelfPermissionMethod == null)
- m_checkSelfPermissionMethod = Context.class.getMethod("checkSelfPermission", String.class);
- perm = (Integer)m_checkSelfPermissionMethod.invoke(context, permission);
- } else {
- final PackageManager pm = context.getPackageManager();
- perm = pm.checkPermission(permission, context.getApplicationContext().getPackageName());
- }
+ if (m_checkSelfPermissionMethod == null)
+ m_checkSelfPermissionMethod = Context.class.getMethod("checkSelfPermission", String.class);
+ perm = (Integer)m_checkSelfPermissionMethod.invoke(context, permission);
} catch (Exception e) {
e.printStackTrace();
}
@@ -790,13 +795,13 @@ public class QtNative
});
}
- private static void setFullScreen(final boolean fullScreen)
+ private static void setSystemUiVisibility(final int systemUiVisibility)
{
runAction(new Runnable() {
@Override
public void run() {
if (m_activityDelegate != null) {
- m_activityDelegate.setFullScreen(fullScreen);
+ m_activityDelegate.setSystemUiVisibility(systemUiVisibility);
}
updateWindow();
}
@@ -1167,8 +1172,10 @@ public class QtNative
// screen methods
public static native void setDisplayMetrics(int screenWidthPixels,
int screenHeightPixels,
- int desktopWidthPixels,
- int desktopHeightPixels,
+ int availableLeftPixels,
+ int availableTopPixels,
+ int availableWidthPixels,
+ int availableHeightPixels,
double XDpi,
double YDpi,
double scaledDensity,
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java b/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java
index 33bcb364de..4cceab50c7 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java
@@ -115,7 +115,7 @@ public class QtServiceDelegate
QtNative.setService(m_service, this);
QtNative.setClassLoader(classLoader);
- QtNative.setApplicationDisplayMetrics(10, 10, 10, 10, 120, 120, 1.0, 1.0);
+ QtNative.setApplicationDisplayMetrics(10, 10, 0, 0, 10, 10, 120, 120, 1.0, 1.0);
if (loaderParams.containsKey(STATIC_INIT_CLASSES_KEY)) {
for (String className: loaderParams.getStringArray(STATIC_INIT_CLASSES_KEY)) {