diff --git a/src/com/android/launcher3/ButtonDropTarget.java b/src/com/android/launcher3/ButtonDropTarget.java index 632e490590..3759300624 100644 --- a/src/com/android/launcher3/ButtonDropTarget.java +++ b/src/com/android/launcher3/ButtonDropTarget.java @@ -178,7 +178,7 @@ public abstract class ButtonDropTarget extends TextView @Override public void onDragStart(DropTarget.DragObject dragObject, DragOptions options) { - mActive = supportsDrop(dragObject.dragSource, dragObject.dragInfo); + mActive = supportsDrop(dragObject.dragInfo); mDrawable.setColorFilter(null); if (mCurrentColorAnim != null) { mCurrentColorAnim.cancel(); @@ -194,10 +194,10 @@ public abstract class ButtonDropTarget extends TextView @Override public final boolean acceptDrop(DragObject dragObject) { - return supportsDrop(dragObject.dragSource, dragObject.dragInfo); + return supportsDrop(dragObject.dragInfo); } - protected abstract boolean supportsDrop(DragSource source, ItemInfo info); + protected abstract boolean supportsDrop(ItemInfo info); @Override public boolean isDropEnabled() { diff --git a/src/com/android/launcher3/DeleteDropTarget.java b/src/com/android/launcher3/DeleteDropTarget.java index 4dcb64f01d..fdd4f34bd5 100644 --- a/src/com/android/launcher3/DeleteDropTarget.java +++ b/src/com/android/launcher3/DeleteDropTarget.java @@ -46,7 +46,7 @@ public class DeleteDropTarget extends ButtonDropTarget { @Override public void onDragStart(DropTarget.DragObject dragObject, DragOptions options) { super.onDragStart(dragObject, options); - setTextBasedOnDragSource(dragObject.dragSource); + setTextBasedOnDragSource(dragObject.dragInfo); } /** @return true for items that should have a "Remove" action in accessibility. */ @@ -57,16 +57,16 @@ public class DeleteDropTarget extends ButtonDropTarget { } @Override - protected boolean supportsDrop(DragSource source, ItemInfo info) { + protected boolean supportsDrop(ItemInfo info) { return true; } /** - * Set the drop target's text to either "Remove" or "Cancel" depending on the drag source. + * Set the drop target's text to either "Remove" or "Cancel" depending on the drag item. */ - public void setTextBasedOnDragSource(DragSource dragSource) { + private void setTextBasedOnDragSource(ItemInfo item) { if (!TextUtils.isEmpty(mText)) { - mText = getResources().getString(dragSource.supportsDeleteDropTarget() + mText = getResources().getString(item.id != ItemInfo.NO_ID ? R.string.remove_drop_target_label : android.R.string.cancel); requestLayout(); diff --git a/src/com/android/launcher3/DragSource.java b/src/com/android/launcher3/DragSource.java index dcd8f589a6..c6106c23e4 100644 --- a/src/com/android/launcher3/DragSource.java +++ b/src/com/android/launcher3/DragSource.java @@ -26,22 +26,6 @@ import com.android.launcher3.logging.UserEventDispatcher.LogContainerProvider; */ public interface DragSource extends LogContainerProvider { - /** - * @return whether items dragged from this source supports 'App Info' - */ - boolean supportsAppInfoDropTarget(); - - /** - * @return whether items dragged from this source supports 'Delete' drop target (e.g. to remove - * a shortcut.) If this returns false, the drop target will say "Cancel" instead of "Remove." - */ - boolean supportsDeleteDropTarget(); - - /* - * @return the scale of the icons over the workspace icon size - */ - float getIntrinsicIconScaleFactor(); - /** * A callback made back to the source after an item from this source has been dropped on a * DropTarget. diff --git a/src/com/android/launcher3/InfoDropTarget.java b/src/com/android/launcher3/InfoDropTarget.java index f919dd052c..eb6a7045ef 100644 --- a/src/com/android/launcher3/InfoDropTarget.java +++ b/src/com/android/launcher3/InfoDropTarget.java @@ -99,8 +99,8 @@ public class InfoDropTarget extends UninstallDropTarget { } @Override - protected boolean supportsDrop(DragSource source, ItemInfo info) { - return source.supportsAppInfoDropTarget() && supportsDrop(getContext(), info); + protected boolean supportsDrop(ItemInfo info) { + return supportsDrop(getContext(), info); } public static boolean supportsDrop(Context context, ItemInfo info) { diff --git a/src/com/android/launcher3/UninstallDropTarget.java b/src/com/android/launcher3/UninstallDropTarget.java index 902fd3439a..3f7de0604b 100644 --- a/src/com/android/launcher3/UninstallDropTarget.java +++ b/src/com/android/launcher3/UninstallDropTarget.java @@ -44,7 +44,7 @@ public class UninstallDropTarget extends ButtonDropTarget { } @Override - protected boolean supportsDrop(DragSource source, ItemInfo info) { + protected boolean supportsDrop(ItemInfo info) { return supportsDrop(getContext(), info); } diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 6564874365..fff075ef10 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -1823,7 +1823,7 @@ public class Workspace extends PagedView DragView dv = mDragController.startDrag(b, dragLayerX, dragLayerY, source, dragObject, dragVisualizeOffset, dragRect, scale, dragOptions); - dv.setIntrinsicIconScaleFactor(source.getIntrinsicIconScaleFactor()); + dv.setIntrinsicIconScaleFactor(dragOptions.intrinsicIconScaleFactor); return dv; } @@ -1835,6 +1835,7 @@ public class Workspace extends PagedView /** * {@inheritDoc} */ + @Override public boolean acceptDrop(DragObject d) { // If it's an external drop (e.g. from All Apps), check if it should be accepted CellLayout dropTargetLayout = mDropToLayout; @@ -3183,21 +3184,6 @@ public class Workspace extends PagedView } } - @Override - public float getIntrinsicIconScaleFactor() { - return 1f; - } - - @Override - public boolean supportsAppInfoDropTarget() { - return true; - } - - @Override - public boolean supportsDeleteDropTarget() { - return true; - } - public boolean isDropEnabled() { return true; } diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java index 246a77a172..d63ae41899 100644 --- a/src/com/android/launcher3/allapps/AllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java @@ -283,24 +283,12 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc dragController.removeDragListener(this); } }); - mLauncher.getWorkspace().beginDragShared(v, this, new DragOptions()); - return false; - } - @Override - public boolean supportsAppInfoDropTarget() { - return true; - } - - @Override - public boolean supportsDeleteDropTarget() { - return false; - } - - @Override - public float getIntrinsicIconScaleFactor() { DeviceProfile grid = mLauncher.getDeviceProfile(); - return (float) grid.allAppsIconSizePx / grid.iconSizePx; + DragOptions options = new DragOptions(); + options.intrinsicIconScaleFactor = (float) grid.allAppsIconSizePx / grid.iconSizePx; + mLauncher.getWorkspace().beginDragShared(v, this, options); + return false; } @Override diff --git a/src/com/android/launcher3/dragndrop/BaseItemDragListener.java b/src/com/android/launcher3/dragndrop/BaseItemDragListener.java index d0f2629aa7..727fb51ce2 100644 --- a/src/com/android/launcher3/dragndrop/BaseItemDragListener.java +++ b/src/com/android/launcher3/dragndrop/BaseItemDragListener.java @@ -158,21 +158,6 @@ public abstract class BaseItemDragListener implements } } - @Override - public boolean supportsAppInfoDropTarget() { - return false; - } - - @Override - public boolean supportsDeleteDropTarget() { - return false; - } - - @Override - public float getIntrinsicIconScaleFactor() { - return 1f; - } - @Override public void onDropCompleted(View target, DropTarget.DragObject d, boolean isFlingToDelete, boolean success) { diff --git a/src/com/android/launcher3/dragndrop/DragOptions.java b/src/com/android/launcher3/dragndrop/DragOptions.java index 9433aadc7e..f108f8b535 100644 --- a/src/com/android/launcher3/dragndrop/DragOptions.java +++ b/src/com/android/launcher3/dragndrop/DragOptions.java @@ -34,6 +34,9 @@ public class DragOptions { /** Determines when a pre-drag should transition to a drag. By default, this is immediate. */ public PreDragCondition preDragCondition = null; + /** Scale of the icons over the workspace icon size. */ + public float intrinsicIconScaleFactor = 1f; + /** * Specifies a condition that must be met before DragListener#onDragStart() is called. * By default, there is no condition and onDragStart() is called immediately following diff --git a/src/com/android/launcher3/folder/Folder.java b/src/com/android/launcher3/folder/Folder.java index de4de36e88..e182da140f 100644 --- a/src/com/android/launcher3/folder/Folder.java +++ b/src/com/android/launcher3/folder/Folder.java @@ -706,6 +706,7 @@ public class Folder extends AbstractFloatingView implements DragSource, View.OnC mContent.setCurrentPage(0); } + @Override public boolean acceptDrop(DragObject d) { final ItemInfo item = d.dragInfo; final int itemType = item.itemType; @@ -938,21 +939,6 @@ public class Folder extends AbstractFloatingView implements DragSource, View.OnC } } - @Override - public float getIntrinsicIconScaleFactor() { - return 1f; - } - - @Override - public boolean supportsAppInfoDropTarget() { - return true; - } - - @Override - public boolean supportsDeleteDropTarget() { - return true; - } - private void updateItemLocationsInDatabaseBatch() { ArrayList list = getItemsInReadingOrder(); ArrayList items = new ArrayList(); diff --git a/src/com/android/launcher3/popup/PopupContainerWithArrow.java b/src/com/android/launcher3/popup/PopupContainerWithArrow.java index 409e5aefd5..5c49b4bdf3 100644 --- a/src/com/android/launcher3/popup/PopupContainerWithArrow.java +++ b/src/com/android/launcher3/popup/PopupContainerWithArrow.java @@ -792,21 +792,6 @@ public class PopupContainerWithArrow extends AbstractFloatingView implements Dra return mReduceHeightAnimatorSet; } - @Override - public boolean supportsAppInfoDropTarget() { - return true; - } - - @Override - public boolean supportsDeleteDropTarget() { - return false; - } - - @Override - public float getIntrinsicIconScaleFactor() { - return 1f; - } - @Override public void onDropCompleted(View target, DropTarget.DragObject d, boolean isFlingToDelete, boolean success) { diff --git a/src/com/android/launcher3/widget/WidgetsContainerView.java b/src/com/android/launcher3/widget/WidgetsContainerView.java index acec3dd3b8..39dd0d498e 100644 --- a/src/com/android/launcher3/widget/WidgetsContainerView.java +++ b/src/com/android/launcher3/widget/WidgetsContainerView.java @@ -196,25 +196,6 @@ public class WidgetsContainerView extends BaseContainerView // Drag related handling methods that implement {@link DragSource} interface. // - @Override - public boolean supportsAppInfoDropTarget() { - return true; - } - - /* - * Both this method and {@link #supportsFlingToDelete} has to return {@code false} for the - * {@link DeleteDropTarget} to be invisible.) - */ - @Override - public boolean supportsDeleteDropTarget() { - return false; - } - - @Override - public float getIntrinsicIconScaleFactor() { - return 0; - } - @Override public void onDropCompleted(View target, DragObject d, boolean isFlingToDelete, boolean success) {