diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMKeyboardDownloaderActivity.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMKeyboardDownloaderActivity.java
index d2fe30aa72..ce42006102 100644
--- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMKeyboardDownloaderActivity.java
+++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMKeyboardDownloaderActivity.java
@@ -169,6 +169,7 @@ public class KMKeyboardDownloaderActivity extends AppCompatActivity {
* Used by the download method to handle asynchronous downloading and evaluation of
* packages and keyboards.
*/
+ @Deprecated
static class DownloadTask extends AsyncTask {
static class Result {
public final Integer kbdResult;
@@ -539,7 +540,12 @@ public class KMKeyboardDownloaderActivity extends AppCompatActivity {
new DownloadTask(context, showProgressDialog, aDownloadOnlyLexicalModel).execute();
}
- public static void downloadUsingDownloadManager(final Context context,
+ /**
+ * Download in keyboards and lexical model using download manager.
+ * @param context the context
+ * @param aDownloadOnlyLexicalModel is lexical model download
+ */
+ private static void downloadUsingDownloadManager(final Context context,
final boolean aDownloadOnlyLexicalModel)
{
if(aDownloadOnlyLexicalModel)
@@ -552,19 +558,59 @@ public class KMKeyboardDownloaderActivity extends AppCompatActivity {
}
}
- private static void downloadKeyboardUsingDownloadManager(Context context) {
-
-
-
+ /**
+ * prepare and execute keyboard download using downloadmanager.
+ * @param context the context
+ */
+ private static void downloadKeyboardUsingDownloadManager(Context context)
+ {
if (pkgID == null || pkgID.trim().isEmpty() ||
(!isCustom && (langID == null || langID.trim().isEmpty() || kbID == null || kbID.trim().isEmpty()))) {
throw new IllegalStateException("Invalid keyboard");
}
- String deviceType = CloudDataJsonUtil.getDeviceTypeForCloudQuery(context);
+
+ List cloudQueries = getPrepareCloudQueriesForKeyboardDownload(context);
+
+ String _downloadid= CloudKeyboardMetaDataDownloadCallback.createDownloadId(langID , kbID);
+
+ if( CloudDownloadMgr.getInstance().alreadyDownloadingData(_downloadid)
+ || CloudDownloadMgr.getInstance().alreadyDownloadingData(
+ CloudKeyboardDataDownloadCallback.createDownloadId(kbID)))
+ {
+ Toast.makeText(context,
+ context.getString(R.string.keyboard_download_is_running_in_background),
+ Toast.LENGTH_SHORT).show();
+ }
+ else
+ {
+ CloudKeyboardMetaDataDownloadCallback _callback = new CloudKeyboardMetaDataDownloadCallback();
+ _callback.setDownloadEventListeners(kbDownloadEventListeners);
+
+ Toast.makeText(context,
+ context.getString(R.string.keyboard_download_start_in_background),
+ Toast.LENGTH_SHORT).show();
+
+ CloudDownloadMgr.getInstance().executeAsDownload(
+ context, _downloadid, null, _callback,
+ cloudQueries.toArray(new CloudApiTypes.CloudApiParam[0]));
+ }
+
+ ((AppCompatActivity) context).finish();
+ }
+
+ /**
+ * Prepare the cloud queries for keyboard metadata download.
+ * @param context the context
+ * @return the result
+ */
+ private static List getPrepareCloudQueriesForKeyboardDownload(Context context)
+ {
List cloudQueries = new ArrayList<>();
+ String deviceType = CloudDataJsonUtil.getDeviceTypeForCloudQuery(context);
+
if (isCustom) {
//TODO: will end up in an exception during download???
cloudQueries.add(new CloudApiTypes.CloudApiParam(
@@ -588,34 +634,13 @@ public class KMKeyboardDownloaderActivity extends AppCompatActivity {
CloudApiTypes.ApiTarget.KeyBoardLexicalModels, _remoteLexicalModelUrl)
.setType(CloudApiTypes.JSONType.Array));
}
-
- String _downloadid= "metadata_" + langID + "_" + kbID;
-
- if( CloudDownloadMgr.getInstance().alreadyDownloadingData(_downloadid)
- || CloudDownloadMgr.getInstance().alreadyDownloadingData(
- CloudKeyboardDataDownloadCallback.createDownloadId(kbID)))
- {
- Toast.makeText(context,
- context.getString(R.string.keyboard_download_is_running_in_background),
- Toast.LENGTH_SHORT).show();
- }
- else
- {
- CloudKeyboardMetaDataDownloadCallback _callback = new CloudKeyboardMetaDataDownloadCallback();
- _callback.setDownloadEventListeners(kbDownloadEventListeners);
-
- Toast.makeText(context,
- context.getString(R.string.keyboard_download_start_in_background),
- Toast.LENGTH_SHORT).show();
-
- CloudDownloadMgr.getInstance().executeAsDownload(
- context, _downloadid, null, _callback,
- cloudQueries.toArray(new CloudApiTypes.CloudApiParam[0]));
- }
-
- ((AppCompatActivity) context).finish();
+ return cloudQueries;
}
+ /**
+ * prepare and execute lexical model download using downloadmanager.
+ * @param context the context
+ */
private static void downloadLexicalModelUsingDownloadManager(Context context) {
diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/CloudDataJsonUtil.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/CloudDataJsonUtil.java
index 684f58aa1c..274c130aa4 100644
--- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/CloudDataJsonUtil.java
+++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/CloudDataJsonUtil.java
@@ -237,6 +237,11 @@ public class CloudDataJsonUtil {
return new File(context.getCacheDir(), jsonLexicalCacheFilename);
}
+ /**
+ * retrieve a json object from a downloaded file.
+ * @param aDownload the download
+ * @return the result
+ */
public static CloudApiTypes.CloudApiReturns retrieveJsonFromDownload( CloudApiTypes.SingleCloudDownload aDownload)
{
JSONParser jsonParser = new JSONParser();
@@ -397,6 +402,12 @@ public class CloudDataJsonUtil {
return keyboard;
}
+
+ /**
+ * select device type for api queries.
+ * @param aContext a context
+ * @return the result
+ */
public static String getDeviceTypeForCloudQuery(Context aContext)
{
String deviceType = aContext.getString(R.string.device_type);
diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/CloudKeyboardDataDownloadCallback.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/CloudKeyboardDataDownloadCallback.java
index 5739cc28da..36b144d26a 100644
--- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/CloudKeyboardDataDownloadCallback.java
+++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/CloudKeyboardDataDownloadCallback.java
@@ -15,6 +15,10 @@ import java.util.HashMap;
import static com.tavultesoft.kmea.KMManager.KMDefault_UndefinedPackageID;
+/**
+ * Install keyboard data, when download is finished.
+ * Could be keyboard packages or fonts.
+ */
public class CloudKeyboardDataDownloadCallback implements ICloudDownloadCallback<
Void, CloudKeyboardDownloadReturns>
{
@@ -26,14 +30,34 @@ public class CloudKeyboardDataDownloadCallback implements ICloudDownloadCallback
private ArrayList downloadEventListeners = new ArrayList<>();
private HashMap keyboardInfo;
+ /**
+ * Additional Cloud API parameter:
+ * Parameter to force a special destination file name during installation.
+ * Default name is the file name of the url.
+ */
public static final String PARAM_DESTINATION_FILE_NAME = "destination_file_name";
+ /**
+ * Additional Cloud API parameter:
+ * Parameter to force a special destination file name during installation.
+ * Default name is the file name of the url.
+ */
+ public static final String PARAM_PACKAGE = "package";
+
+ /**
+ * listeners to inform after installation is completed.
+ * @param aDownloadEventListeners the listeners
+ */
public void setDownloadEventListeners(ArrayList aDownloadEventListeners)
{
downloadEventListeners.clear();
downloadEventListeners.addAll(aDownloadEventListeners);
}
+ /**
+ * Keyboard meta data.
+ * @param aKeyboardInfo the keyboard
+ */
public void setKeyboardInfo(HashMap aKeyboardInfo) {
this.keyboardInfo = aKeyboardInfo;
}
@@ -56,8 +80,9 @@ public class CloudKeyboardDataDownloadCallback implements ICloudDownloadCallback
try {
+ String _pkg = _d.getCloudParams().getAdditionalProperty(PARAM_PACKAGE,String.class);
String destination = dataDir.toString() +
- File.separator + KMDefault_UndefinedPackageID + File.separator;
+ File.separator + _pkg + File.separator;
String _filename = _d.getCloudParams().getAdditionalProperty(PARAM_DESTINATION_FILE_NAME,String.class);
if (_filename==null) {
@@ -99,11 +124,13 @@ public class CloudKeyboardDataDownloadCallback implements ICloudDownloadCallback
KeyboardEventHandler.notifyListeners(downloadEventListeners, KeyboardEventHandler.EventType.KEYBOARD_DOWNLOAD_FINISHED,
keyboardInfo, aCloudResult.kbdResult);
}
-
-
-
}
+ /**
+ * create a download id for the keyboard data.
+ * @param aKeyboardId the keyboard id
+ * @return the result
+ */
public static String createDownloadId(String aKeyboardId)
{
return "keyboarddata_" + aKeyboardId;
diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/CloudKeyboardDownloadReturns.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/CloudKeyboardDownloadReturns.java
index 967d91a5ac..8aaaa21d84 100644
--- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/CloudKeyboardDownloadReturns.java
+++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/CloudKeyboardDownloadReturns.java
@@ -3,6 +3,9 @@ package com.tavultesoft.kmea.data;
import java.util.List;
import java.util.Map;
+/**
+ * key board and lexical model download result.
+ */
public class CloudKeyboardDownloadReturns {
public final Integer kbdResult;
public final List