From 1f6ca2cfc78f08a512cfac026481174669732383 Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Thu, 13 Oct 2011 12:36:42 +0300 Subject: Sync Ministro with new java part --- Ministro/AndroidManifest.xml | 10 ++-- Ministro/res/drawable/logo.png | Bin 0 -> 427576 bytes Ministro/res/values-ro/strings.xml | 2 + Ministro/res/values/strings.xml | 2 + .../src/org/kde/necessitas/ministro/IMinistro.aidl | 27 +++++----- .../kde/necessitas/ministro/IMinistroCallback.aidl | 5 +- .../kde/necessitas/ministro/MinistroService.java | 58 +++++++++++++++++---- 7 files changed, 73 insertions(+), 31 deletions(-) create mode 100644 Ministro/res/drawable/logo.png diff --git a/Ministro/AndroidManifest.xml b/Ministro/AndroidManifest.xml index 12e6a62..5084596 100644 --- a/Ministro/AndroidManifest.xml +++ b/Ministro/AndroidManifest.xml @@ -1,17 +1,17 @@ + package="org.kde.necessitas.ministro" android:versionCode="3" android:versionName="3.0"> + android:label="@string/app_name" + android:configChanges="orientation|locale|fontScale|keyboard|keyboardHidden" > + android:label="@string/app_name"> @@ -19,7 +19,7 @@ - + diff --git a/Ministro/res/drawable/logo.png b/Ministro/res/drawable/logo.png new file mode 100644 index 0000000..8366c4f Binary files /dev/null and b/Ministro/res/drawable/logo.png differ diff --git a/Ministro/res/values-ro/strings.xml b/Ministro/res/values-ro/strings.xml index 116cafb..dfa8bb0 100644 --- a/Ministro/res/values-ro/strings.xml +++ b/Ministro/res/values-ro/strings.xml @@ -17,4 +17,6 @@ Depozitul Ministro s-a schimbat Actualizare Ministro Ministro depozitul sa schimbat, apăsaţi pentru actualizare. + Parametrii sunt invalizi + Ministro nu poate găsi toate dependenţele aplicaţiei diff --git a/Ministro/res/values/strings.xml b/Ministro/res/values/strings.xml index 7194f1e..e212315 100644 --- a/Ministro/res/values/strings.xml +++ b/Ministro/res/values/strings.xml @@ -17,4 +17,6 @@ Ministro repository changed Ministro update Ministro repository changed tap to update. + Invalid parameters + Ministro can not satisfy your application dependencies diff --git a/Ministro/src/org/kde/necessitas/ministro/IMinistro.aidl b/Ministro/src/org/kde/necessitas/ministro/IMinistro.aidl index 2735e8b..c1101da 100644 --- a/Ministro/src/org/kde/necessitas/ministro/IMinistro.aidl +++ b/Ministro/src/org/kde/necessitas/ministro/IMinistro.aidl @@ -30,17 +30,18 @@ import org.kde.necessitas.ministro.IMinistroCallback; interface IMinistro { - /** - * Check/download required libs to run the application - * - * param callback - interface used by the service to notify the client when it has the libs - * param modules - Qt modules you want to check - * param appName - Application name, used to show more informations to user - * param ministroApiLevel - Ministro api level, used to check ministro service compatibility. - * Current API Level is 1 !!! - * param qtApiLevel - Necessitas api level, used to download the right platform plugin. - * Current API Level is 4 !!! - */ - - void checkModules(in IMinistroCallback callback, in String[] modules, in String appName, in int ministroApiLevel, in int qtApiLevel); +/** +* 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 +* "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 1 ! +* "minimum.qt.version" Integer Minimim Qt version (e.g. 0x040800, which means Qt 4.8.0, check http://doc.trolltech.com/4.8/qtglobal.html#QT_VERSION)! +*/ + void requestLoader(in IMinistroCallback callback, in Bundle parameters); } diff --git a/Ministro/src/org/kde/necessitas/ministro/IMinistroCallback.aidl b/Ministro/src/org/kde/necessitas/ministro/IMinistroCallback.aidl index 9922aa0..dfd3ea9 100644 --- a/Ministro/src/org/kde/necessitas/ministro/IMinistroCallback.aidl +++ b/Ministro/src/org/kde/necessitas/ministro/IMinistroCallback.aidl @@ -30,8 +30,8 @@ oneway interface IMinistroCallback { * This method is called by the Ministro service back into the application which * implements this interface. * -* param in - loader -* loader fields: +* 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. @@ -43,6 +43,7 @@ oneway interface IMinistroCallback { * - 0 no error. * - 1 incompatible Ministro version. Ministro needs to be upgraded. * - 2 not all modules could be satisfy. +* - 3 invalid parameters * * This parameter will contain additional fields which are used by the loader to start your application, so it must be passed to loader. */ diff --git a/Ministro/src/org/kde/necessitas/ministro/MinistroService.java b/Ministro/src/org/kde/necessitas/ministro/MinistroService.java index db04050..fb5df5e 100644 --- a/Ministro/src/org/kde/necessitas/ministro/MinistroService.java +++ b/Ministro/src/org/kde/necessitas/ministro/MinistroService.java @@ -53,6 +53,14 @@ public class MinistroService extends Service private static final String MINISTRO_REPOSITORY_KEY="REPOSITORY"; private static final String MINISTRO_DEFAULT_REPOSITORY="stable"; + /// Ministro server parameter keys + private static final String REQUIRED_MODULES_KEY="required.modules"; + private static final String APPLICATION_TITLE_KEY="application.title"; + private static final String QT_PROVIDER_KEY="qt.provider"; + private static final String MINIMUM_MINISTRO_API_KEY="minimum.ministro.api"; + private static final String MINIMUM_QT_VERSION_KEY="minimum.qt.version"; + /// Ministro server parameter keys + /// loader parameter keys private static final String ERROR_CODE_KEY="error.code"; private static final String ERROR_MESSAGE_KEY="error.message"; @@ -68,6 +76,7 @@ public class MinistroService extends Service private static final int EC_NO_ERROR=0; private static final int EC_INCOMPATIBLE=1; private static final int EC_NOT_FOUND=2; + private static final int EC_INVALID_PARAMETERS=3; /// loader error codes @@ -293,11 +302,10 @@ public class MinistroService extends Service return new IMinistro.Stub() { @Override - public void checkModules(IMinistroCallback callback, String[] modules - , String appName, int ministroApiLevel - , int necessitasApiLevel) throws RemoteException + public void requestLoader(IMinistroCallback callback, Bundle parameters) throws RemoteException { - checkModulesImpl(callback, modules, appName, ministroApiLevel, necessitasApiLevel); + + checkModulesImpl(callback, parameters); } }; } @@ -313,10 +321,37 @@ public class MinistroService extends Service * @param necessitasApiLevel * @throws RemoteException */ - final void checkModulesImpl(IMinistroCallback callback, String[] modules - , String appName, int ministroApiLevel - , int qtApiLevel) throws RemoteException + final void checkModulesImpl(IMinistroCallback callback, Bundle parameters) throws RemoteException { + if (!parameters.containsKey(REQUIRED_MODULES_KEY) + || !parameters.containsKey(APPLICATION_TITLE_KEY) + || !parameters.containsKey(MINIMUM_MINISTRO_API_KEY) + || !parameters.containsKey(MINIMUM_QT_VERSION_KEY)) + { + Bundle loaderParams = new Bundle(); + loaderParams.putInt(ERROR_CODE_KEY, EC_INVALID_PARAMETERS); + loaderParams.putString(ERROR_MESSAGE_KEY, getResources().getString(R.string.invalid_parameters)); + try + { + callback.loaderReady(loaderParams); + } + catch (Exception e) { + e.printStackTrace(); + } + Log.e(TAG, "Invalid parameters: " + parameters.toString()); + return; + } + int ministroApiLevel = parameters.getInt(MINIMUM_MINISTRO_API_KEY); + String[] modules = parameters.getStringArray(REQUIRED_MODULES_KEY); + String appName = parameters.getString(APPLICATION_TITLE_KEY); + + + @SuppressWarnings("unused") + int qtApiLevel = parameters.getInt(MINIMUM_QT_VERSION_KEY); // TODO check if current QT version is compatible with required version + @SuppressWarnings("unused") + String qtProvider="necessitas"; + if (parameters.containsKey(QT_PROVIDER_KEY)) + qtProvider=parameters.getString(QT_PROVIDER_KEY); // TODO add the possibility to have more than one provider if (ministroApiLevelMINISTRO_MAX_API_LEVEL) { @@ -331,7 +366,7 @@ public class MinistroService extends Service catch (Exception e) { e.printStackTrace(); } - Log.w(TAG, "Ministro cannot satisfy API version: " + ministroApiLevel); + Log.e(TAG, "Ministro cannot satisfy API version: " + ministroApiLevel); return; } @@ -483,6 +518,8 @@ public class MinistroService extends Service params.putString(ENVIRONMENT_VARIABLES_KEY, m_environmentVariables); params.putString(APPLICATION_PARAMETERS_KEY, m_applicationParams); params.putInt(ERROR_CODE_KEY, res?EC_NO_ERROR:EC_NOT_FOUND); + if (!res) + params.putString(ERROR_MESSAGE_KEY, getResources().getString(R.string.dependencies_error)); return params; } @@ -511,7 +548,7 @@ public class MinistroService extends Service * @return true if the given module and all its dependencies are readily available. */ private boolean addModules(String module, ArrayList modules - , ArrayList notFoundModules, Set jars) + , ArrayList notFoundModules, Set jars) { // Module argument is not supposed to be null at this point. if (modules == null) @@ -599,5 +636,4 @@ public class MinistroService extends Service String name; int level; } - -} \ No newline at end of file +} -- cgit v1.2.3