summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBogDan Vatra <bog_dan_ro@yahoo.com>2011-10-13 12:36:42 +0300
committerBogDan Vatra <bog_dan_ro@yahoo.com>2011-10-13 12:36:42 +0300
commit1f6ca2cfc78f08a512cfac026481174669732383 (patch)
tree55eb1ab5720d931c72d794ea67f35cae1779f7aa
parent5853d88303e1d93beb2e93be36ca34384bcd7662 (diff)
Sync Ministro with new java part
-rw-r--r--Ministro/AndroidManifest.xml10
-rw-r--r--Ministro/res/drawable/logo.pngbin0 -> 427576 bytes
-rw-r--r--Ministro/res/values-ro/strings.xml2
-rw-r--r--Ministro/res/values/strings.xml2
-rw-r--r--Ministro/src/org/kde/necessitas/ministro/IMinistro.aidl27
-rw-r--r--Ministro/src/org/kde/necessitas/ministro/IMinistroCallback.aidl5
-rw-r--r--Ministro/src/org/kde/necessitas/ministro/MinistroService.java58
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
new file mode 100644
index 0000000..8366c4f
--- /dev/null
+++ b/Ministro/res/drawable/logo.png
Binary files 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 @@
<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
+}