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 c2d7a1e9f9..c122381785 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 @@ -33,7 +33,7 @@ public class KMKeyboardDownloaderActivity extends AppCompatActivity { public static final String ARG_MODEL_ID = "KMKeyboardActivity.modelID"; public static final String ARG_MODEL_NAME = "KMKeyboardActivity.modelName"; public static final String ARG_MODEL_URL = "KMKeyboardActivity.modelURL"; - public static final String ARG_MODEL_CUSTOM_HELP_LINK = "KMKeyboardActivity.customHelpLink"; + public static final String ARG_CUSTOM_HELP_LINK = "KMKeyboardActivity.customHelpLink"; // custom keyboard public static final String ARG_KEYBOARD = "KMKeyboardActivity.keyboard"; diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/cloud/CloudDataJsonUtil.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/cloud/CloudDataJsonUtil.java index a6070b6fc2..0a83d73733 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/cloud/CloudDataJsonUtil.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/cloud/CloudDataJsonUtil.java @@ -37,7 +37,7 @@ public class CloudDataJsonUtil { public static HashMap createKeyboardInfoMap(String aPackageId,String aLanguageId, String aLanguageName, String aKeyboardId, String aKeyboardName, String aKeyboardVersion, String anIsCustomKeyboard, - String aFont, String aOskFont) + String aFont, String aOskFont, String aCustomHelpLink) { HashMap keyboardInfo = new HashMap(); keyboardInfo.put(KMManager.KMKey_PackageID, aPackageId); @@ -48,8 +48,12 @@ public class CloudDataJsonUtil { keyboardInfo.put(KMManager.KMKey_KeyboardVersion, aKeyboardVersion); keyboardInfo.put(KMManager.KMKey_CustomKeyboard, anIsCustomKeyboard); keyboardInfo.put(KMManager.KMKey_Font, aFont); - if (aOskFont != null) + if (aOskFont != null) { keyboardInfo.put(KMManager.KMKey_OskFont, aOskFont); + } + if (aCustomHelpLink != null) { + keyboardInfo.put(KMManager.KMKey_CustomHelpLink, aCustomHelpLink); + } return keyboardInfo; } @@ -81,9 +85,10 @@ public class CloudDataJsonUtil { String kbName = keyboardJSON.getString(KMManager.KMKey_Name); String kbVersion = keyboardJSON.optString(KMManager.KMKey_KeyboardVersion, "1.0"); String kbFont = keyboardJSON.optString(KMManager.KMKey_Font, ""); + String customHelpLink = keyboardJSON.optString(KMManager.KMKey_CustomHelpLink, null); //String kbKey = String.format("%s_%s", langID, kbID); - HashMap hashMap = createKeyboardInfoMap(pkgID,langID,langName,kbID,kbName,kbVersion,isCustom,kbFont,null); + HashMap hashMap = createKeyboardInfoMap(pkgID,langID,langName,kbID,kbName,kbVersion,isCustom,kbFont,null, customHelpLink); // if (keyboardModifiedDates.get(kbID) == null) { diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/cloud/impl/CloudKeyboardMetaDataDownloadCallback.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/cloud/impl/CloudKeyboardMetaDataDownloadCallback.java index 07c7fb5f9c..4938057056 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/cloud/impl/CloudKeyboardMetaDataDownloadCallback.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/cloud/impl/CloudKeyboardMetaDataDownloadCallback.java @@ -271,12 +271,13 @@ public class CloudKeyboardMetaDataDownloadCallback implements ICloudDownloadCall String _font = _keyboard.optString(KMManager.KMKey_Font); String _oskFont = _keyboard.optString(KMManager.KMKey_OskFont); + String _customHelpLink = _keyboard.optString(KMManager.KMKey_CustomHelpLink, null); theKbData.additionalDownloadid = CloudKeyboardDataDownloadCallback.createDownloadId(_key_id); theKbData.keyboardInfo = CloudDataJsonUtil .createKeyboardInfoMap( - _pkgID, _lang_id, _langName, _key_id, _kbName, _kbVersion, _kbIsCustom, _font, _oskFont); + _pkgID, _lang_id, _langName, _key_id, _kbName, _kbVersion, _kbIsCustom, _font, _oskFont, _customHelpLink); theKbData.additionalDownloads = urls; } catch(JSONException _e) diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/Keyboard.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/Keyboard.java index fa088416a8..bed03bbbb4 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/Keyboard.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/Keyboard.java @@ -5,6 +5,7 @@ import android.os.Bundle; import com.tavultesoft.kmea.KMKeyboardDownloaderActivity; import com.tavultesoft.kmea.KMManager; import com.tavultesoft.kmea.KeyboardPickerActivity; +import com.tavultesoft.kmea.util.MapCompat; import java.io.Serializable; import java.util.Map; @@ -50,6 +51,13 @@ public class Keyboard implements Serializable, LanguageResource { return this.map.get(KMManager.KMKey_KeyboardName); } + public String getCustomHelpLink() { + if (this.map.containsKey(KMManager.KMKey_CustomHelpLink)) { + return this.map.get(KMManager.KMKey_CustomHelpLink); + } + return null; + } + public String getVersion() { return this.map.get(KMManager.KMKey_KeyboardVersion); } @@ -60,6 +68,7 @@ public class Keyboard implements Serializable, LanguageResource { public Bundle buildDownloadBundle() { Bundle bundle = new Bundle(); + bundle.putString(KMKeyboardDownloaderActivity.ARG_PKG_ID, getPackage()); bundle.putString(KMKeyboardDownloaderActivity.ARG_KB_ID, getResourceId()); bundle.putString(KMKeyboardDownloaderActivity.ARG_LANG_ID, getLanguageCode()); @@ -70,9 +79,13 @@ public class Keyboard implements Serializable, LanguageResource { if(isCustom == null) { isCustom = "N"; } - bundle.putBoolean(KMKeyboardDownloaderActivity.ARG_IS_CUSTOM, isCustom.equals("Y")); + String customHelpLink = map.get(KMManager.KMKey_CustomHelpLink); + if (customHelpLink != null) { + bundle.putString(KMKeyboardDownloaderActivity.ARG_CUSTOM_HELP_LINK, getCustomHelpLink()); + } + return bundle; } diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/LanguageResource.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/LanguageResource.java index 635c76580b..fb687637a9 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/LanguageResource.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/LanguageResource.java @@ -9,6 +9,7 @@ public interface LanguageResource { String getLanguageName(); String getVersion(); String getPackage(); + String getCustomHelpLink(); Bundle buildDownloadBundle(); } diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/LexicalModel.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/LexicalModel.java index 2dddca0ddb..876013eb56 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/LexicalModel.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/LexicalModel.java @@ -4,6 +4,7 @@ import android.os.Bundle; import com.tavultesoft.kmea.KMKeyboardDownloaderActivity; import com.tavultesoft.kmea.KMManager; +import com.tavultesoft.kmea.util.MapCompat; import java.io.Serializable; import java.util.Map; @@ -52,6 +53,13 @@ public class LexicalModel implements Serializable, LanguageResource { return this.map.get(KMManager.KMKey_PackageID); } + public String getCustomHelpLink() { + if (this.map.containsKey(KMManager.KMKey_CustomHelpLink)) { + return this.map.get(KMManager.KMKey_CustomHelpLink); + } + return null; + } + public Bundle buildDownloadBundle() { Bundle bundle = new Bundle(); @@ -64,8 +72,6 @@ public class LexicalModel implements Serializable, LanguageResource { return null; } - String customHelpLink = map.get(KMManager.KMKey_CustomHelpLink); - bundle.putString(KMKeyboardDownloaderActivity.ARG_PKG_ID, getPackage()); bundle.putString(KMKeyboardDownloaderActivity.ARG_MODEL_ID, getResourceId()); bundle.putString(KMKeyboardDownloaderActivity.ARG_LANG_ID, getLanguageCode()); @@ -73,7 +79,11 @@ public class LexicalModel implements Serializable, LanguageResource { bundle.putString(KMKeyboardDownloaderActivity.ARG_LANG_NAME, getLanguageName()); bundle.putBoolean(KMKeyboardDownloaderActivity.ARG_IS_CUSTOM, false); bundle.putString(KMKeyboardDownloaderActivity.ARG_MODEL_URL, modelURL); - bundle.putString(KMKeyboardDownloaderActivity.ARG_MODEL_CUSTOM_HELP_LINK, customHelpLink); + + String customHelpLink = map.get(KMManager.KMKey_CustomHelpLink); + if (customHelpLink != null) { + bundle.putString(KMKeyboardDownloaderActivity.ARG_CUSTOM_HELP_LINK, customHelpLink); + } return bundle; } diff --git a/android/KMEA/app/src/test/java/com/tavultesoft/kmea/cloud/CloudDataJsonUtilTest.java b/android/KMEA/app/src/test/java/com/tavultesoft/kmea/cloud/CloudDataJsonUtilTest.java index dc41a7fdaa..906f965bad 100644 --- a/android/KMEA/app/src/test/java/com/tavultesoft/kmea/cloud/CloudDataJsonUtilTest.java +++ b/android/KMEA/app/src/test/java/com/tavultesoft/kmea/cloud/CloudDataJsonUtilTest.java @@ -30,6 +30,7 @@ public class CloudDataJsonUtilTest { private final String customKeyboard = "N"; private final String aFont = "AndikaAfr"; private final String oskFont = aFont; + private final String customHelpLink = ""; @Before public void initializeTestPackage() { @@ -40,7 +41,7 @@ public class CloudDataJsonUtilTest { public void shouldLowercaseLanguageID() { // Test createKeyboardInfoMap() used by processKeyboardJSON() HashMap kbInfo = CloudDataJsonUtil.createKeyboardInfoMap( - pkgID, langID, langName, keyboardID, keyboardName, keyboardVersion, customKeyboard, aFont, oskFont); + pkgID, langID, langName, keyboardID, keyboardName, keyboardVersion, customKeyboard, aFont, oskFont, customHelpLink); Assert.assertEquals(langID.toLowerCase(), kbInfo.get(KMManager.KMKey_LanguageID)); // Test processLexicalModelJSON() diff --git a/android/history.md b/android/history.md index f06252b5a4..d571eb5214 100644 --- a/android/history.md +++ b/android/history.md @@ -22,6 +22,7 @@ * Fix memory issues during build process (#2361) * Fix crashes when parsing JSON data from Cloud (#2393) * Improve compatibility with applications such as Gmail, Chrome that do not conform to the Android input APIs (#2382, #2376) + * Propagate custom help links (#2448) ## 2019-12-12 12.0.4214 stable * Bug fix: diff --git a/web/source/kmwdom.ts b/web/source/kmwdom.ts index ad4c05f533..370e663a98 100644 --- a/web/source/kmwdom.ts +++ b/web/source/kmwdom.ts @@ -1631,6 +1631,10 @@ namespace com.keyman { // Display the OSK (again) if enabled, in order to set its position correctly after // adding the UI to the page this.keyman.osk._Show(); + } else if(this.keyman.isEmbedded) { + // UI modules aren't utilized in embedded mode. There's nothing to init, so we simply + // return instead of waiting for a UI module that will never come. + return; } else { window.setTimeout(this.initializeUI.bind(this),1000); }