Merge "Add a showInInputMethodPicker attr." into sc-dev
This commit is contained in:
@@ -1296,6 +1296,7 @@ package android {
|
||||
field public static final int showDefault = 16843258; // 0x10101fa
|
||||
field public static final int showDividers = 16843561; // 0x1010329
|
||||
field public static final int showForAllUsers = 16844015; // 0x10104ef
|
||||
field public static final int showInInputMethodPicker = 16844361; // 0x1010649
|
||||
field public static final int showMetadataInPreview = 16844079; // 0x101052f
|
||||
field @Deprecated public static final int showOnLockScreen = 16843721; // 0x10103c9
|
||||
field public static final int showSilent = 16843259; // 0x10101fb
|
||||
|
||||
@@ -61,6 +61,7 @@ import java.util.List;
|
||||
* @attr ref android.R.styleable#InputMethod_supportsSwitchingToNextInputMethod
|
||||
* @attr ref android.R.styleable#InputMethod_supportsInlineSuggestions
|
||||
* @attr ref android.R.styleable#InputMethod_suppressesSpellChecker
|
||||
* @attr ref android.R.styleable#InputMethod_showInInputMethodPicker
|
||||
*/
|
||||
public final class InputMethodInfo implements Parcelable {
|
||||
static final String TAG = "InputMethodInfo";
|
||||
@@ -123,6 +124,11 @@ public final class InputMethodInfo implements Parcelable {
|
||||
*/
|
||||
private final boolean mSuppressesSpellChecker;
|
||||
|
||||
/**
|
||||
* The flag whether this IME should be shown as an option in the IME picker.
|
||||
*/
|
||||
private final boolean mShowInInputMethodPicker;
|
||||
|
||||
/**
|
||||
* @param service the {@link ResolveInfo} corresponds in which the IME is implemented.
|
||||
* @return a unique ID to be returned by {@link #getId()}. We have used
|
||||
@@ -167,6 +173,7 @@ public final class InputMethodInfo implements Parcelable {
|
||||
boolean supportsSwitchingToNextInputMethod = false; // false as default
|
||||
boolean inlineSuggestionsEnabled = false; // false as default
|
||||
boolean suppressesSpellChecker = false; // false as default
|
||||
boolean showInInputMethodPicker = true; // true as default
|
||||
mForceDefault = false;
|
||||
|
||||
PackageManager pm = context.getPackageManager();
|
||||
@@ -212,6 +219,8 @@ public final class InputMethodInfo implements Parcelable {
|
||||
com.android.internal.R.styleable.InputMethod_supportsInlineSuggestions, false);
|
||||
suppressesSpellChecker = sa.getBoolean(
|
||||
com.android.internal.R.styleable.InputMethod_suppressesSpellChecker, false);
|
||||
showInInputMethodPicker = sa.getBoolean(
|
||||
com.android.internal.R.styleable.InputMethod_showInInputMethodPicker, true);
|
||||
sa.recycle();
|
||||
|
||||
final int depth = parser.getDepth();
|
||||
@@ -284,6 +293,7 @@ public final class InputMethodInfo implements Parcelable {
|
||||
mSupportsSwitchingToNextInputMethod = supportsSwitchingToNextInputMethod;
|
||||
mInlineSuggestionsEnabled = inlineSuggestionsEnabled;
|
||||
mSuppressesSpellChecker = suppressesSpellChecker;
|
||||
mShowInInputMethodPicker = showInInputMethodPicker;
|
||||
mIsVrOnly = isVrOnly;
|
||||
}
|
||||
|
||||
@@ -295,6 +305,7 @@ public final class InputMethodInfo implements Parcelable {
|
||||
mSupportsSwitchingToNextInputMethod = source.readInt() == 1;
|
||||
mInlineSuggestionsEnabled = source.readInt() == 1;
|
||||
mSuppressesSpellChecker = source.readBoolean();
|
||||
mShowInInputMethodPicker = source.readBoolean();
|
||||
mIsVrOnly = source.readBoolean();
|
||||
mService = ResolveInfo.CREATOR.createFromParcel(source);
|
||||
mSubtypes = new InputMethodSubtypeArray(source);
|
||||
@@ -354,6 +365,7 @@ public final class InputMethodInfo implements Parcelable {
|
||||
mSupportsSwitchingToNextInputMethod = supportsSwitchingToNextInputMethod;
|
||||
mInlineSuggestionsEnabled = inlineSuggestionsEnabled;
|
||||
mSuppressesSpellChecker = false;
|
||||
mShowInInputMethodPicker = true;
|
||||
mIsVrOnly = isVrOnly;
|
||||
}
|
||||
|
||||
@@ -507,7 +519,8 @@ public final class InputMethodInfo implements Parcelable {
|
||||
+ " mIsVrOnly=" + mIsVrOnly
|
||||
+ " mSupportsSwitchingToNextInputMethod=" + mSupportsSwitchingToNextInputMethod
|
||||
+ " mInlineSuggestionsEnabled=" + mInlineSuggestionsEnabled
|
||||
+ " mSuppressesSpellChecker=" + mSuppressesSpellChecker);
|
||||
+ " mSuppressesSpellChecker=" + mSuppressesSpellChecker
|
||||
+ " mShowInInputMethodPicker=" + mShowInInputMethodPicker);
|
||||
pw.println(prefix + "mIsDefaultResId=0x"
|
||||
+ Integer.toHexString(mIsDefaultResId));
|
||||
pw.println(prefix + "Service:");
|
||||
@@ -582,6 +595,14 @@ public final class InputMethodInfo implements Parcelable {
|
||||
return mSuppressesSpellChecker;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return {@code true} if this input method should be shown in the IME picker.
|
||||
* @hide
|
||||
*/
|
||||
public boolean showInInputMethodPicker() {
|
||||
return mShowInInputMethodPicker;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to package this object into a {@link Parcel}.
|
||||
*
|
||||
@@ -597,6 +618,7 @@ public final class InputMethodInfo implements Parcelable {
|
||||
dest.writeInt(mSupportsSwitchingToNextInputMethod ? 1 : 0);
|
||||
dest.writeInt(mInlineSuggestionsEnabled ? 1 : 0);
|
||||
dest.writeBoolean(mSuppressesSpellChecker);
|
||||
dest.writeBoolean(mShowInInputMethodPicker);
|
||||
dest.writeBoolean(mIsVrOnly);
|
||||
mService.writeToParcel(dest, flags);
|
||||
mSubtypes.writeToParcel(dest);
|
||||
|
||||
@@ -3579,6 +3579,12 @@
|
||||
<!-- Specifies whether the IME supports showing inline suggestions. -->
|
||||
<attr name="supportsInlineSuggestions" format="boolean" />
|
||||
<attr name="suppressesSpellChecker" format="boolean" />
|
||||
<!-- Specifies whether the IME wants to be shown in the Input Method picker. Defaults to
|
||||
true. Set this to false if the IME is intended to be accessed programmatically.
|
||||
<p>
|
||||
Note: This functions as a hint to the system, which may choose to ignore this
|
||||
preference in certain situations or in future releases.-->
|
||||
<attr name="showInInputMethodPicker" format="boolean" />
|
||||
</declare-styleable>
|
||||
|
||||
<!-- This is the subtype of InputMethod. Subtype can describe locales (for example, en_US and
|
||||
|
||||
@@ -3098,6 +3098,7 @@
|
||||
<public name="lStar" />
|
||||
<!-- @hide @SystemApi -->
|
||||
<public name="throttleDurationMillis" />
|
||||
<public name="showInInputMethodPicker" />
|
||||
</public-group>
|
||||
|
||||
<public-group type="drawable" first-id="0x010800b5">
|
||||
|
||||
@@ -100,7 +100,8 @@ public class InputMethodMenuController {
|
||||
|
||||
synchronized (mMethodMap) {
|
||||
final List<ImeSubtypeListItem> imList = mSwitchingController
|
||||
.getSortedInputMethodAndSubtypeListLocked(showAuxSubtypes, isScreenLocked);
|
||||
.getSortedInputMethodAndSubtypeListForImeMenuLocked(
|
||||
showAuxSubtypes, isScreenLocked);
|
||||
if (imList.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -181,7 +181,7 @@ final class InputMethodSubtypeSwitchingController {
|
||||
}
|
||||
|
||||
public List<ImeSubtypeListItem> getSortedInputMethodAndSubtypeList(
|
||||
boolean includeAuxiliarySubtypes, boolean isScreenLocked) {
|
||||
boolean includeAuxiliarySubtypes, boolean isScreenLocked, boolean forImeMenu) {
|
||||
final ArrayList<InputMethodInfo> imis = mSettings.getEnabledInputMethodListLocked();
|
||||
if (imis.isEmpty()) {
|
||||
return Collections.emptyList();
|
||||
@@ -196,6 +196,9 @@ final class InputMethodSubtypeSwitchingController {
|
||||
final int numImes = imis.size();
|
||||
for (int i = 0; i < numImes; ++i) {
|
||||
final InputMethodInfo imi = imis.get(i);
|
||||
if (forImeMenu && !imi.showInInputMethodPicker()) {
|
||||
continue;
|
||||
}
|
||||
final List<InputMethodSubtype> explicitlyOrImplicitlyEnabledSubtypeList =
|
||||
mSettings.getEnabledInputMethodSubtypeListLocked(mContext, imi, true);
|
||||
final ArraySet<String> enabledSubtypeSet = new ArraySet<>();
|
||||
@@ -513,7 +516,8 @@ final class InputMethodSubtypeSwitchingController {
|
||||
mSubtypeList = new InputMethodAndSubtypeList(context, mSettings);
|
||||
mController = ControllerImpl.createFrom(mController,
|
||||
mSubtypeList.getSortedInputMethodAndSubtypeList(
|
||||
false /* includeAuxiliarySubtypes */, false /* isScreenLocked */));
|
||||
false /* includeAuxiliarySubtypes */, false /* isScreenLocked */,
|
||||
false /* forImeMenu */));
|
||||
}
|
||||
|
||||
public ImeSubtypeListItem getNextInputMethodLocked(boolean onlyCurrentIme, InputMethodInfo imi,
|
||||
@@ -527,10 +531,10 @@ final class InputMethodSubtypeSwitchingController {
|
||||
return mController.getNextInputMethod(onlyCurrentIme, imi, subtype);
|
||||
}
|
||||
|
||||
public List<ImeSubtypeListItem> getSortedInputMethodAndSubtypeListLocked(
|
||||
public List<ImeSubtypeListItem> getSortedInputMethodAndSubtypeListForImeMenuLocked(
|
||||
boolean includingAuxiliarySubtypes, boolean isScreenLocked) {
|
||||
return mSubtypeList.getSortedInputMethodAndSubtypeList(
|
||||
includingAuxiliarySubtypes, isScreenLocked);
|
||||
includingAuxiliarySubtypes, isScreenLocked, true /* forImeMenu */);
|
||||
}
|
||||
|
||||
public void dump(final Printer pw) {
|
||||
|
||||
Reference in New Issue
Block a user