diff options
Diffstat (limited to 'src/com/android/launcher3/model/AppNameComparator.java')
-rw-r--r-- | src/com/android/launcher3/model/AppNameComparator.java | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/src/com/android/launcher3/model/AppNameComparator.java b/src/com/android/launcher3/model/AppNameComparator.java deleted file mode 100644 index 5f80037dc..000000000 --- a/src/com/android/launcher3/model/AppNameComparator.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.launcher3.model; - -import android.content.Context; - -import com.android.launcher3.AppInfo; -import com.android.launcher3.ItemInfo; -import com.android.launcher3.util.Thunk; - -import java.text.Collator; -import java.util.Comparator; - -/** - * Class to manage access to an app name comparator. - * <p> - * Used to sort application name in all apps view and widget tray view. - */ -public class AppNameComparator { - private final Collator mCollator; - private final AbstractUserComparator<ItemInfo> mAppInfoComparator; - private final Comparator<String> mSectionNameComparator; - - public AppNameComparator(Context context) { - mCollator = Collator.getInstance(); - mAppInfoComparator = new AbstractUserComparator<ItemInfo>(context) { - - @Override - public final int compare(ItemInfo a, ItemInfo b) { - // Order by the title in the current locale - int result = compareTitles(a.title.toString(), b.title.toString()); - if (result == 0 && a instanceof AppInfo && b instanceof AppInfo) { - AppInfo aAppInfo = (AppInfo) a; - AppInfo bAppInfo = (AppInfo) b; - // If two apps have the same title, then order by the component name - result = aAppInfo.componentName.compareTo(bAppInfo.componentName); - if (result == 0) { - // If the two apps are the same component, then prioritize by the order that - // the app user was created (prioritizing the main user's apps) - return super.compare(a, b); - } - } - return result; - } - }; - mSectionNameComparator = new Comparator<String>() { - @Override - public int compare(String o1, String o2) { - return compareTitles(o1, o2); - } - }; - } - - /** - * Returns a locale-aware comparator that will alphabetically order a list of applications. - */ - public Comparator<ItemInfo> getAppInfoComparator() { - return mAppInfoComparator; - } - - /** - * Returns a locale-aware comparator that will alphabetically order a list of section names. - */ - public Comparator<String> getSectionNameComparator() { - return mSectionNameComparator; - } - - /** - * Compares two titles with the same return value semantics as Comparator. - */ - @Thunk int compareTitles(String titleA, String titleB) { - // Ensure that we de-prioritize any titles that don't start with a linguistic letter or digit - boolean aStartsWithLetter = (titleA.length() > 0) && - Character.isLetterOrDigit(titleA.codePointAt(0)); - boolean bStartsWithLetter = (titleB.length() > 0) && - Character.isLetterOrDigit(titleB.codePointAt(0)); - if (aStartsWithLetter && !bStartsWithLetter) { - return -1; - } else if (!aStartsWithLetter && bStartsWithLetter) { - return 1; - } - - // Order by the title in the current locale - return mCollator.compare(titleA, titleB); - } -} |