Merge "Better separation between DragDriver and DragController" into ub-launcher3-master
diff --git a/src/com/android/launcher3/DragController.java b/src/com/android/launcher3/DragController.java
index 53e90fc..2b4f019 100644
--- a/src/com/android/launcher3/DragController.java
+++ b/src/com/android/launcher3/DragController.java
@@ -43,7 +43,7 @@
/**
* Class for initiating a drag within a view or across multiple views.
*/
-public class DragController {
+public class DragController implements DragDriver.EventListener {
private static final String TAG = "Launcher.DragController";
/** Indicates the drag is a move. */
@@ -91,7 +91,7 @@
/** the area at the edge of the screen that makes the workspace go left
* or right while you're dragging.
*/
- private int mScrollZone;
+ private final int mScrollZone;
private DropTarget.DragObject mDragObject;
@@ -123,7 +123,7 @@
private int mTmpPoint[] = new int[2];
private Rect mDragLayerRect = new Rect();
- protected int mFlingToDeleteThresholdVelocity;
+ protected final int mFlingToDeleteThresholdVelocity;
private VelocityTracker mVelocityTracker;
/**
@@ -341,6 +341,7 @@
}
endDrag();
}
+
public void onAppsRemoved(final ArrayList<String> packageNames, HashSet<ComponentName> cns) {
// Cancel the current drag if we are removing an app that we are dragging
if (mDragObject != null) {
@@ -428,18 +429,14 @@
mLastTouchUpTime = -1;
}
- /**
- * Call this from the drag driver.
- */
+ @Override
public void onDriverDragMove(float x, float y) {
final int[] dragLayerPos = getClampedDragLayerPos(x, y);
handleMoveEvent(dragLayerPos[0], dragLayerPos[1]);
}
- /**
- * Call this from the drag driver.
- */
+ @Override
public void onDriverDragEnd(float x, float y, DropTarget dropTargetOverride) {
final int[] dragLayerPos = getClampedDragLayerPos(x, y);
final int dragLayerX = dragLayerPos[0];
@@ -467,6 +464,11 @@
endDrag();
}
+ @Override
+ public void onDriverDragCancel() {
+ cancelDrag();
+ }
+
/**
* Call this from a drag source view.
*/
diff --git a/src/com/android/launcher3/DragDriver.java b/src/com/android/launcher3/DragDriver.java
index b4e7bda..6cd52bd 100644
--- a/src/com/android/launcher3/DragDriver.java
+++ b/src/com/android/launcher3/DragDriver.java
@@ -28,10 +28,16 @@
* Base class for driving a drag/drop operation.
*/
public abstract class DragDriver {
- protected final DragController mDragController;
+ protected final EventListener mEventListener;
- public DragDriver(DragController dragController) {
- mDragController = dragController;
+ public interface EventListener {
+ void onDriverDragMove(float x, float y);
+ void onDriverDragEnd(float x, float y, DropTarget dropTargetOverride);
+ void onDriverDragCancel();
+ }
+
+ public DragDriver(EventListener eventListener) {
+ mEventListener = eventListener;
}
/**
@@ -113,7 +119,7 @@
if (!mDragView.startDrag(dragData, shadowBuilder, null, flags)) {
mDragging = false;
- mDragController.cancelDrag();
+ mEventListener.onDriverDragCancel();
return;
}
@@ -151,7 +157,7 @@
case DragEvent.ACTION_DRAG_LOCATION:
mLastX = event.getX();
mLastY = event.getY();
- mDragController.onDriverDragMove(event.getX(), event.getY());
+ mEventListener.onDriverDragMove(event.getX(), event.getY());
return true;
case DragEvent.ACTION_DROP:
@@ -172,7 +178,7 @@
final DropTarget dropTargetOverride = acceptedByAnotherWindow ?
new AnotherWindowDropTarget(mDragView.getContext()) : null;
- mDragController.onDriverDragEnd(mLastX, mLastY, dropTargetOverride);
+ mEventListener.onDriverDragEnd(mLastX, mLastY, dropTargetOverride);
mDragging = false;
return true;
@@ -199,14 +205,14 @@
switch (action) {
case MotionEvent.ACTION_MOVE:
- mDragController.onDriverDragMove(ev.getX(), ev.getY());
+ mEventListener.onDriverDragMove(ev.getX(), ev.getY());
break;
case MotionEvent.ACTION_UP:
- mDragController.onDriverDragMove(ev.getX(), ev.getY());
- mDragController.onDriverDragEnd(ev.getX(), ev.getY(), null);
+ mEventListener.onDriverDragMove(ev.getX(), ev.getY());
+ mEventListener.onDriverDragEnd(ev.getX(), ev.getY(), null);
break;
case MotionEvent.ACTION_CANCEL:
- mDragController.cancelDrag();
+ mEventListener.onDriverDragCancel();
break;
}
@@ -219,10 +225,10 @@
switch (action) {
case MotionEvent.ACTION_UP:
- mDragController.onDriverDragEnd(ev.getX(), ev.getY(), null);
+ mEventListener.onDriverDragEnd(ev.getX(), ev.getY(), null);
break;
case MotionEvent.ACTION_CANCEL:
- mDragController.cancelDrag();
+ mEventListener.onDriverDragCancel();
break;
}