diff options
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.java | 63 |
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); } } |