Change API for getting InputMethodSubtype's mode from resource id to String

Change-Id: I00aa99f8ab9901d40806a6bb336ab718eb857e8b
This commit is contained in:
satok
2010-11-04 21:17:48 +09:00
parent 63cf0279d7
commit 9ef0283bdc
5 changed files with 31 additions and 31 deletions

View File

@@ -219190,8 +219190,8 @@
visibility="public"
>
</method>
<method name="getModeResId"
return="int"
<method name="getMode"
return="java.lang.String"
abstract="false"
native="false"
synchronized="false"
@@ -245869,7 +245869,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="t" type="T">
<parameter name="arg0" type="T">
</parameter>
</method>
</interface>

View File

@@ -2086,10 +2086,10 @@ public class InputMethodService extends AbstractInputMethodService {
protected void onCurrentInputMethodSubtypeChanged(InputMethodSubtype newSubtype) {
if (DEBUG) {
int nameResId = newSubtype.getNameResId();
int modeResId = newSubtype.getModeResId();
String mode = newSubtype.getMode();
String output = "changeInputMethodSubtype:"
+ (nameResId == 0 ? "<none>" : getString(nameResId)) + ","
+ (modeResId == 0 ? "<none>" : getString(modeResId)) + ","
+ mode + ","
+ newSubtype.getLocale() + "," + newSubtype.getExtraValue();
Log.v(TAG, "--- " + output);
}

View File

@@ -142,8 +142,8 @@ public final class InputMethodInfo implements Parcelable {
.InputMethod_Subtype_icon, 0),
a.getString(com.android.internal.R.styleable
.InputMethod_Subtype_imeSubtypeLocale),
a.getResourceId(com.android.internal.R.styleable
.InputMethod_Subtype_imeSubtypeMode, 0),
a.getString(com.android.internal.R.styleable
.InputMethod_Subtype_imeSubtypeMode),
a.getString(com.android.internal.R.styleable
.InputMethod_Subtype_imeSubtypeExtraValue));
mSubtypes.add(subtype);

View File

@@ -34,7 +34,7 @@ public final class InputMethodSubtype implements Parcelable {
private final int mSubtypeNameResId;
private final int mSubtypeIconResId;
private final String mSubtypeLocale;
private final int mSubtypeModeResId;
private final String mSubtypeMode;
private final String mSubtypeExtraValue;
private final int mSubtypeHashCode;
@@ -46,24 +46,24 @@ public final class InputMethodSubtype implements Parcelable {
* @param modeId The mode supported by the subtype
* @param extraValue The extra value of the subtype
*/
InputMethodSubtype(int nameId, int iconId, String locale, int modeId, String extraValue) {
InputMethodSubtype(int nameId, int iconId, String locale, String mode, String extraValue) {
mSubtypeNameResId = nameId;
mSubtypeIconResId = iconId;
mSubtypeLocale = locale;
mSubtypeModeResId = modeId;
mSubtypeMode = mode;
mSubtypeExtraValue = extraValue;
mSubtypeHashCode = hashCodeInternal(mSubtypeNameResId, mSubtypeIconResId, mSubtypeLocale,
mSubtypeModeResId, mSubtypeExtraValue);
mSubtypeMode, mSubtypeExtraValue);
}
InputMethodSubtype(Parcel source) {
mSubtypeNameResId = source.readInt();
mSubtypeIconResId = source.readInt();
mSubtypeLocale = source.readString();
mSubtypeModeResId = source.readInt();
mSubtypeMode = source.readString();
mSubtypeExtraValue = source.readString();
mSubtypeHashCode = hashCodeInternal(mSubtypeNameResId, mSubtypeIconResId, mSubtypeLocale,
mSubtypeModeResId, mSubtypeExtraValue);
mSubtypeMode, mSubtypeExtraValue);
}
/**
@@ -90,8 +90,8 @@ public final class InputMethodSubtype implements Parcelable {
/**
* @return the mode of the subtype
*/
public int getModeResId() {
return mSubtypeModeResId;
public String getMode() {
return mSubtypeMode;
}
/**
@@ -111,7 +111,7 @@ public final class InputMethodSubtype implements Parcelable {
if (o instanceof InputMethodSubtype) {
InputMethodSubtype subtype = (InputMethodSubtype) o;
return (subtype.getNameResId() == getNameResId())
&& (subtype.getModeResId() == getModeResId())
&& (subtype.getMode() == getMode())
&& (subtype.getIconResId() == getIconResId())
&& (subtype.getLocale().equals(getLocale()))
&& (subtype.getExtraValue().equals(getExtraValue()));
@@ -127,7 +127,7 @@ public final class InputMethodSubtype implements Parcelable {
dest.writeInt(mSubtypeNameResId);
dest.writeInt(mSubtypeIconResId);
dest.writeString(mSubtypeLocale);
dest.writeInt(mSubtypeModeResId);
dest.writeString(mSubtypeMode);
dest.writeString(mSubtypeExtraValue);
}
@@ -143,7 +143,7 @@ public final class InputMethodSubtype implements Parcelable {
};
private static int hashCodeInternal(int nameResId, int iconResId, String locale,
int modeResId, String extraValue) {
return Arrays.hashCode(new Object[] {nameResId, iconResId, locale, modeResId, extraValue});
String mode, String extraValue) {
return Arrays.hashCode(new Object[] {nameResId, iconResId, locale, mode, extraValue});
}
}

View File

@@ -1622,15 +1622,12 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
if (enabledSubtypeSet.contains(String.valueOf(subtype.hashCode()))) {
CharSequence title;
int nameResId = subtype.getNameResId();
int modeResId = subtype.getModeResId();
String mode = subtype.getMode();
if (nameResId != 0) {
title = pm.getText(property.getPackageName(), nameResId,
property.getServiceInfo().applicationInfo);
} else {
CharSequence language = subtype.getLocale();
CharSequence mode = modeResId == 0 ? null
: pm.getText(property.getPackageName(), modeResId,
property.getServiceInfo().applicationInfo);
// TODO: Use more friendly Title and UI
title = label + "," + (mode == null ? "" : mode) + ","
+ (language == null ? "" : language);
@@ -1869,14 +1866,17 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
int applicableSubtypeId = DEFAULT_SUBTYPE_ID;
for (int i = 0; i < subtypes.size(); ++i) {
final String subtypeLocale = subtypes.get(i).getLocale();
if (locale.equals(subtypeLocale)) {
// Exact match (e.g. system locale is "en_US" and subtype locale is "en_US")
applicableSubtypeId = i;
break;
} else if (!partialMatchFound && subtypeLocale.startsWith(language)) {
// Partial match (e.g. system locale is "en_US" and subtype locale is "en")
applicableSubtypeId = i;
partialMatchFound = true;
// An applicable subtype should be a keyboard subtype
if (subtypes.get(i).getMode().equalsIgnoreCase("keyboard")) {
if (locale.equals(subtypeLocale)) {
// Exact match (e.g. system locale is "en_US" and subtype locale is "en_US")
applicableSubtypeId = i;
break;
} else if (!partialMatchFound && subtypeLocale.startsWith(language)) {
// Partial match (e.g. system locale is "en_US" and subtype locale is "en")
applicableSubtypeId = i;
partialMatchFound = true;
}
}
}