summaryrefslogtreecommitdiffstats
path: root/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java')
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java63
1 files changed, 37 insertions, 26 deletions
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 9e067f14c5..db970b6656 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
@@ -45,6 +45,7 @@ package org.qtproject.qt5.android;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Configuration;
@@ -99,6 +100,7 @@ public class QtActivityDelegate
private static final String APPLICATION_PARAMETERS_KEY = "application.parameters";
private static final String STATIC_INIT_CLASSES_KEY = "static.init.classes";
private static final String NECESSITAS_API_LEVEL_KEY = "necessitas.api.level";
+ private static final String EXTRACT_STYLE_KEY = "extract.android.style";
private static String m_environmentVariables = null;
private static String m_applicationParameters = null;
@@ -109,6 +111,7 @@ public class QtActivityDelegate
private String m_mainLib;
private long m_metaState;
private int m_lastChar = 0;
+ private int m_softInputMode = 0;
private boolean m_fullScreen = false;
private boolean m_started = false;
private HashMap<Integer, QtSurface> m_surfaces = null;
@@ -245,10 +248,12 @@ public class QtActivityDelegate
if (m_imm == null)
return;
- if (height > m_layout.getHeight() * 2 / 3)
- m_activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
- else
+ if (m_softInputMode == 0 && height > m_layout.getHeight() * 2 / 3)
+ m_activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
+ else if (m_softInputMode == 0)
m_activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
+ else
+ m_activity.getWindow().setSoftInputMode(m_softInputMode);
int initialCapsMode = 0;
int imeOptions = android.view.inputmethod.EditorInfo.IME_ACTION_DONE;
@@ -422,6 +427,11 @@ public class QtActivityDelegate
if (null == m_mainLib && libraries.size() > 0)
m_mainLib = libraries.get(libraries.size() - 1);
+ if (loaderParams.containsKey(EXTRACT_STYLE_KEY)) {
+ String path = loaderParams.getString(EXTRACT_STYLE_KEY);
+ new ExtractStyle(m_activity, path);
+ }
+
try {
m_super_dispatchKeyEvent = m_activity.getClass().getMethod("super_dispatchKeyEvent", KeyEvent.class);
m_super_onRestoreInstanceState = m_activity.getClass().getMethod("super_onRestoreInstanceState", Bundle.class);
@@ -463,6 +473,12 @@ public class QtActivityDelegate
else
m_applicationParameters = "";
+ try {
+ m_softInputMode = m_activity.getPackageManager().getActivityInfo(m_activity.getComponentName(), 0).softInputMode;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
return true;
}
@@ -496,6 +512,9 @@ public class QtActivityDelegate
? extras.getString("gdbserver_socket")
: "+debug-socket";
+ if (!(new File(gdbserverPath)).exists())
+ gdbserverPath += ".so";
+
// start debugger
m_debuggerProcess = Runtime.getRuntime().exec(gdbserverPath
+ socket
@@ -531,6 +550,11 @@ public class QtActivityDelegate
int timeOut = 30000; // ms until we give up on ping and pong
int maxAttempts = timeOut / napTime;
+ if (gdbserverSocket != null) {
+ debugLog("removing gdb socket " + gdbserverSocket);
+ new File(gdbserverSocket).delete();
+ }
+
if (usePing) {
debugLog("removing ping file " + pingFile);
File ping = new File(pingFile);
@@ -605,6 +629,8 @@ public class QtActivityDelegate
debugLog("go to sleep");
Thread.sleep(napTime);
}
+ debugLog("Removing pingFile " + pingFile);
+ new File(pingFile).delete();
if (i == maxAttempts) {
debugLog("time out when waiting for pong file");
@@ -794,15 +820,6 @@ public class QtActivityDelegate
if (!m_started)
return false;
- if (keyCode == KeyEvent.KEYCODE_MENU) {
- try {
- return (Boolean)m_super_onKeyDown.invoke(m_activity, keyCode, event);
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- }
-
m_metaState = MetaKeyKeyListener.handleKeyDown(m_metaState, keyCode, event);
int c = event.getUnicodeChar(MetaKeyKeyListener.getMetaState(m_metaState));
int lc = c;
@@ -837,15 +854,6 @@ public class QtActivityDelegate
if (!m_started)
return false;
- if (keyCode == KeyEvent.KEYCODE_MENU) {
- try {
- return (Boolean)m_super_onKeyUp.invoke(m_activity, keyCode, event);
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- }
-
if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP
|| keyCode == KeyEvent.KEYCODE_VOLUME_DOWN
|| keyCode == KeyEvent.KEYCODE_MUTE)
@@ -883,7 +891,7 @@ public class QtActivityDelegate
return false;
}
- private boolean m_opionsMenuIsVisible = false;
+ private boolean m_optionsMenuIsVisible = false;
public boolean onCreateOptionsMenu(Menu menu)
{
menu.clear();
@@ -891,7 +899,7 @@ public class QtActivityDelegate
}
public boolean onPrepareOptionsMenu(Menu menu)
{
- m_opionsMenuIsVisible = true;
+ m_optionsMenuIsVisible = true;
boolean res = QtNative.onPrepareOptionsMenu(menu);
setActionBarVisibility(res && menu.size() > 0);
return res;
@@ -904,7 +912,7 @@ public class QtActivityDelegate
public void onOptionsMenuClosed(Menu menu)
{
- m_opionsMenuIsVisible = false;
+ m_optionsMenuIsVisible = false;
QtNative.onOptionsMenuClosed(menu);
}
@@ -918,7 +926,7 @@ public class QtActivityDelegate
}
}
else
- if (m_opionsMenuIsVisible)
+ if (m_optionsMenuIsVisible)
m_activity.closeOptionsMenu();
}
private boolean m_contextMenuVisible = false;
@@ -1082,11 +1090,14 @@ public class QtActivityDelegate
Log.e(QtNative.QtTAG, "Surface " + id +" not found!");
}
+ if (view == null)
+ return;
+
// Keep last frame in stack until it is replaced to get correct
// shutdown transition
if (m_surfaces.size() == 0 && m_nativeViews.size() == 0) {
m_dummyView = view;
- } else if (view != null) {
+ } else {
m_layout.removeView(view);
}
}