Merge "Move language-specific keyboard setting to resources."
commit
c9bc5c8d34
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
/*
|
||||
**
|
||||
** Copyright 2011, The Android Open Source Project
|
||||
**
|
||||
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||
** you may not use this file except in compliance with the License.
|
||||
** You may obtain a copy of the License at
|
||||
**
|
||||
** http://www.apache.org/licenses/LICENSE-2.0
|
||||
**
|
||||
** Unless required by applicable law or agreed to in writing, software
|
||||
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
** See the License for the specific language governing permissions and
|
||||
** limitations under the License.
|
||||
*/
|
||||
-->
|
||||
|
||||
<resources>
|
||||
<bool name="config_require_umlaut_processing">true</bool>
|
||||
</resources>
|
|
@ -78,4 +78,5 @@
|
|||
</string-array>
|
||||
<!-- Screen metrics for logging. 0 = "mdpi", 1 = "hdpi", 2 = "xlarge" -->
|
||||
<integer name="log_screen_metrics">0</integer>
|
||||
<bool name="config_require_umlaut_processing">false</bool>
|
||||
</resources>
|
||||
|
|
|
@ -72,7 +72,6 @@
|
|||
android:label="@string/subtype_mode_de_keyboard"
|
||||
android:imeSubtypeLocale="de"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="requiresGermanUmlautProcessing"
|
||||
/>
|
||||
<!-- <subtype android:icon="@drawable/ic_subtype_mic" -->
|
||||
<!-- android:label="@string/subtype_mode_de_voice" -->
|
||||
|
|
|
@ -63,18 +63,12 @@ public class BinaryDictionary extends Dictionary {
|
|||
|
||||
private final KeyboardSwitcher mKeyboardSwitcher = KeyboardSwitcher.getInstance();
|
||||
|
||||
public static class Flag {
|
||||
public final String mName;
|
||||
public final int mValue;
|
||||
|
||||
public Flag(String name, int value) {
|
||||
mName = name;
|
||||
mValue = value;
|
||||
}
|
||||
}
|
||||
|
||||
public static final Flag FLAG_REQUIRES_GERMAN_UMLAUT_PROCESSING =
|
||||
new Flag("requiresGermanUmlautProcessing", 0x1);
|
||||
new Flag(R.bool.config_require_umlaut_processing, 0x1);
|
||||
|
||||
// Can create a new flag from extravalue :
|
||||
// public static final Flag FLAG_MYFLAG =
|
||||
// new Flag("my_flag", 0x02);
|
||||
|
||||
private static final Flag[] ALL_FLAGS = {
|
||||
// Here should reside all flags that trigger some special processing
|
||||
|
@ -118,12 +112,12 @@ public class BinaryDictionary extends Dictionary {
|
|||
return null;
|
||||
}
|
||||
}
|
||||
sInstance.mFlags = initFlags(ALL_FLAGS, SubtypeSwitcher.getInstance());
|
||||
sInstance.mFlags = Flag.initFlags(ALL_FLAGS, context, SubtypeSwitcher.getInstance());
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
/* package for test */ static BinaryDictionary initDictionary(File dictionary, long startOffset,
|
||||
long length, int dicTypeId, Flag[] flagArray) {
|
||||
/* package for test */ static BinaryDictionary initDictionary(Context context, File dictionary,
|
||||
long startOffset, long length, int dicTypeId, Flag[] flagArray) {
|
||||
synchronized (sInstance) {
|
||||
sInstance.closeInternal();
|
||||
if (dictionary.isFile()) {
|
||||
|
@ -134,19 +128,10 @@ public class BinaryDictionary extends Dictionary {
|
|||
return null;
|
||||
}
|
||||
}
|
||||
sInstance.mFlags = initFlags(flagArray, null);
|
||||
sInstance.mFlags = Flag.initFlags(flagArray, context, null);
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
private static int initFlags(Flag[] flagArray, SubtypeSwitcher switcher) {
|
||||
int flags = 0;
|
||||
for (Flag entry : flagArray) {
|
||||
if (switcher == null || switcher.currentSubtypeContainsExtraValueKey(entry.mName))
|
||||
flags |= entry.mValue;
|
||||
}
|
||||
return flags;
|
||||
}
|
||||
|
||||
static {
|
||||
Utils.loadNativeLibrary();
|
||||
}
|
||||
|
@ -179,6 +164,7 @@ public class BinaryDictionary extends Dictionary {
|
|||
sInstance.mDicTypeId = dicTypeId;
|
||||
}
|
||||
}
|
||||
sInstance.mFlags = Flag.initFlags(ALL_FLAGS, context, SubtypeSwitcher.getInstance());
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
/*
|
||||
* Copyright (C) 2011 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*/
|
||||
|
||||
package com.android.inputmethod.latin;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
|
||||
public class Flag {
|
||||
public final String mName;
|
||||
public final int mResource;
|
||||
public final int mMask;
|
||||
public final int mSource;
|
||||
|
||||
static private final int SOURCE_CONFIG = 1;
|
||||
static private final int SOURCE_EXTRAVALUE = 2;
|
||||
|
||||
public Flag(int resourceId, int mask) {
|
||||
mName = null;
|
||||
mResource = resourceId;
|
||||
mSource = SOURCE_CONFIG;
|
||||
mMask = mask;
|
||||
}
|
||||
|
||||
public Flag(String name, int mask) {
|
||||
mName = name;
|
||||
mResource = 0;
|
||||
mSource = SOURCE_EXTRAVALUE;
|
||||
mMask = mask;
|
||||
}
|
||||
|
||||
// If context/switcher are null, set all related flags in flagArray to on.
|
||||
public static int initFlags(Flag[] flagArray, Context context, SubtypeSwitcher switcher) {
|
||||
int flags = 0;
|
||||
final Resources res = null == context ? null : context.getResources();
|
||||
for (Flag entry : flagArray) {
|
||||
switch (entry.mSource) {
|
||||
case Flag.SOURCE_CONFIG:
|
||||
if (res == null || res.getBoolean(entry.mResource))
|
||||
flags |= entry.mMask;
|
||||
break;
|
||||
case Flag.SOURCE_EXTRAVALUE:
|
||||
if (switcher == null ||
|
||||
switcher.currentSubtypeContainsExtraValueKey(entry.mName))
|
||||
flags |= entry.mMask;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return flags;
|
||||
}
|
||||
}
|
|
@ -112,10 +112,10 @@ public class Suggest implements Dictionary.WordCallback {
|
|||
dictionaryResId));
|
||||
}
|
||||
|
||||
/* package for test */ Suggest(File dictionary, long startOffset, long length,
|
||||
BinaryDictionary.Flag[] flagArray) {
|
||||
init(null, BinaryDictionary.initDictionary(dictionary, startOffset, length, DIC_MAIN,
|
||||
flagArray));
|
||||
/* package for test */ Suggest(Context context, File dictionary, long startOffset, long length,
|
||||
Flag[] flagArray) {
|
||||
init(null, BinaryDictionary.initDictionary(context, dictionary, startOffset, length,
|
||||
DIC_MAIN, flagArray));
|
||||
}
|
||||
|
||||
private void init(Context context, BinaryDictionary mainDict) {
|
||||
|
|
|
@ -43,7 +43,7 @@ public class SuggestHelper {
|
|||
|
||||
protected SuggestHelper(Context context, File dictionaryPath, long startOffset, long length,
|
||||
KeyboardId keyboardId) {
|
||||
mSuggest = new Suggest(dictionaryPath, startOffset, length, null);
|
||||
mSuggest = new Suggest(context, dictionaryPath, startOffset, length, null);
|
||||
mKeyboard = new LatinKeyboard(context, keyboardId);
|
||||
mKeyDetector = new KeyDetector();
|
||||
init();
|
||||
|
|
Loading…
Reference in New Issue