Fix the locale of flags in BinaryDictionary

Bug: 6129372
Change-Id: I4958c2aabf651d7e26648a29b75fcc6c77813451
This commit is contained in:
satok 2012-04-04 21:39:23 +09:00
parent b082c95a2b
commit 43ebd8a035
2 changed files with 20 additions and 6 deletions

View File

@ -17,10 +17,14 @@
package com.android.inputmethod.latin; package com.android.inputmethod.latin;
import android.content.Context; import android.content.Context;
import android.content.res.AssetFileDescriptor;
import android.content.res.Resources;
import com.android.inputmethod.keyboard.ProximityInfo; import com.android.inputmethod.keyboard.ProximityInfo;
import com.android.inputmethod.latin.LocaleUtils.RunInLocale;
import java.util.Arrays; import java.util.Arrays;
import java.util.Locale;
/** /**
* Implements a static, compacted, binary dictionary of standard words. * Implements a static, compacted, binary dictionary of standard words.
@ -94,14 +98,23 @@ public class BinaryDictionary extends Dictionary {
* @param flagArray the flags to limit the dictionary to, or null for default. * @param flagArray the flags to limit the dictionary to, or null for default.
*/ */
public BinaryDictionary(final Context context, public BinaryDictionary(final Context context,
final String filename, final long offset, final long length, Flag[] flagArray) { final String filename, final long offset, final long length, final Flag[] flagArray,
Locale locale) {
// Note: at the moment a binary dictionary is always of the "main" type. // Note: at the moment a binary dictionary is always of the "main" type.
// Initializing this here will help transitioning out of the scheme where // Initializing this here will help transitioning out of the scheme where
// the Suggest class knows everything about every single dictionary. // the Suggest class knows everything about every single dictionary.
mDicTypeId = Suggest.DIC_MAIN; mDicTypeId = Suggest.DIC_MAIN;
// TODO: Stop relying on the state of SubtypeSwitcher, get it as a parameter // TODO: Stop relying on the state of SubtypeSwitcher, get it as a parameter
final RunInLocale<Void> job = new RunInLocale<Void>() {
@Override
protected Void job(Resources res) {
// TODO: remove this when all flags are moved to the native code
mFlags = Flag.initFlags(null == flagArray ? ALL_CONFIG_FLAGS : flagArray, context, mFlags = Flag.initFlags(null == flagArray ? ALL_CONFIG_FLAGS : flagArray, context,
SubtypeSwitcher.getInstance()); SubtypeSwitcher.getInstance());
return null;
}
};
job.runInLocale(context.getResources(), locale);
loadDictionary(filename, offset, length); loadDictionary(filename, offset, length);
} }

View File

@ -59,7 +59,8 @@ public class DictionaryFactory {
if (null != assetFileList) { if (null != assetFileList) {
for (final AssetFileAddress f : assetFileList) { for (final AssetFileAddress f : assetFileList) {
final BinaryDictionary binaryDictionary = final BinaryDictionary binaryDictionary =
new BinaryDictionary(context, f.mFilename, f.mOffset, f.mLength, flagArray); new BinaryDictionary(context, f.mFilename, f.mOffset, f.mLength, flagArray,
locale);
if (binaryDictionary.isValidDictionary()) { if (binaryDictionary.isValidDictionary()) {
dictList.add(binaryDictionary); dictList.add(binaryDictionary);
} }
@ -119,7 +120,7 @@ public class DictionaryFactory {
return null; return null;
} }
return new BinaryDictionary(context, return new BinaryDictionary(context,
sourceDir, afd.getStartOffset(), afd.getLength(), null); sourceDir, afd.getStartOffset(), afd.getLength(), null, locale);
} catch (android.content.res.Resources.NotFoundException e) { } catch (android.content.res.Resources.NotFoundException e) {
Log.e(TAG, "Could not find the resource. resId=" + resId); Log.e(TAG, "Could not find the resource. resId=" + resId);
return null; return null;
@ -147,7 +148,7 @@ public class DictionaryFactory {
long startOffset, long length, Flag[] flagArray) { long startOffset, long length, Flag[] flagArray) {
if (dictionary.isFile()) { if (dictionary.isFile()) {
return new BinaryDictionary(context, dictionary.getAbsolutePath(), startOffset, length, return new BinaryDictionary(context, dictionary.getAbsolutePath(), startOffset, length,
flagArray); flagArray, null);
} else { } else {
Log.e(TAG, "Could not find the file. path=" + dictionary.getAbsolutePath()); Log.e(TAG, "Could not find the file. path=" + dictionary.getAbsolutePath());
return null; return null;