Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b66d287e authored by satok's avatar satok
Browse files

Add a setter of InputMethodSubtype to InputMethodManager

- Public API: void setCurrentInputMethodSubtype(int pos)

Change-Id: I55daa19ba924999def544bf841f00bf54852f3e1
parent 03eb319a
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -219249,6 +219249,19 @@
<parameter name="data" type="android.os.Bundle">
</parameter>
</method>
<method name="setCurrentInputMethodSubtype"
 return="boolean"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="subtype" type="android.view.inputmethod.InputMethodSubtype">
</parameter>
</method>
<method name="setInputMethod"
 return="void"
 abstract="false"
+11 −0
Original line number Diff line number Diff line
@@ -1432,6 +1432,17 @@ public final class InputMethodManager {
        }
    }

    public boolean setCurrentInputMethodSubtype(InputMethodSubtype subtype) {
        synchronized (mH) {
            try {
                return mService.setCurrentInputMethodSubtype(subtype);
            } catch (RemoteException e) {
                Log.w(TAG, "IME died: " + mCurId, e);
                return false;
            }
        }
    }

    public boolean switchToLastInputMethod(IBinder imeToken) {
        synchronized (mH) {
            try {
+1 −1
Original line number Diff line number Diff line
@@ -57,7 +57,7 @@ interface IInputMethodManager {
    void updateStatusIcon(in IBinder token, String packageName, int iconId);
    void setIMEButtonVisible(in IBinder token, boolean visible);
    InputMethodSubtype getCurrentInputMethodSubtype();
    boolean setCurrentInputMethodSubtype(in InputMethodSubtype subtype);
    boolean switchToLastInputMethod(in IBinder token);
    
    boolean setInputMethodEnabled(String id, boolean enabled);
}
+17 −2
Original line number Diff line number Diff line
@@ -988,8 +988,9 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
        }

        if (id.equals(mCurMethodId)) {
            if (subtypeId != NOT_A_SUBTYPE_ID) {
                InputMethodSubtype subtype = info.getSubtypes().get(subtypeId);
            ArrayList<InputMethodSubtype> subtypes = info.getSubtypes();
            if (subtypeId >= 0 && subtypeId < subtypes.size()) {
                InputMethodSubtype subtype = subtypes.get(subtypeId);
                if (subtype != mCurrentSubtype) {
                    synchronized (mMethodMap) {
                        if (mCurMethod != null) {
@@ -1964,6 +1965,20 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
        return mCurrentSubtype;
    }

    public boolean setCurrentInputMethodSubtype(InputMethodSubtype subtype) {
        synchronized (mMethodMap) {
            if (subtype != null && mCurMethodId != null) {
                InputMethodInfo imi = mMethodMap.get(mCurMethodId);
                int subtypeId = getSubtypeIdFromHashCode(imi, subtype.hashCode());
                if (subtypeId != NOT_A_SUBTYPE_ID) {
                    setInputMethodLocked(mCurMethodId, subtypeId);
                    return true;
                }
            }
            return false;
        }
    }

    /**
     * Utility class for putting and getting settings for InputMethod
     * TODO: Move all putters and getters of settings to this class.