From 734dfbe2726c748b70eca6a2e3742a7443757bbe Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Wed, 16 Sep 2015 16:22:36 -0700 Subject: [PATCH] Dragging app from workspace to App Info doesn't consume the app. In other words, the app stays on the workspace after showing the info. Change-Id: Ibcf925c2c4c083b16ce0510a9fcedbe3fcef5b9d --- src/com/android/launcher3/InfoDropTarget.java | 19 ++++++++++++------- .../launcher3/UninstallDropTarget.java | 8 ++++++-- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/com/android/launcher3/InfoDropTarget.java b/src/com/android/launcher3/InfoDropTarget.java index f5b7c56401..006ce5dc06 100644 --- a/src/com/android/launcher3/InfoDropTarget.java +++ b/src/com/android/launcher3/InfoDropTarget.java @@ -20,7 +20,7 @@ import android.content.ComponentName; import android.content.Context; import android.util.AttributeSet; -public class InfoDropTarget extends ButtonDropTarget { +public class InfoDropTarget extends UninstallDropTarget { public InfoDropTarget(Context context, AttributeSet attrs) { this(context, attrs, 0); @@ -39,7 +39,10 @@ public class InfoDropTarget extends ButtonDropTarget { setDrawable(R.drawable.ic_info_launcher); } - public static void startDetailsActivityForInfo(ItemInfo info, Launcher launcher) { + /** + * @return Whether the activity was started. + */ + public static boolean startDetailsActivityForInfo(ItemInfo info, Launcher launcher) { ComponentName componentName = null; if (info instanceof AppInfo) { componentName = ((AppInfo) info).componentName; @@ -50,7 +53,14 @@ public class InfoDropTarget extends ButtonDropTarget { } if (componentName != null) { launcher.startApplicationDetailsActivity(componentName, info.user); + return true; } + return false; + } + + @Override + protected boolean startActivityWithUninstallAffordance(DragObject d) { + return startDetailsActivityForInfo(d.dragInfo, mLauncher); } @Override @@ -62,9 +72,4 @@ public class InfoDropTarget extends ButtonDropTarget { return info instanceof AppInfo || info instanceof ShortcutInfo || info instanceof PendingAddItemInfo; } - - @Override - void completeDrop(DragObject d) { - startDetailsActivityForInfo(d.dragInfo, mLauncher); - } } diff --git a/src/com/android/launcher3/UninstallDropTarget.java b/src/com/android/launcher3/UninstallDropTarget.java index 9ed4fb6526..b69c79da11 100644 --- a/src/com/android/launcher3/UninstallDropTarget.java +++ b/src/com/android/launcher3/UninstallDropTarget.java @@ -82,7 +82,7 @@ public class UninstallDropTarget extends ButtonDropTarget { void completeDrop(final DragObject d) { final Pair componentInfo = getAppInfoFlags(d.dragInfo); final UserHandleCompat user = d.dragInfo.user; - if (startUninstallActivity(mLauncher, d.dragInfo)) { + if (startActivityWithUninstallAffordance(d)) { final Runnable checkIfUninstallWasSuccess = new Runnable() { @Override @@ -99,6 +99,10 @@ public class UninstallDropTarget extends ButtonDropTarget { } } + protected boolean startActivityWithUninstallAffordance(DragObject d) { + return startUninstallActivity(mLauncher, d.dragInfo); + } + public static boolean startUninstallActivity(Launcher launcher, ItemInfo info) { final Pair componentInfo = getAppInfoFlags(info); final UserHandleCompat user = info.user; @@ -115,7 +119,7 @@ public class UninstallDropTarget extends ButtonDropTarget { /** * Interface defining an object that can provide uninstallable drag objects. */ - public static interface UninstallSource { + public interface UninstallSource { /** * A pending uninstall operation was complete.