diff options
author | BogDan Vatra <bog_dan_ro@yahoo.com> | 2011-10-13 12:36:42 +0300 |
---|---|---|
committer | BogDan Vatra <bog_dan_ro@yahoo.com> | 2011-10-13 12:36:42 +0300 |
commit | 1f6ca2cfc78f08a512cfac026481174669732383 (patch) | |
tree | 55eb1ab5720d931c72d794ea67f35cae1779f7aa | |
parent | 5853d88303e1d93beb2e93be36ca34384bcd7662 (diff) |
Sync Ministro with new java part
-rw-r--r-- | Ministro/AndroidManifest.xml | 10 | ||||
-rw-r--r-- | Ministro/res/drawable/logo.png | bin | 0 -> 427576 bytes | |||
-rw-r--r-- | Ministro/res/values-ro/strings.xml | 2 | ||||
-rw-r--r-- | Ministro/res/values/strings.xml | 2 | ||||
-rw-r--r-- | Ministro/src/org/kde/necessitas/ministro/IMinistro.aidl | 27 | ||||
-rw-r--r-- | Ministro/src/org/kde/necessitas/ministro/IMinistroCallback.aidl | 5 | ||||
-rw-r--r-- | Ministro/src/org/kde/necessitas/ministro/MinistroService.java | 58 |
7 files changed, 73 insertions, 31 deletions
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 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" - android:versionCode="2" android:versionName="2.0" package="org.kde.necessitas.ministro"> + package="org.kde.necessitas.ministro" android:versionCode="3" android:versionName="3.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MinistroActivity" - android:label="@string/app_name" - android:configChanges="orientation|locale|fontScale|keyboard|keyboardHidden" > + android:label="@string/app_name" + android:configChanges="orientation|locale|fontScale|keyboard|keyboardHidden" > <intent-filter> <action android:name="android.intent.action.DEFAULT" /> <category android:name="android.intent.category.VIEW" /> </intent-filter> </activity> <activity android:name="org.kde.necessitas.ministro.MinistroConfigActivity" - android:label="@string/app_name"> + android:label="@string/app_name"> <intent-filter> <action android:name="org.kde.necessitas.ministro.MinistroConfigActivity" /> <category android:name="android.intent.category.VIEW" /> @@ -19,7 +19,7 @@ </activity> <service android:name="org.kde.necessitas.ministro.MinistroService"> <intent-filter> - <action android:name="org.kde.necessitas.ministro" /> + <action android:name="org.kde.necessitas.ministro.IMinistro" /> </intent-filter> </service> </application> diff --git a/Ministro/res/drawable/logo.png b/Ministro/res/drawable/logo.png Binary files differnew file mode 100644 index 0000000..8366c4f --- /dev/null +++ b/Ministro/res/drawable/logo.png 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 @@ <string name="ministro_repository_changed_msg">Depozitul Ministro s-a schimbat</string> <string name="ministro_update_msg">Actualizare Ministro</string> <string name="ministro_repository_changed_tap_msg">Ministro depozitul sa schimbat, apăsaţi pentru actualizare.</string> + <string name="invalid_parameters">Parametrii sunt invalizi</string> + <string name="dependencies_error">Ministro nu poate găsi toate dependenţele aplicaţiei</string> </resources> 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 @@ <string name="ministro_repository_changed_msg">Ministro repository changed</string> <string name="ministro_update_msg">Ministro update</string> <string name="ministro_repository_changed_tap_msg">Ministro repository changed tap to update.</string> + <string name="invalid_parameters">Invalid parameters</string> + <string name="dependencies_error">Ministro can not satisfy your application dependencies</string> </resources> 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 (ministroApiLevel<MINISTRO_MIN_API_LEVEL || ministroApiLevel>MINISTRO_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 <code>true</code> if the given module and all its dependencies are readily available. */ private boolean addModules(String module, ArrayList<Module> modules - , ArrayList<String> notFoundModules, Set<String> jars) + , ArrayList<String> notFoundModules, Set<String> 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 +} |