summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTony Wickham <twickham@google.com>2016-07-19 20:54:18 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2016-07-19 20:54:18 +0000
commit1e3d490e08b06750d467e144e5d74ea420c59613 (patch)
treef86e5773deeca8390f8e6b839ea82ab0f0bc3e09
parentbbff2926f8dd61b99f62d56390815ca84cece51e (diff)
parent2c99d2ceebd1a6b6fed2b71105b8fdf88ef26a33 (diff)
downloadandroid_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
-rw-r--r--src/com/android/launcher3/shortcuts/DeepShortcutManager.java8
-rw-r--r--src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java28
-rw-r--r--src/com/android/launcher3/shortcuts/ShortcutInfoCompat.java8
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();