diff options
author | Hyunyoung Song <hyunyoungs@google.com> | 2015-05-20 11:03:46 -0700 |
---|---|---|
committer | Hyunyoung Song <hyunyoungs@google.com> | 2015-05-20 11:03:46 -0700 |
commit | 0230c3a87f89afcfb61f80310d5b896986e23118 (patch) | |
tree | d36f654a95d3d7ac8b104a2400e6ba472a1dc68f /src/com/android/launcher3/model | |
parent | 0b493c86c5d0803f11095b71396ffac0097d26ef (diff) | |
download | android_packages_apps_Trebuchet-0230c3a87f89afcfb61f80310d5b896986e23118.tar.gz android_packages_apps_Trebuchet-0230c3a87f89afcfb61f80310d5b896986e23118.tar.bz2 android_packages_apps_Trebuchet-0230c3a87f89afcfb61f80310d5b896986e23118.zip |
List work profile widgets to the end of the row of the widget tray, then sort
b/20339403
Change-Id: I7cd824e47eba1121c9053a4064a51750bed587e7
Diffstat (limited to 'src/com/android/launcher3/model')
-rw-r--r-- | src/com/android/launcher3/model/WidgetsAndShortcutNameComparator.java | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/src/com/android/launcher3/model/WidgetsAndShortcutNameComparator.java b/src/com/android/launcher3/model/WidgetsAndShortcutNameComparator.java index 7c4e80651..61e895283 100644 --- a/src/com/android/launcher3/model/WidgetsAndShortcutNameComparator.java +++ b/src/com/android/launcher3/model/WidgetsAndShortcutNameComparator.java @@ -1,6 +1,5 @@ package com.android.launcher3.model; -import android.appwidget.AppWidgetProviderInfo; import android.content.Context; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; @@ -8,6 +7,7 @@ import android.content.pm.ResolveInfo; import com.android.launcher3.LauncherAppWidgetProviderInfo; import com.android.launcher3.Utilities; import com.android.launcher3.compat.AppWidgetManagerCompat; +import com.android.launcher3.compat.UserHandleCompat; import java.text.Collator; import java.util.Comparator; @@ -18,12 +18,14 @@ public class WidgetsAndShortcutNameComparator implements Comparator<Object> { private final PackageManager mPackageManager; private final HashMap<Object, String> mLabelCache; private final Collator mCollator; + private final UserHandleCompat mMainHandle; public WidgetsAndShortcutNameComparator(Context context) { mManager = AppWidgetManagerCompat.getInstance(context); mPackageManager = context.getPackageManager(); mLabelCache = new HashMap<Object, String>(); mCollator = Collator.getInstance(); + mMainHandle = UserHandleCompat.myUserHandle(); } @Override @@ -45,19 +47,22 @@ public class WidgetsAndShortcutNameComparator implements Comparator<Object> { : Utilities.trim(((ResolveInfo) b).loadLabel(mPackageManager)); mLabelCache.put(b, labelB); } - int result = mCollator.compare(labelA, labelB); - if (result == 0 && a instanceof AppWidgetProviderInfo && - b instanceof AppWidgetProviderInfo) { - AppWidgetProviderInfo aInfo = (AppWidgetProviderInfo) a; - AppWidgetProviderInfo bInfo = (AppWidgetProviderInfo) b; - - // prioritize main user's widgets against work profile widgets. - if (aInfo.getProfile().equals(android.os.Process.myUserHandle())) { - return -1; - } else if (bInfo.getProfile().equals(android.os.Process.myUserHandle())) { - return 1; - } + + // Currently, there is no work profile shortcuts, hence only considering the widget cases. + + boolean aWorkProfile = (a instanceof LauncherAppWidgetProviderInfo) && + !mMainHandle.equals(mManager.getUser((LauncherAppWidgetProviderInfo) a)); + boolean bWorkProfile = (b instanceof LauncherAppWidgetProviderInfo) && + !mMainHandle.equals(mManager.getUser((LauncherAppWidgetProviderInfo) b)); + + // Independent of how the labels compare, if only one of the two widget info belongs to + // work profile, put that one in the back. + if (aWorkProfile && !bWorkProfile) { + return 1; + } + if (!aWorkProfile && bWorkProfile) { + return -1; } - return result; + return mCollator.compare(labelA, labelB); } }; |