diff options
author | 2012-04-11 21:29:53 +0900 | |
---|---|---|
committer | 2012-04-12 13:05:31 +0900 | |
commit | cec8552b18fd74517512a43a8d75f64e64bd12c3 (patch) | |
tree | fd96e4ae50d35cc78733d117ac699fb612b6dd9e /java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java | |
parent | fed44d08d886a0b3d37cd28096c602d55b824743 (diff) | |
download | latinime-cec8552b18fd74517512a43a8d75f64e64bd12c3.tar.gz latinime-cec8552b18fd74517512a43a8d75f64e64bd12c3.tar.xz latinime-cec8552b18fd74517512a43a8d75f64e64bd12c3.zip |
Pass a parameter to the dict pack if we don't have a default dict
Also, optimize quite a bit the code that decides whether we have
a default dict or not.
Bug: 5705834
Change-Id: Ied20fbcbbc42cbe8c01759d11b1804d1156c6960
Diffstat (limited to 'java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java index 311d3dc9d..e4d081b56 100644 --- a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java +++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java @@ -53,17 +53,23 @@ public class BinaryDictionaryFileDumper { private static final String DICTIONARY_PROJECTION[] = { "id" }; + public static final String QUERY_PARAMETER_MAY_PROMPT_USER = "mayPrompt"; + public static final String QUERY_PARAMETER_TRUE = "true"; + // Prevents this class to be accidentally instantiated. private BinaryDictionaryFileDumper() { } /** - * Return for a given locale or dictionary id the provider URI to get the dictionary. + * Returns a URI builder pointing to the dictionary pack. + * + * This creates a URI builder able to build a URI pointing to the dictionary + * pack content provider for a specific dictionary id. */ - private static Uri getProviderUri(String path) { + private static Uri.Builder getProviderUriBuilder(final String path) { return new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT) .authority(BinaryDictionary.DICTIONARY_PACK_AUTHORITY).appendPath( - path).build(); + path); } /** @@ -71,9 +77,13 @@ public class BinaryDictionaryFileDumper { * available to copy into Latin IME. */ private static List<WordListInfo> getWordListWordListInfos(final Locale locale, - final Context context) { + final Context context, final boolean hasDefaultWordList) { final ContentResolver resolver = context.getContentResolver(); - final Uri dictionaryPackUri = getProviderUri(locale.toString()); + final Uri.Builder builder = getProviderUriBuilder(locale.toString()); + if (!hasDefaultWordList) { + builder.appendQueryParameter(QUERY_PARAMETER_MAY_PROMPT_USER, QUERY_PARAMETER_TRUE); + } + final Uri dictionaryPackUri = builder.build(); final Cursor c = resolver.query(dictionaryPackUri, DICTIONARY_PROJECTION, null, null, null); if (null == c) return Collections.<WordListInfo>emptyList(); @@ -132,7 +142,7 @@ public class BinaryDictionaryFileDumper { final int MODE_MIN = COMPRESSED_CRYPTED_COMPRESSED; final int MODE_MAX = NONE; - final Uri wordListUri = getProviderUri(id); + final Uri wordListUri = getProviderUriBuilder(id).build(); final String outputFileName = BinaryDictionaryGetter.getCacheFileName(id, locale, context); for (int mode = MODE_MIN; mode <= MODE_MAX; ++mode) { @@ -231,9 +241,10 @@ public class BinaryDictionaryFileDumper { * @throw IOException if the provider-returned data could not be read. */ public static List<AssetFileAddress> cacheWordListsFromContentProvider(final Locale locale, - final Context context) { + final Context context, final boolean hasDefaultWordList) { final ContentResolver resolver = context.getContentResolver(); - final List<WordListInfo> idList = getWordListWordListInfos(locale, context); + final List<WordListInfo> idList = getWordListWordListInfos(locale, context, + hasDefaultWordList); final List<AssetFileAddress> fileAddressList = new ArrayList<AssetFileAddress>(); for (WordListInfo id : idList) { final AssetFileAddress afd = cacheWordList(id.mId, id.mLocale, resolver, context); |