Change API for getting InputMethodSubtype's mode from resource id to String
Change-Id: I00aa99f8ab9901d40806a6bb336ab718eb857e8b
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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});
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user