mirror of https://github.com/PurpleI2P/i2pd.git
hypnosis-i2p
9 years ago
29 changed files with 2072 additions and 1 deletions
@ -0,0 +1,14 @@ |
|||||||
|
# This file is automatically generated by Android Tools. |
||||||
|
# Do not modify this file -- YOUR CHANGES WILL BE ERASED! |
||||||
|
# |
||||||
|
# This file must be checked in Version Control Systems. |
||||||
|
# |
||||||
|
# To customize properties used by the Ant build system edit |
||||||
|
# "ant.properties", and override values to adapt the script to your |
||||||
|
# project structure. |
||||||
|
# |
||||||
|
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): |
||||||
|
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt |
||||||
|
|
||||||
|
# Project target. |
||||||
|
target=android-9 |
@ -0,0 +1,4 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||||
|
android:layout_width="fill_parent" |
||||||
|
android:layout_height="fill_parent" /> |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version='1.0' encoding='utf-8'?> |
||||||
|
<resources> |
||||||
|
<string name="ministro_not_found_msg">Δεν ήταν δυνατή η εύρεση της υπηρεσίας Ministro. Δεν είναι δυνατή η εκκίνηση της εφαρμογής.</string> |
||||||
|
<string name="ministro_needed_msg">Η εφαρμογή απαιτεί την υπηρεσία Ministro. Να εγκατασταθεί η υπηρεσία?</string> |
||||||
|
<string name="fatal_error_msg">Παρουσιάστηκε ένα κρίσιμο σφάλμα και η εφαρμογή δεν μπορεί να συνεχίσει.</string> |
||||||
|
</resources> |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version='1.0' encoding='utf-8'?> |
||||||
|
<resources> |
||||||
|
<string name="ministro_not_found_msg">Servicio Ministro inesistente. Imposible ejecutar la aplicación.</string> |
||||||
|
<string name="ministro_needed_msg">Esta aplicación requiere el servicio Ministro. Instalarlo?</string> |
||||||
|
<string name="fatal_error_msg">La aplicación ha causado un error grave y no es posible continuar.</string> |
||||||
|
</resources> |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version='1.0' encoding='utf-8'?> |
||||||
|
<resources> |
||||||
|
<string name="ministro_not_found_msg">Ei suuda leida Ministro teenust.\nProgrammi ei saa käivitada.</string> |
||||||
|
<string name="ministro_needed_msg">See programm vajab Ministro teenust.\nKas soovite paigaldada?</string> |
||||||
|
<string name="fatal_error_msg">Programmiga juhtus fataalne viga.\nKahjuks ei saa jätkata.</string> |
||||||
|
</resources> |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version='1.0' encoding='utf-8'?> |
||||||
|
<resources> |
||||||
|
<string name="ministro_not_found_msg">Le service Ministro est introuvable.\nL\'application ne peut pas démarrer.</string> |
||||||
|
<string name="ministro_needed_msg">Cette application requiert le service Ministro. Voulez-vous l\'installer?</string> |
||||||
|
<string name="fatal_error_msg">Votre application a rencontré une erreur fatale et ne peut pas continuer.</string> |
||||||
|
</resources> |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version='1.0' encoding='utf-8'?> |
||||||
|
<resources> |
||||||
|
<string name="ministro_not_found_msg">Layanan Ministro tidak bisa ditemukan.\nAplikasi tidak bisa dimulai.</string> |
||||||
|
<string name="ministro_needed_msg">Aplikasi ini membutuhkan layanan Ministro. Apakah Anda ingin menginstalnya?</string> |
||||||
|
<string name="fatal_error_msg">Aplikasi Anda mengalami kesalahan fatal dan tidak dapat melanjutkan.</string> |
||||||
|
</resources> |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version='1.0' encoding='utf-8'?> |
||||||
|
<resources> |
||||||
|
<string name="ministro_not_found_msg">Servizio Ministro inesistente. Impossibile eseguire \nl\'applicazione.</string> |
||||||
|
<string name="ministro_needed_msg">Questa applicazione richiede il servizio Ministro.Installarlo?</string> |
||||||
|
<string name="fatal_error_msg">L\'applicazione ha provocato un errore grave e non puo\' continuare.</string> |
||||||
|
</resources> |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version='1.0' encoding='utf-8'?> |
||||||
|
<resources> |
||||||
|
<string name="ministro_not_found_msg">Ministroサービスが見つかりません。\nアプリケーションが起動できません。</string> |
||||||
|
<string name="ministro_needed_msg">このアプリケーションにはMinistroサービスが必要です。 インストールしてもよろしいですか?</string> |
||||||
|
<string name="fatal_error_msg">アプリケーションで致命的なエラーが発生したため続行できません。</string> |
||||||
|
</resources> |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version='1.0' encoding='utf-8'?> |
||||||
|
<resources> |
||||||
|
<string name="ministro_not_found_msg">Tidak jumpa servis Ministro.\nAplikasi tidak boleh dimulakan.</string> |
||||||
|
<string name="ministro_needed_msg">Aplikasi ini memerlukan servis Ministro. Adakah anda ingin pasang servis itu?</string> |
||||||
|
<string name="fatal_error_msg">Aplikasi anda menemui ralat muat dan tidak boleh diteruskan.</string> |
||||||
|
</resources> |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version='1.0' encoding='utf-8'?> |
||||||
|
<resources> |
||||||
|
<string name="ministro_not_found_msg">Kan ikke finne tjenesten Ministro. Applikasjonen kan ikke starte.</string> |
||||||
|
<string name="ministro_needed_msg">Denne applikasjonen krever tjenesten Ministro. Vil du installere denne?</string> |
||||||
|
<string name="fatal_error_msg">Applikasjonen fikk en kritisk feil og kan ikke fortsette</string> |
||||||
|
</resources> |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version='1.0' encoding='utf-8'?> |
||||||
|
<resources> |
||||||
|
<string name="ministro_not_found_msg">De Ministro service is niet gevonden.\nDe applicatie kan niet starten.</string> |
||||||
|
<string name="ministro_needed_msg">Deze applicatie maakt gebruik van de Ministro service. Wilt u deze installeren?</string> |
||||||
|
<string name="fatal_error_msg">Er is een fatale fout in de applicatie opgetreden. De applicatie kan niet verder gaan.</string> |
||||||
|
</resources> |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version='1.0' encoding='utf-8'?> |
||||||
|
<resources> |
||||||
|
<string name="ministro_not_found_msg">Usługa Ministro nie została znaleziona.\nAplikacja nie może zostać uruchomiona.</string> |
||||||
|
<string name="ministro_needed_msg">Aplikacja wymaga usługi Ministro. Czy chcesz ją zainstalować?</string> |
||||||
|
<string name="fatal_error_msg">Wystąpił błąd krytyczny. Aplikacja zostanie zamknięta.</string> |
||||||
|
</resources> |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version='1.0' encoding='utf-8'?> |
||||||
|
<resources> |
||||||
|
<string name="ministro_not_found_msg">Não foi possível encontrar o serviço Ministro.\nA aplicação não pode iniciar.</string> |
||||||
|
<string name="ministro_needed_msg">Essa aplicação requer o serviço Ministro. Gostaria de instalá-lo?</string> |
||||||
|
<string name="fatal_error_msg">Sua aplicação encontrou um erro fatal e não pode continuar.</string> |
||||||
|
</resources> |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version='1.0' encoding='utf-8'?> |
||||||
|
<resources> |
||||||
|
<string name="ministro_not_found_msg">Serviciul Ministro nu poate fi găsit.\nAplicaţia nu poate porni.</string> |
||||||
|
<string name="ministro_needed_msg">Această aplicaţie necesită serviciul Ministro.\nDoriţi să-l instalaţi?</string> |
||||||
|
<string name="fatal_error_msg">Aplicaţia dumneavoastră a întâmpinat o eroare fatală şi nu poate continua.</string> |
||||||
|
</resources> |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version='1.0' encoding='utf-8'?> |
||||||
|
<resources> |
||||||
|
<string name="ministro_not_found_msg">Ministro servise nije pronađen. Aplikacija ne može biti pokrenuta.</string> |
||||||
|
<string name="ministro_needed_msg">Ova aplikacija zahteva Ministro servis. Želite li da ga instalirate?</string> |
||||||
|
<string name="fatal_error_msg">Vaša aplikacija je naišla na fatalnu grešku i ne može nastaviti sa radom.</string> |
||||||
|
</resources> |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version='1.0' encoding='utf-8'?> |
||||||
|
<resources> |
||||||
|
<string name="ministro_not_found_msg">Сервис Ministro не найден.\nПриложение нельзя запустить.</string> |
||||||
|
<string name="ministro_needed_msg">Этому приложению необходим сервис Ministro. Вы хотите его установить?</string> |
||||||
|
<string name="fatal_error_msg">Ваше приложение столкнулось с фатальной ошибкой и не может более работать.</string> |
||||||
|
</resources> |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version='1.0' encoding='utf-8'?> |
||||||
|
<resources> |
||||||
|
<string name="ministro_not_found_msg">无法找到Ministro服务。\n应用程序无法启动。</string> |
||||||
|
<string name="ministro_needed_msg">此应用程序需要Ministro服务。您想安装它吗?</string> |
||||||
|
<string name="fatal_error_msg">您的应用程序遇到一个致命错误导致它无法继续。</string> |
||||||
|
</resources> |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version='1.0' encoding='utf-8'?> |
||||||
|
<resources> |
||||||
|
<string name="ministro_not_found_msg">無法找到Ministro服務。\n應用程序無法啟動。</string> |
||||||
|
<string name="ministro_needed_msg">此應用程序需要Ministro服務。您想安裝它嗎?</string> |
||||||
|
<string name="fatal_error_msg">您的應用程序遇到一個致命錯誤導致它無法繼續。</string> |
||||||
|
</resources> |
@ -0,0 +1,25 @@ |
|||||||
|
<?xml version='1.0' encoding='utf-8'?> |
||||||
|
<resources> |
||||||
|
<array name="qt_sources"> |
||||||
|
<item>https://download.qt-project.org/ministro/android/qt5/qt-5.4</item> |
||||||
|
</array> |
||||||
|
|
||||||
|
<!-- The following is handled automatically by the deployment tool. It should |
||||||
|
not be edited manually. --> |
||||||
|
|
||||||
|
<array name="bundled_libs"> |
||||||
|
<!-- %%INSERT_EXTRA_LIBS%% --> |
||||||
|
</array> |
||||||
|
|
||||||
|
<array name="qt_libs"> |
||||||
|
<!-- %%INSERT_QT_LIBS%% --> |
||||||
|
</array> |
||||||
|
|
||||||
|
<array name="bundled_in_lib"> |
||||||
|
<!-- %%INSERT_BUNDLED_IN_LIB%% --> |
||||||
|
</array> |
||||||
|
<array name="bundled_in_assets"> |
||||||
|
<!-- %%INSERT_BUNDLED_IN_ASSETS%% --> |
||||||
|
</array> |
||||||
|
|
||||||
|
</resources> |
@ -0,0 +1,7 @@ |
|||||||
|
<?xml version='1.0' encoding='utf-8'?> |
||||||
|
<resources> |
||||||
|
<!-- %%INSERT_STRINGS --> |
||||||
|
<string name="ministro_not_found_msg">Can\'t find Ministro service.\nThe application can\'t start.</string> |
||||||
|
<string name="ministro_needed_msg">This application requires Ministro service. Would you like to install it?</string> |
||||||
|
<string name="fatal_error_msg">Your application encountered a fatal error and cannot continue.</string> |
||||||
|
</resources> |
@ -0,0 +1,60 @@ |
|||||||
|
/* |
||||||
|
Copyright (c) 2011-2013, BogDan Vatra <bogdan@kde.org> |
||||||
|
Contact: http://www.qt.io/licensing/ |
||||||
|
|
||||||
|
Commercial License Usage |
||||||
|
Licensees holding valid commercial Qt licenses may use this file in |
||||||
|
accordance with the commercial license agreement provided with the |
||||||
|
Software or, alternatively, in accordance with the terms contained in |
||||||
|
a written agreement between you and The Qt Company. For licensing terms |
||||||
|
and conditions see http://www.qt.io/terms-conditions. For further |
||||||
|
information use the contact form at http://www.qt.io/contact-us. |
||||||
|
|
||||||
|
BSD License Usage |
||||||
|
Alternatively, this file may be used under the BSD license as follows: |
||||||
|
Redistribution and use in source and binary forms, with or without |
||||||
|
modification, are permitted provided that the following conditions |
||||||
|
are met: |
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright |
||||||
|
notice, this list of conditions and the following disclaimer. |
||||||
|
2. Redistributions in binary form must reproduce the above copyright |
||||||
|
notice, this list of conditions and the following disclaimer in the |
||||||
|
documentation and/or other materials provided with the distribution. |
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
||||||
|
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||||
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
||||||
|
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
||||||
|
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
||||||
|
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
*/ |
||||||
|
|
||||||
|
|
||||||
|
package org.kde.necessitas.ministro; |
||||||
|
|
||||||
|
import org.kde.necessitas.ministro.IMinistroCallback; |
||||||
|
|
||||||
|
interface IMinistro |
||||||
|
{ |
||||||
|
/** |
||||||
|
* Check/download required libs to run the application |
||||||
|
* |
||||||
|
* param callback - interface used by Minsitro service to notify the client when the loader is ready |
||||||
|
* param parameters |
||||||
|
* parameters fields: |
||||||
|
* * Key Name Key type Explanations |
||||||
|
* "sources" StringArray Sources list from where Ministro will download the libs. Make sure you are using ONLY secure locations. |
||||||
|
* "repository" String Overwrites the default Ministro repository. Possible values: default, stable, testing and unstable |
||||||
|
* "required.modules" StringArray Required modules by your application |
||||||
|
* "application.title" String Application name, used to show more informations to user |
||||||
|
* "qt.provider" String Qt libs provider, currently only "necessitas" is supported. |
||||||
|
* "minimum.ministro.api" Integer Minimum Ministro API level, used to check if Ministro service compatible with your application. Current API Level is 3 ! |
||||||
|
* "minimum.qt.version" Integer Minimim Qt version (e.g. 0x040800, which means Qt 4.8.0, check http://qt-project.org/doc/qt-4.8/qtglobal.html#QT_VERSION)! |
||||||
|
*/ |
||||||
|
void requestLoader(in IMinistroCallback callback, in Bundle parameters); |
||||||
|
} |
@ -0,0 +1,65 @@ |
|||||||
|
/* |
||||||
|
Copyright (c) 2011-2013, BogDan Vatra <bogdan@kde.org> |
||||||
|
Contact: http://www.qt.io/licensing/ |
||||||
|
|
||||||
|
Commercial License Usage |
||||||
|
Licensees holding valid commercial Qt licenses may use this file in |
||||||
|
accordance with the commercial license agreement provided with the |
||||||
|
Software or, alternatively, in accordance with the terms contained in |
||||||
|
a written agreement between you and The Qt Company. For licensing terms |
||||||
|
and conditions see http://www.qt.io/terms-conditions. For further |
||||||
|
information use the contact form at http://www.qt.io/contact-us. |
||||||
|
|
||||||
|
BSD License Usage |
||||||
|
Alternatively, this file may be used under the BSD license as follows: |
||||||
|
Redistribution and use in source and binary forms, with or without |
||||||
|
modification, are permitted provided that the following conditions |
||||||
|
are met: |
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright |
||||||
|
notice, this list of conditions and the following disclaimer. |
||||||
|
2. Redistributions in binary form must reproduce the above copyright |
||||||
|
notice, this list of conditions and the following disclaimer in the |
||||||
|
documentation and/or other materials provided with the distribution. |
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
||||||
|
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||||
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
||||||
|
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
||||||
|
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
||||||
|
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.kde.necessitas.ministro; |
||||||
|
|
||||||
|
oneway interface IMinistroCallback { |
||||||
|
/** |
||||||
|
* This method is called by the Ministro service back into the application which |
||||||
|
* implements this interface. |
||||||
|
* |
||||||
|
* param in - loaderParams |
||||||
|
* loaderParams fields: |
||||||
|
* * Key Name Key type Explanations |
||||||
|
* * "error.code" Integer See below |
||||||
|
* * "error.message" String Missing if no error, otherwise will contain the error message translated into phone language where available. |
||||||
|
* * "dex.path" String The list of jar/apk files containing classes and resources, needed to be passed to application DexClassLoader |
||||||
|
* * "lib.path" String The list of directories containing native libraries; may be missing, needed to be passed to application DexClassLoader |
||||||
|
* * "loader.class.name" String Loader class name. |
||||||
|
* |
||||||
|
* "error.code" field possible errors: |
||||||
|
* - 0 no error. |
||||||
|
* - 1 incompatible Ministro version. Ministro needs to be upgraded. |
||||||
|
* - 2 not all modules could be satisfy. |
||||||
|
* - 3 invalid parameters |
||||||
|
* - 4 invalid qt version |
||||||
|
* - 5 download canceled |
||||||
|
* |
||||||
|
* The parameter contains additional fields which are used by the loader to start your application, so it must be passed to the loader. |
||||||
|
*/ |
||||||
|
|
||||||
|
void loaderReady(in Bundle loaderParams); |
||||||
|
} |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,159 @@ |
|||||||
|
/* |
||||||
|
Copyright (c) 2012-2013, BogDan Vatra <bogdan@kde.org> |
||||||
|
Contact: http://www.qt.io/licensing/
|
||||||
|
|
||||||
|
Commercial License Usage |
||||||
|
Licensees holding valid commercial Qt licenses may use this file in |
||||||
|
accordance with the commercial license agreement provided with the |
||||||
|
Software or, alternatively, in accordance with the terms contained in |
||||||
|
a written agreement between you and The Qt Company. For licensing terms |
||||||
|
and conditions see http://www.qt.io/terms-conditions. For further
|
||||||
|
information use the contact form at http://www.qt.io/contact-us.
|
||||||
|
|
||||||
|
BSD License Usage |
||||||
|
Alternatively, this file may be used under the BSD license as follows: |
||||||
|
Redistribution and use in source and binary forms, with or without |
||||||
|
modification, are permitted provided that the following conditions |
||||||
|
are met: |
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright |
||||||
|
notice, this list of conditions and the following disclaimer. |
||||||
|
2. Redistributions in binary form must reproduce the above copyright |
||||||
|
notice, this list of conditions and the following disclaimer in the |
||||||
|
documentation and/or other materials provided with the distribution. |
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
||||||
|
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||||
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
||||||
|
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
||||||
|
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
||||||
|
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.qtproject.qt5.android.bindings; |
||||||
|
|
||||||
|
import java.lang.reflect.Field; |
||||||
|
import java.lang.reflect.Method; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.HashMap; |
||||||
|
|
||||||
|
import android.app.Application; |
||||||
|
|
||||||
|
public class QtApplication extends Application |
||||||
|
{ |
||||||
|
public final static String QtTAG = "Qt"; |
||||||
|
public static Object m_delegateObject = null; |
||||||
|
public static HashMap<String, ArrayList<Method>> m_delegateMethods= new HashMap<String, ArrayList<Method>>(); |
||||||
|
public static Method dispatchKeyEvent = null; |
||||||
|
public static Method dispatchPopulateAccessibilityEvent = null; |
||||||
|
public static Method dispatchTouchEvent = null; |
||||||
|
public static Method dispatchTrackballEvent = null; |
||||||
|
public static Method onKeyDown = null; |
||||||
|
public static Method onKeyMultiple = null; |
||||||
|
public static Method onKeyUp = null; |
||||||
|
public static Method onTouchEvent = null; |
||||||
|
public static Method onTrackballEvent = null; |
||||||
|
public static Method onActivityResult = null; |
||||||
|
public static Method onCreate = null; |
||||||
|
public static Method onKeyLongPress = null; |
||||||
|
public static Method dispatchKeyShortcutEvent = null; |
||||||
|
public static Method onKeyShortcut = null; |
||||||
|
public static Method dispatchGenericMotionEvent = null; |
||||||
|
public static Method onGenericMotionEvent = null; |
||||||
|
|
||||||
|
public static void setQtActivityDelegate(Object listener) |
||||||
|
{ |
||||||
|
QtApplication.m_delegateObject = listener; |
||||||
|
|
||||||
|
ArrayList<Method> delegateMethods = new ArrayList<Method>(); |
||||||
|
for (Method m : listener.getClass().getMethods()) { |
||||||
|
if (m.getDeclaringClass().getName().startsWith("org.qtproject.qt5.android")) |
||||||
|
delegateMethods.add(m); |
||||||
|
} |
||||||
|
|
||||||
|
ArrayList<Field> applicationFields = new ArrayList<Field>(); |
||||||
|
for (Field f : QtApplication.class.getFields()) { |
||||||
|
if (f.getDeclaringClass().getName().equals(QtApplication.class.getName())) |
||||||
|
applicationFields.add(f); |
||||||
|
} |
||||||
|
|
||||||
|
for (Method delegateMethod : delegateMethods) { |
||||||
|
try { |
||||||
|
QtActivity.class.getDeclaredMethod(delegateMethod.getName(), delegateMethod.getParameterTypes()); |
||||||
|
if (QtApplication.m_delegateMethods.containsKey(delegateMethod.getName())) { |
||||||
|
QtApplication.m_delegateMethods.get(delegateMethod.getName()).add(delegateMethod); |
||||||
|
} else { |
||||||
|
ArrayList<Method> delegateSet = new ArrayList<Method>(); |
||||||
|
delegateSet.add(delegateMethod); |
||||||
|
QtApplication.m_delegateMethods.put(delegateMethod.getName(), delegateSet); |
||||||
|
} |
||||||
|
for (Field applicationField:applicationFields) { |
||||||
|
if (applicationField.getName().equals(delegateMethod.getName())) { |
||||||
|
try { |
||||||
|
applicationField.set(null, delegateMethod); |
||||||
|
} catch (Exception e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} catch (Exception e) { |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void onTerminate() { |
||||||
|
if (m_delegateObject != null && m_delegateMethods.containsKey("onTerminate")) |
||||||
|
invokeDelegateMethod(m_delegateMethods.get("onTerminate").get(0)); |
||||||
|
super.onTerminate(); |
||||||
|
} |
||||||
|
|
||||||
|
public static class InvokeResult |
||||||
|
{ |
||||||
|
public boolean invoked = false; |
||||||
|
public Object methodReturns = null; |
||||||
|
} |
||||||
|
|
||||||
|
private static int stackDeep=-1; |
||||||
|
public static InvokeResult invokeDelegate(Object... args) |
||||||
|
{ |
||||||
|
InvokeResult result = new InvokeResult(); |
||||||
|
if (m_delegateObject == null) |
||||||
|
return result; |
||||||
|
StackTraceElement[] elements = Thread.currentThread().getStackTrace(); |
||||||
|
if (-1 == stackDeep) { |
||||||
|
String activityClassName = QtActivity.class.getCanonicalName(); |
||||||
|
for (int it=0;it<elements.length;it++) |
||||||
|
if (elements[it].getClassName().equals(activityClassName)) { |
||||||
|
stackDeep = it; |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
final String methodName=elements[stackDeep].getMethodName(); |
||||||
|
if (-1 == stackDeep || !m_delegateMethods.containsKey(methodName)) |
||||||
|
return result; |
||||||
|
|
||||||
|
for (Method m : m_delegateMethods.get(methodName)) { |
||||||
|
if (m.getParameterTypes().length == args.length) { |
||||||
|
result.methodReturns = invokeDelegateMethod(m, args); |
||||||
|
result.invoked = true; |
||||||
|
return result; |
||||||
|
} |
||||||
|
} |
||||||
|
return result; |
||||||
|
} |
||||||
|
|
||||||
|
public static Object invokeDelegateMethod(Method m, Object... args) |
||||||
|
{ |
||||||
|
try { |
||||||
|
return m.invoke(m_delegateObject, args); |
||||||
|
} catch (Exception e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue