diff options
author | Winson Chung <winsonc@google.com> | 2015-05-11 22:12:38 -0700 |
---|---|---|
committer | Winson Chung <winsonc@google.com> | 2015-05-12 21:19:32 +0000 |
commit | a3499dc019a677efb008d926b2cd9a5ad0bc0ca0 (patch) | |
tree | f4a15e24a57e149f53f9964c8f99978580baaaf6 /src/com/android/launcher3/compat | |
parent | f6d7f4f21c4d3efa08084d3caaa1a19660ca5777 (diff) | |
download | android_packages_apps_Trebuchet-a3499dc019a677efb008d926b2cd9a5ad0bc0ca0.tar.gz android_packages_apps_Trebuchet-a3499dc019a677efb008d926b2cd9a5ad0bc0ca0.tar.bz2 android_packages_apps_Trebuchet-a3499dc019a677efb008d926b2cd9a5ad0bc0ca0.zip |
Tweaking section processing for different languages
- Ensuring that apps with non-letter/digit characters are ordered last in the misc bucket
- Removing duplicate latin-alphabet sections for Simplified Chinese
- Adding more appropriate misc bucket label for Japanese
Bug 21022854
Change-Id: I62c7b219820ef88787fcfa83f1bd4202f16f9c0c
Diffstat (limited to 'src/com/android/launcher3/compat')
-rw-r--r-- | src/com/android/launcher3/compat/AlphabeticIndexCompat.java | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/src/com/android/launcher3/compat/AlphabeticIndexCompat.java b/src/com/android/launcher3/compat/AlphabeticIndexCompat.java index 18cdc81f3..ec1fb669f 100644 --- a/src/com/android/launcher3/compat/AlphabeticIndexCompat.java +++ b/src/com/android/launcher3/compat/AlphabeticIndexCompat.java @@ -52,12 +52,15 @@ class BaseAlphabeticIndex { */ public class AlphabeticIndexCompat extends BaseAlphabeticIndex { + private static final String MID_DOT = "\u2219"; + private Object mAlphabeticIndex; private Method mAddLabelsMethod; private Method mSetMaxLabelCountMethod; private Method mGetBucketIndexMethod; private Method mGetBucketLabelMethod; private boolean mHasValidAlphabeticIndex; + private String mDefaultMiscLabel; public AlphabeticIndexCompat(Context context) { super(); @@ -72,12 +75,20 @@ public class AlphabeticIndexCompat extends BaseAlphabeticIndex { mAlphabeticIndex = ctor.newInstance(curLocale); try { // Ensure we always have some base English locale buckets - if (!curLocale.getLanguage().equals(new Locale("en").getLanguage())) { + if (!curLocale.getLanguage().equals(Locale.ENGLISH.getLanguage())) { mAddLabelsMethod.invoke(mAlphabeticIndex, Locale.ENGLISH); } } catch (Exception e) { e.printStackTrace(); } + if (curLocale.getLanguage().equals(Locale.JAPANESE.getLanguage())) { + // Japanese character 他 ("misc") + mDefaultMiscLabel = "\u4ed6"; + // TODO(winsonc, omakoto): We need to handle Japanese sections better, especially the kanji + } else { + // Dot + mDefaultMiscLabel = MID_DOT; + } mHasValidAlphabeticIndex = true; } catch (Exception e) { mHasValidAlphabeticIndex = false; @@ -107,13 +118,21 @@ public class AlphabeticIndexCompat extends BaseAlphabeticIndex { String s = Utilities.trim(cs); String sectionName = getBucketLabel(getBucketIndex(s)); if (Utilities.trim(sectionName).isEmpty() && s.length() > 0) { - boolean startsWithDigit = Character.isDigit(s.codePointAt(0)); + int c = s.codePointAt(0); + boolean startsWithDigit = Character.isDigit(c); if (startsWithDigit) { // Digit section return "#"; } else { - // Unknown section - return "\u2022"; + boolean startsWithLetter = Character.isLetter(c); + if (startsWithLetter) { + return mDefaultMiscLabel; + } else { + // In languages where these differ, this ensures that we differentiate + // between the misc section in the native language and a misc section + // for everything else. + return MID_DOT; + } } } return sectionName; |