diff options
author | Tony Wickham <twickham@google.com> | 2016-07-19 20:54:18 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2016-07-19 20:54:18 +0000 |
commit | 1e3d490e08b06750d467e144e5d74ea420c59613 (patch) | |
tree | f86e5773deeca8390f8e6b839ea82ab0f0bc3e09 | |
parent | bbff2926f8dd61b99f62d56390815ca84cece51e (diff) | |
parent | 2c99d2ceebd1a6b6fed2b71105b8fdf88ef26a33 (diff) | |
download | android_packages_apps_Trebuchet-1e3d490e08b06750d467e144e5d74ea420c59613.tar.gz android_packages_apps_Trebuchet-1e3d490e08b06750d467e144e5d74ea420c59613.tar.bz2 android_packages_apps_Trebuchet-1e3d490e08b06750d467e144e5d74ea420c59613.zip |
Merge "Implement ranking for shortcuts." into ub-launcher3-calgary
3 files changed, 40 insertions, 4 deletions
diff --git a/src/com/android/launcher3/shortcuts/DeepShortcutManager.java b/src/com/android/launcher3/shortcuts/DeepShortcutManager.java index 66e98cd42..450c36df4 100644 --- a/src/com/android/launcher3/shortcuts/DeepShortcutManager.java +++ b/src/com/android/launcher3/shortcuts/DeepShortcutManager.java @@ -81,11 +81,13 @@ public class DeepShortcutManager { } /** - * Gets all the shortcuts associated with the given package and user. + * Gets all the manifest and dynamic shortcuts associated with the given package and user, + * to be displayed in the shortcuts container on long press. */ - public List<ShortcutInfoCompat> queryForAllAppShortcuts(ComponentName activity, + public List<ShortcutInfoCompat> queryForShortcutsContainer(ComponentName activity, List<String> ids, UserHandleCompat user) { - return query(FLAG_GET_ALL, activity.getPackageName(), activity, ids, user); + return query(FLAG_MATCH_MANIFEST | FLAG_MATCH_DYNAMIC, + activity.getPackageName(), activity, ids, user); } /** diff --git a/src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java b/src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java index d9e34a69a..70082f365 100644 --- a/src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java +++ b/src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java @@ -38,6 +38,8 @@ import com.android.launcher3.userevent.nano.LauncherLogProto; import com.android.launcher3.userevent.nano.LauncherLogProto.Target; import com.android.launcher3.util.UiThreadCircularReveal; +import java.util.Collections; +import java.util.Comparator; import java.util.List; /** @@ -65,6 +67,26 @@ public class DeepShortcutsContainer extends LinearLayout implements View.OnLongC private boolean mIsLeftAligned; private boolean mIsAboveIcon; + /** + * Sorts shortcuts in rank order, with manifest shortcuts coming before dynamic shortcuts. + */ + private static final Comparator<ShortcutInfoCompat> sShortcutsComparator + = new Comparator<ShortcutInfoCompat>() { + @Override + public int compare(ShortcutInfoCompat a, ShortcutInfoCompat b) { + if (a.isDeclaredInManifest() && !b.isDeclaredInManifest()) { + return -1; + } + if (!a.isDeclaredInManifest() && b.isDeclaredInManifest()) { + return 1; + } + return Integer.compare(a.getRank(), b.getRank()); + } + }; + + private static final Comparator<ShortcutInfoCompat> sShortcutsComparatorReversed + = Collections.reverseOrder(sShortcutsComparator); + public DeepShortcutsContainer(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mLauncher = (Launcher) context; @@ -109,7 +131,11 @@ public class DeepShortcutsContainer extends LinearLayout implements View.OnLongC @Override public void run() { final List<ShortcutInfoCompat> shortcuts = mDeepShortcutsManager - .queryForAllAppShortcuts(activity, ids, user); + .queryForShortcutsContainer(activity, ids, user); + // We want the lowest rank to be closest to the user's finger. + final Comparator<ShortcutInfoCompat> shortcutsComparator = mIsAboveIcon ? + sShortcutsComparatorReversed : sShortcutsComparator; + Collections.sort(shortcuts, shortcutsComparator); for (int i = 0; i < shortcuts.size(); i++) { final ShortcutInfoCompat shortcut = shortcuts.get(i); final ShortcutInfo launcherShortcutInfo = ShortcutInfo diff --git a/src/com/android/launcher3/shortcuts/ShortcutInfoCompat.java b/src/com/android/launcher3/shortcuts/ShortcutInfoCompat.java index 8dbeaa741..00553dfbd 100644 --- a/src/com/android/launcher3/shortcuts/ShortcutInfoCompat.java +++ b/src/com/android/launcher3/shortcuts/ShortcutInfoCompat.java @@ -97,6 +97,14 @@ public class ShortcutInfoCompat { return mShortcutInfo.isPinned(); } + public boolean isDeclaredInManifest() { + return mShortcutInfo.isDeclaredInManifest(); + } + + public int getRank() { + return mShortcutInfo.getRank(); + } + @Override public String toString() { return mShortcutInfo.toString(); |