diff options
Diffstat (limited to 'src/android/java/src/org/qtproject')
3 files changed, 33 insertions, 453 deletions
diff --git a/src/android/java/src/org/qtproject/qt/android/bindings/QtActivity.java b/src/android/java/src/org/qtproject/qt/android/bindings/QtActivity.java index 438fd403a6..9fa8d3ffae 100644 --- a/src/android/java/src/org/qtproject/qt/android/bindings/QtActivity.java +++ b/src/android/java/src/org/qtproject/qt/android/bindings/QtActivity.java @@ -4,11 +4,6 @@ package org.qtproject.qt.android.bindings; -import android.app.Activity; -import android.content.Intent; -import android.content.res.Configuration; -import android.net.Uri; -import android.os.Build; import android.os.Bundle; import android.provider.Browser; import android.view.ContextMenu; @@ -18,373 +13,48 @@ import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; +import android.os.Build; -import org.qtproject.qt.android.QtActivityLoader; -import org.qtproject.qt.android.QtLoader; +import org.qtproject.qt.android.QtActivityBase; -public class QtActivity extends Activity +public class QtActivity extends QtActivityBase { - public static final String EXTRA_SOURCE_INFO = "org.qtproject.qt.android.sourceInfo"; - - public String APPLICATION_PARAMETERS = null; // use this variable to pass any parameters to your application, - // the parameters must not contain any white spaces - // and must be separated with "\t" - // e.g "-param1\t-param2=value2\t-param3\tvalue3" - - public String ENVIRONMENT_VARIABLES = "QT_USE_ANDROID_NATIVE_DIALOGS=1"; - // use this variable to add any environment variables to your application. - // the env vars must be separated with "\t" - // e.g. "ENV_VAR1=1\tENV_VAR2=2\t" - // Currently the following vars are used by the android plugin: - // * QT_USE_ANDROID_NATIVE_DIALOGS - 1 to use the android native dialogs. - - public String[] QT_ANDROID_THEMES = null; // A list with all themes that your application want to use. - // The name of the theme must be the same with any theme from - // http://developer.android.com/reference/android/R.style.html - // The most used themes are: - // * "Theme" - (fallback) check http://developer.android.com/reference/android/R.style.html#Theme - // * "Theme_Black" - check http://developer.android.com/reference/android/R.style.html#Theme_Black - // * "Theme_Light" - (default for API <=10) check http://developer.android.com/reference/android/R.style.html#Theme_Light - // * "Theme_Holo" - check http://developer.android.com/reference/android/R.style.html#Theme_Holo - // * "Theme_Holo_Light" - (default for API 11-13) check http://developer.android.com/reference/android/R.style.html#Theme_Holo_Light - // * "Theme_DeviceDefault" - check http://developer.android.com/reference/android/R.style.html#Theme_DeviceDefault - // * "Theme_DeviceDefault_Light" - (default for API 14+) check http://developer.android.com/reference/android/R.style.html#Theme_DeviceDefault_Light - - public String QT_ANDROID_DEFAULT_THEME = null; // sets the default theme. - - private QtActivityLoader m_loader; - public QtActivity() - { - m_loader = new QtActivityLoader(this, QtActivity.class); - - if (Build.VERSION.SDK_INT < 29) { - QT_ANDROID_THEMES = new String[] {"Theme_Holo_Light"}; - QT_ANDROID_DEFAULT_THEME = "Theme_Holo_Light"; - } else { - QT_ANDROID_THEMES = new String[] {"Theme_DeviceDefault_DayNight"}; - QT_ANDROID_DEFAULT_THEME = "Theme_DeviceDefault_DayNight"; - } - } - - - /////////////////////////// forward all notifications //////////////////////////// - /////////////////////////// Super class calls //////////////////////////////////// - /////////////// PLEASE DO NOT CHANGE THE FOLLOWING CODE ////////////////////////// - ////////////////////////////////////////////////////////////////////////////////// - - protected void onCreateHook(Bundle savedInstanceState) { - m_loader.APPLICATION_PARAMETERS = APPLICATION_PARAMETERS; - m_loader.ENVIRONMENT_VARIABLES = ENVIRONMENT_VARIABLES; - m_loader.QT_ANDROID_THEMES = QT_ANDROID_THEMES; - m_loader.QT_ANDROID_DEFAULT_THEME = QT_ANDROID_DEFAULT_THEME; - m_loader.onCreate(savedInstanceState); - } - - private void addReferrer(Intent intent) - { - if (intent.getExtras() != null && intent.getExtras().getString(EXTRA_SOURCE_INFO) != null) - return; - - String browserApplicationId = ""; - if (intent.getExtras() != null) - browserApplicationId = intent.getExtras().getString(Browser.EXTRA_APPLICATION_ID); - - String sourceInformation = ""; - if (browserApplicationId != null && !browserApplicationId.isEmpty()) { - sourceInformation = browserApplicationId; - } else { - Uri referrer = getReferrer(); - if (referrer != null) - sourceInformation = referrer.toString().replaceFirst("android-app://", ""); - } - - intent.putExtra(EXTRA_SOURCE_INFO, sourceInformation); - } - @Override public void onCreate(Bundle savedInstanceState) { + setAppDetails(); super.onCreate(savedInstanceState); - QtLoader.setQtApplicationClass(QtApplication.class); - onCreateHook(savedInstanceState); - addReferrer(getIntent()); - } - - @Override - public boolean dispatchKeyEvent(KeyEvent event) - { - if (QtLoader.m_delegateObject != null && QtLoader.dispatchKeyEvent != null) - return (Boolean) QtLoader.invokeDelegateMethod(QtLoader.dispatchKeyEvent, event); - else - return super.dispatchKeyEvent(event); - } - public boolean super_dispatchKeyEvent(KeyEvent event) - { - return super.dispatchKeyEvent(event); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) - { - - if (QtLoader.m_delegateObject != null && QtLoader.onActivityResult != null) { - QtLoader.invokeDelegateMethod(QtLoader.onActivityResult, requestCode, resultCode, data); - return; - } - super.onActivityResult(requestCode, resultCode, data); - } - public void super_onActivityResult(int requestCode, int resultCode, Intent data) - { - super.onActivityResult(requestCode, resultCode, data); - } - - @Override - public void onConfigurationChanged(Configuration newConfig) - { - if (!QtLoader.invokeDelegate(newConfig).invoked) - super.onConfigurationChanged(newConfig); - } - public void super_onConfigurationChanged(Configuration newConfig) - { - super.onConfigurationChanged(newConfig); - } - - @Override - public boolean onContextItemSelected(MenuItem item) - { - QtLoader.InvokeResult res = QtLoader.invokeDelegate(item); - if (res.invoked) - return (Boolean)res.methodReturns; - else - return super.onContextItemSelected(item); - } - public boolean super_onContextItemSelected(MenuItem item) - { - return super.onContextItemSelected(item); - } - - @Override - public void onContextMenuClosed(Menu menu) - { - if (!QtLoader.invokeDelegate(menu).invoked) - super.onContextMenuClosed(menu); - } - public void super_onContextMenuClosed(Menu menu) - { - super.onContextMenuClosed(menu); - } - - @Override - public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) - { - if (!QtLoader.invokeDelegate(menu, v, menuInfo).invoked) - super.onCreateContextMenu(menu, v, menuInfo); - } - public void super_onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) - { - super.onCreateContextMenu(menu, v, menuInfo); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) - { - QtLoader.InvokeResult res = QtLoader.invokeDelegate(menu); - if (res.invoked) - return (Boolean)res.methodReturns; - else - return super.onCreateOptionsMenu(menu); - } - public boolean super_onCreateOptionsMenu(Menu menu) - { - return super.onCreateOptionsMenu(menu); - } - - @Override - protected void onDestroy() - { - super.onDestroy(); - QtLoader.invokeDelegate(); - } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) - { - if (QtLoader.m_delegateObject != null && QtLoader.onKeyDown != null) - return (Boolean) QtLoader.invokeDelegateMethod(QtLoader.onKeyDown, keyCode, event); - else - return super.onKeyDown(keyCode, event); - } - public boolean super_onKeyDown(int keyCode, KeyEvent event) - { - return super.onKeyDown(keyCode, event); } - @Override - public boolean onKeyUp(int keyCode, KeyEvent event) - { - if (QtLoader.m_delegateObject != null && QtLoader.onKeyUp != null) - return (Boolean) QtLoader.invokeDelegateMethod(QtLoader.onKeyUp, keyCode, event); - else - return super.onKeyUp(keyCode, event); - } - public boolean super_onKeyUp(int keyCode, KeyEvent event) - { - return super.onKeyUp(keyCode, event); - } - - @Override - protected void onNewIntent(Intent intent) - { - addReferrer(intent); - if (!QtLoader.invokeDelegate(intent).invoked) - super.onNewIntent(intent); - } - public void super_onNewIntent(Intent intent) - { - super.onNewIntent(intent); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) - { - QtLoader.InvokeResult res = QtLoader.invokeDelegate(item); - if (res.invoked) - return (Boolean)res.methodReturns; - else - return super.onOptionsItemSelected(item); - } - public boolean super_onOptionsItemSelected(MenuItem item) - { - return super.onOptionsItemSelected(item); - } - - @Override - public void onOptionsMenuClosed(Menu menu) - { - if (!QtLoader.invokeDelegate(menu).invoked) - super.onOptionsMenuClosed(menu); - } - public void super_onOptionsMenuClosed(Menu menu) - { - super.onOptionsMenuClosed(menu); - } - - @Override - protected void onPause() - { - super.onPause(); - QtLoader.invokeDelegate(); - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) - { - QtLoader.InvokeResult res = QtLoader.invokeDelegate(menu); - if (res.invoked) - return (Boolean)res.methodReturns; - else - return super.onPrepareOptionsMenu(menu); - } - public boolean super_onPrepareOptionsMenu(Menu menu) - { - return super.onPrepareOptionsMenu(menu); - } - - @Override - protected void onRestart() - { - super.onRestart(); - QtLoader.invokeDelegate(); - } - - @Override - protected void onRestoreInstanceState(Bundle savedInstanceState) - { - if (!QtLoader.invokeDelegate(savedInstanceState).invoked) - super.onRestoreInstanceState(savedInstanceState); - } - public void super_onRestoreInstanceState(Bundle savedInstanceState) - { - super.onRestoreInstanceState(savedInstanceState); - } - - @Override - protected void onResume() - { - super.onResume(); - QtLoader.invokeDelegate(); - } - - @Override - public Object onRetainNonConfigurationInstance() - { - QtLoader.InvokeResult res = QtLoader.invokeDelegate(); - if (res.invoked) - return res.methodReturns; - else - return super.onRetainNonConfigurationInstance(); - } - public Object super_onRetainNonConfigurationInstance() - { - return super.onRetainNonConfigurationInstance(); - } - - @Override - protected void onSaveInstanceState(Bundle outState) - { - if (!QtLoader.invokeDelegate(outState).invoked) - super.onSaveInstanceState(outState); - } - public void super_onSaveInstanceState(Bundle outState) - { - super.onSaveInstanceState(outState); - - } - - @Override - protected void onStart() - { - super.onStart(); - QtLoader.invokeDelegate(); - } - - @Override - protected void onStop() + private void setAppDetails() { - super.onStop(); - QtLoader.invokeDelegate(); - } + // use this variable to pass any parameters to your application, + // the parameters must not contain any white spaces + // and must be separated with "\t" + // e.g "-param1\t-param2=value2\t-param3\tvalue3" + APPLICATION_PARAMETERS = ""; - @Override - public void onWindowFocusChanged(boolean hasFocus) - { - if (!QtLoader.invokeDelegate(hasFocus).invoked) - super.onWindowFocusChanged(hasFocus); - } - public void super_onWindowFocusChanged(boolean hasFocus) - { - super.onWindowFocusChanged(hasFocus); - } + // Use this variable to add any environment variables to your application. + // the env vars must be separated with "\t" + // e.g. "ENV_VAR1=1\tENV_VAR2=2\t" + // Currently the following vars are used by the android plugin: + // * QT_USE_ANDROID_NATIVE_DIALOGS - 1 to use the android native dialogs. + ENVIRONMENT_VARIABLES = "QT_USE_ANDROID_NATIVE_DIALOGS=1"; - @Override - public boolean dispatchGenericMotionEvent(MotionEvent ev) - { - if (QtLoader.m_delegateObject != null && QtLoader.dispatchGenericMotionEvent != null) - return (Boolean) QtLoader.invokeDelegateMethod(QtLoader.dispatchGenericMotionEvent, ev); - else - return super.dispatchGenericMotionEvent(ev); - } - public boolean super_dispatchGenericMotionEvent(MotionEvent event) - { - return super.dispatchGenericMotionEvent(event); - } + // A list with all themes that your application want to use. + // The name of the theme must be the same with any theme from + // http://developer.android.com/reference/android/R.style.html + // The most used themes are: + // * "Theme_Light" + // * "Theme_Holo" + // * "Theme_Holo_Light" - public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) - { - if (QtLoader.m_delegateObject != null && QtLoader.onRequestPermissionsResult != null) { - QtLoader.invokeDelegateMethod(QtLoader.onRequestPermissionsResult, requestCode , - permissions, grantResults); + if (Build.VERSION.SDK_INT < 29) { + QT_ANDROID_THEMES = new String[] {"Theme_Holo_Light"}; + QT_ANDROID_DEFAULT_THEME = "Theme_Holo_Light"; + } else { + QT_ANDROID_THEMES = new String[] {"Theme_DeviceDefault_DayNight"}; + QT_ANDROID_DEFAULT_THEME = "Theme_DeviceDefault_DayNight"; } } - //--------------------------------------------------------------------------- } diff --git a/src/android/java/src/org/qtproject/qt/android/bindings/QtApplication.java b/src/android/java/src/org/qtproject/qt/android/bindings/QtApplication.java index b89946b9a5..d1330565c1 100644 --- a/src/android/java/src/org/qtproject/qt/android/bindings/QtApplication.java +++ b/src/android/java/src/org/qtproject/qt/android/bindings/QtApplication.java @@ -4,30 +4,12 @@ package org.qtproject.qt.android.bindings; -import android.app.Application; -import org.qtproject.qt.android.QtLoader; +import org.qtproject.qt.android.QtApplicationBase; -public class QtApplication extends Application +public class QtApplication extends QtApplicationBase { - public final static String QtTAG = "Qt"; - @Override public void onTerminate() { - if (QtLoader.m_delegateObject != null && QtLoader.m_delegateMethods.containsKey("onTerminate")) - QtLoader.invokeDelegateMethod(QtLoader.m_delegateMethods.get("onTerminate").get(0)); super.onTerminate(); } - - // TODO: only keep around for avoid build errors, will be removed. - public static class InvokeResult - { - public boolean invoked = false; - public Object methodReturns = null; - } - - public static InvokeResult invokeDelegate(Object... args) - { - InvokeResult result = new InvokeResult(); - return result; - } } diff --git a/src/android/java/src/org/qtproject/qt/android/bindings/QtService.java b/src/android/java/src/org/qtproject/qt/android/bindings/QtService.java index 8322af2ae7..6569446901 100644 --- a/src/android/java/src/org/qtproject/qt/android/bindings/QtService.java +++ b/src/android/java/src/org/qtproject/qt/android/bindings/QtService.java @@ -4,85 +4,13 @@ package org.qtproject.qt.android.bindings; -import android.app.Service; -import android.util.Log; -import android.content.Intent; -import android.content.res.Configuration; -import android.os.IBinder; +import org.qtproject.qt.android.QtServiceBase; -import org.qtproject.qt.android.QtNative; -import org.qtproject.qt.android.QtServiceLoader; -import org.qtproject.qt.android.QtLoader; - -public class QtService extends Service +public class QtService extends QtServiceBase { - QtServiceLoader m_loader = new QtServiceLoader(this, QtService.class); - - /////////////////////////// forward all notifications //////////////////////////// - /////////////////////////// Super class calls //////////////////////////////////// - /////////////// PLEASE DO NOT CHANGE THE FOLLOWING CODE ////////////////////////// - ////////////////////////////////////////////////////////////////////////////////// - - protected void onCreateHook() { - // the application has already started - // do not reload everything again - if (QtNative.isStarted()) { - m_loader = null; - Log.w(QtNative.QtTAG, - "A QtService tried to start in the same process as an initiated " + - "QtActivity. That is not supported. This results in the service " + - "functioning as an Android Service detached from Qt."); - } else { - m_loader.onCreate(); - } - } @Override public void onCreate() { super.onCreate(); - onCreateHook(); - } - - @Override - public void onDestroy() - { - super.onDestroy(); - QtLoader.invokeDelegate(); - } - - @Override - public IBinder onBind(Intent intent) - { - QtLoader.InvokeResult res = QtLoader.invokeDelegate(intent); - if (res.invoked) - return (IBinder)res.methodReturns; - else - return null; - } - - @Override - public void onConfigurationChanged(Configuration newConfig) - { - if (!QtLoader.invokeDelegate(newConfig).invoked) - super.onConfigurationChanged(newConfig); - } - public void super_onConfigurationChanged(Configuration newConfig) - { - super.onConfigurationChanged(newConfig); - } - - @Override - public boolean onUnbind(Intent intent) - { - QtLoader.InvokeResult res = QtLoader.invokeDelegate(intent); - if (res.invoked) - return (Boolean) res.methodReturns; - else - return super.onUnbind(intent); - } - public boolean super_onUnbind(Intent intent) - { - return super.onUnbind(intent); } - //--------------------------------------------------------------------------- } |