Removing some methods from the DragSource
This makes is easier to create new DragSource and sets up
proper default values in DragOptions
Change-Id: I6cb0b1df41b9730cf29f785fe85fe7f0b573ee3a
diff --git a/src/com/android/launcher3/ButtonDropTarget.java b/src/com/android/launcher3/ButtonDropTarget.java
index 632e490..3759300 100644
--- a/src/com/android/launcher3/ButtonDropTarget.java
+++ b/src/com/android/launcher3/ButtonDropTarget.java
@@ -178,7 +178,7 @@
@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 @@
@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 4dcb64f..fdd4f34 100644
--- a/src/com/android/launcher3/DeleteDropTarget.java
+++ b/src/com/android/launcher3/DeleteDropTarget.java
@@ -46,7 +46,7 @@
@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 @@
}
@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 dcd8f58..c6106c2 100644
--- a/src/com/android/launcher3/DragSource.java
+++ b/src/com/android/launcher3/DragSource.java
@@ -27,22 +27,6 @@
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 f919dd0..eb6a704 100644
--- a/src/com/android/launcher3/InfoDropTarget.java
+++ b/src/com/android/launcher3/InfoDropTarget.java
@@ -99,8 +99,8 @@
}
@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 902fd34..3f7de06 100644
--- a/src/com/android/launcher3/UninstallDropTarget.java
+++ b/src/com/android/launcher3/UninstallDropTarget.java
@@ -44,7 +44,7 @@
}
@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 74c96a3..d003fa4 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -1869,7 +1869,7 @@
DragView dv = mDragController.startDrag(b, dragLayerX, dragLayerY, source,
dragObject, dragVisualizeOffset, dragRect, scale, dragOptions);
- dv.setIntrinsicIconScaleFactor(source.getIntrinsicIconScaleFactor());
+ dv.setIntrinsicIconScaleFactor(dragOptions.intrinsicIconScaleFactor);
return dv;
}
@@ -1881,6 +1881,7 @@
/**
* {@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;
@@ -3240,21 +3241,6 @@
}
}
- @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 4eba5c6..03e9c39 100644
--- a/src/com/android/launcher3/allapps/AllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java
@@ -290,24 +290,12 @@
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 d0f2629..727fb51 100644
--- a/src/com/android/launcher3/dragndrop/BaseItemDragListener.java
+++ b/src/com/android/launcher3/dragndrop/BaseItemDragListener.java
@@ -159,21 +159,6 @@
}
@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) {
if (isFlingToDelete || !success || (target != mLauncher.getWorkspace() &&
diff --git a/src/com/android/launcher3/dragndrop/DragOptions.java b/src/com/android/launcher3/dragndrop/DragOptions.java
index 9433aad..f108f8b 100644
--- a/src/com/android/launcher3/dragndrop/DragOptions.java
+++ b/src/com/android/launcher3/dragndrop/DragOptions.java
@@ -34,6 +34,9 @@
/** 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 de4de36..e182da1 100644
--- a/src/com/android/launcher3/folder/Folder.java
+++ b/src/com/android/launcher3/folder/Folder.java
@@ -706,6 +706,7 @@
mContent.setCurrentPage(0);
}
+ @Override
public boolean acceptDrop(DragObject d) {
final ItemInfo item = d.dragInfo;
final int itemType = item.itemType;
@@ -938,21 +939,6 @@
}
}
- @Override
- public float getIntrinsicIconScaleFactor() {
- return 1f;
- }
-
- @Override
- public boolean supportsAppInfoDropTarget() {
- return true;
- }
-
- @Override
- public boolean supportsDeleteDropTarget() {
- return true;
- }
-
private void updateItemLocationsInDatabaseBatch() {
ArrayList<View> list = getItemsInReadingOrder();
ArrayList<ItemInfo> items = new ArrayList<ItemInfo>();
diff --git a/src/com/android/launcher3/popup/PopupContainerWithArrow.java b/src/com/android/launcher3/popup/PopupContainerWithArrow.java
index 409e5ae..5c49b4b 100644
--- a/src/com/android/launcher3/popup/PopupContainerWithArrow.java
+++ b/src/com/android/launcher3/popup/PopupContainerWithArrow.java
@@ -793,21 +793,6 @@
}
@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) {
if (!success) {
diff --git a/src/com/android/launcher3/widget/WidgetsContainerView.java b/src/com/android/launcher3/widget/WidgetsContainerView.java
index acec3dd..39dd0d4 100644
--- a/src/com/android/launcher3/widget/WidgetsContainerView.java
+++ b/src/com/android/launcher3/widget/WidgetsContainerView.java
@@ -197,25 +197,6 @@
//
@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) {
if (LOGD) {