From 08868624ede5eb4950972833f015d465408d3408 Mon Sep 17 00:00:00 2001 From: Jean Chalard Date: Thu, 11 Aug 2011 16:46:43 +0900 Subject: [PATCH] Use the dictionaries cached LatinIME-side Dictionaries are now copied over from the dictionary pack to Latin IME. This change enables Latin IME to use all dictionaries that have been cached until now. Bug: 5095140 Change-Id: Id9a2bacf9dc1c693189b0ac8aa3f75756dc1e3e6 --- .../latin/BinaryDictionaryGetter.java | 37 ++++++++++++++++--- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java index b26731ac5..170edad99 100644 --- a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java +++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java @@ -25,6 +25,7 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Arrays; +import java.util.ArrayList; import java.util.List; import java.util.Locale; @@ -120,6 +121,30 @@ class BinaryDictionaryGetter { context.getApplicationInfo().sourceDir, afd.getStartOffset(), afd.getLength()); } + /** + * Returns the list of cached files for a specific locale. + * + * @param locale the locale to find the dictionary files for. + * @param context the context on which to open the files upon. + * @return a list of binary dictionary files, which may be null but may not be empty. + */ + private static List getCachedDictionaryList(final Locale locale, + final Context context) { + final String directoryName = getCacheDirectoryForLocale(locale, context); + final File[] cacheFiles = new File(directoryName).listFiles(); + if (null == cacheFiles) return null; + + final ArrayList fileList = new ArrayList(); + for (File f : cacheFiles) { + if (f.canRead()) { + fileList.add(AssetFileAddress.makeFromFileName(f.getPath())); + } else { + Log.e(TAG, "Found a cached dictionary file but cannot read it"); + } + } + return fileList.size() > 0 ? fileList : null; + } + /** * Returns a list of file addresses for a given locale, trying relevant methods in order. * @@ -132,12 +157,14 @@ class BinaryDictionaryGetter { * - Returns null. * @return The address of a valid file, or null. */ - public static List getDictionaryFiles(Locale locale, Context context, - int fallbackResId) { + public static List getDictionaryFiles(final Locale locale, + final Context context, final int fallbackResId) { try { - List cachedDictionaryList = - BinaryDictionaryFileDumper.cacheDictionariesFromContentProvider(locale, - context); + // cacheDictionariesFromContentProvider returns the list of files it copied to local + // storage, but we don't really care about what was copied NOW: what we want is the + // list of everything we ever cached, so we ignore the return value. + BinaryDictionaryFileDumper.cacheDictionariesFromContentProvider(locale, context); + List cachedDictionaryList = getCachedDictionaryList(locale, context); if (null != cachedDictionaryList) { return cachedDictionaryList; }