diff options
author | Mac Wang <Mac_Wang@acer.com.tw> | 2010-07-23 16:18:01 +0800 |
---|---|---|
committer | Mac Wang <Mac_Wang@acer.com.tw> | 2010-07-23 16:23:59 +0800 |
commit | cf06e2cfcdddc0ca086ba5b03aa26a69de949e69 (patch) | |
tree | 0574318bf82874b4e77e2d95af8ef1cb8cb44e28 | |
parent | f34a7fbbbeb9c7855327afbbb18b7d9893866475 (diff) | |
download | frameworks_base-cf06e2cfcdddc0ca086ba5b03aa26a69de949e69.zip frameworks_base-cf06e2cfcdddc0ca086ba5b03aa26a69de949e69.tar.gz frameworks_base-cf06e2cfcdddc0ca086ba5b03aa26a69de949e69.tar.bz2 |
Sort the IME list before showing to user
The original list is unsorted so the order is random to users.
For users who installed two or more Chinese IMEs, they may see
Chinese IME, English IME, Chinese IME. That's odd to users.
-rw-r--r-- | services/java/com/android/server/InputMethodManagerService.java | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java index 5bf66e4..0e74169 100644 --- a/services/java/com/android/server/InputMethodManagerService.java +++ b/services/java/com/android/server/InputMethodManagerService.java @@ -78,9 +78,12 @@ import android.view.inputmethod.EditorInfo; import java.io.FileDescriptor; import java.io.IOException; import java.io.PrintWriter; +import java.text.Collator; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.TreeMap; /** * This class provides a system service that manages input methods. @@ -1513,21 +1516,22 @@ public class InputMethodManagerService extends IInputMethodManager.Stub hideInputMethodMenuLocked(); int N = immis.size(); - - mItems = new CharSequence[N]; - mIms = new InputMethodInfo[N]; - - int j = 0; + + final Map<CharSequence, InputMethodInfo> imMap = + new TreeMap<CharSequence, InputMethodInfo>(Collator.getInstance()); + for (int i = 0; i < N; ++i) { InputMethodInfo property = immis.get(i); if (property == null) { continue; } - mItems[j] = property.loadLabel(pm); - mIms[j] = property; - j++; + imMap.put(property.loadLabel(pm), property); } - + + N = imMap.size(); + mItems = imMap.keySet().toArray(new CharSequence[N]); + mIms = imMap.values().toArray(new InputMethodInfo[N]); + int checkedItem = 0; for (int i = 0; i < N; ++i) { if (mIms[i].getId().equals(lastInputMethodId)) { |