summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMac Wang <Mac_Wang@acer.com.tw>2010-07-23 16:18:01 +0800
committerMac Wang <Mac_Wang@acer.com.tw>2010-07-23 16:23:59 +0800
commitcf06e2cfcdddc0ca086ba5b03aa26a69de949e69 (patch)
tree0574318bf82874b4e77e2d95af8ef1cb8cb44e28
parentf34a7fbbbeb9c7855327afbbb18b7d9893866475 (diff)
downloadframeworks_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.java22
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)) {