summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/Folder.java
diff options
context:
space:
mode:
authorAlan Viverette <alanv@google.com>2013-08-28 17:53:41 -0700
committerMindy Pereira <mindyp@google.com>2013-09-03 08:32:03 -0700
commit4cda5b770db7f375a4766fe6c0d657b9d5303374 (patch)
treee6cb8760a0e81835aa1fbc69a0195f1f97e7eaf8 /src/com/android/launcher3/Folder.java
parent8b3cd79082043a08c319f1550679d4078b7d509c (diff)
downloadandroid_packages_apps_Trebuchet-4cda5b770db7f375a4766fe6c0d657b9d5303374.tar.gz
android_packages_apps_Trebuchet-4cda5b770db7f375a4766fe6c0d657b9d5303374.tar.bz2
android_packages_apps_Trebuchet-4cda5b770db7f375a4766fe6c0d657b9d5303374.zip
Port AutoScroller to launcher3
Change-Id: Ic2b7b5faac4878f3b4645c291e36c5f7734c7f8b
Diffstat (limited to 'src/com/android/launcher3/Folder.java')
-rw-r--r--src/com/android/launcher3/Folder.java46
1 files changed, 23 insertions, 23 deletions
diff --git a/src/com/android/launcher3/Folder.java b/src/com/android/launcher3/Folder.java
index f57ff07a9..33d300cad 100644
--- a/src/com/android/launcher3/Folder.java
+++ b/src/com/android/launcher3/Folder.java
@@ -25,6 +25,7 @@ import android.content.res.Resources;
import android.graphics.PointF;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
+import android.os.SystemClock;
import android.text.InputType;
import android.text.Selection;
import android.text.Spannable;
@@ -107,8 +108,6 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList
private float mFolderIconPivotX;
private float mFolderIconPivotY;
- private static final float MAX_SCROLL_VELOCITY = 1500f;
-
private boolean mIsEditingName = false;
private InputMethodManager mInputMethodManager;
@@ -121,7 +120,7 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList
private boolean mDestroyed;
- private AutoScroller mAutoScroller;
+ private AutoScrollHelper mAutoScrollHelper;
private Runnable mDeferredAction;
private boolean mDeferDropAfterUninstall;
@@ -193,9 +192,7 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList
mFolderName.setSelectAllOnFocus(true);
mFolderName.setInputType(mFolderName.getInputType() |
InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
- mAutoScroller = new AutoScroller(mScrollView);
- mAutoScroller.setMaximumVelocityAbsolute(MAX_SCROLL_VELOCITY, MAX_SCROLL_VELOCITY);
- mAutoScroller.setExtendsBeyondEdges(false);
+ mAutoScrollHelper = new FolderAutoScrollHelper(mScrollView);
}
private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
@@ -626,24 +623,29 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList
return (getLayoutDirection() == LAYOUT_DIRECTION_RTL);
}
- private Rect getDragObjectDrawingRect(View dragView, float[] r) {
- final Rect drawingRect = mTempRect;
- drawingRect.left = (int) r[0];
- drawingRect.top = (int) r[1];
- drawingRect.right = drawingRect.left + dragView.getMeasuredWidth();
- drawingRect.bottom = drawingRect.top + dragView.getMeasuredHeight();
- return drawingRect;
- }
-
public void onDragOver(DragObject d) {
- int scrollOffset = mScrollView.getScrollY();
- float[] r = getDragViewVisualCenter(d.x, d.y, d.xOffset, d.yOffset, d.dragView, null);
+ final DragView dragView = d.dragView;
+ final int scrollOffset = mScrollView.getScrollY();
+ final float[] r = getDragViewVisualCenter(d.x, d.y, d.xOffset, d.yOffset, dragView, null);
r[0] -= getPaddingLeft();
r[1] -= getPaddingTop();
- if (!mAutoScroller.onTouch(this, getDragObjectDrawingRect(d.dragView, r))) {
- mTargetCell = mContent.findNearestArea((int) r[0], (int) r[1] + scrollOffset, 1, 1,
- mTargetCell);
+ final long downTime = SystemClock.uptimeMillis();
+ final MotionEvent translatedEv = MotionEvent.obtain(
+ downTime, downTime, MotionEvent.ACTION_MOVE, d.x, d.y, 0);
+
+ if (!mAutoScrollHelper.isEnabled()) {
+ mAutoScrollHelper.setEnabled(true);
+ }
+
+ final boolean handled = mAutoScrollHelper.onTouch(this, translatedEv);
+ translatedEv.recycle();
+
+ if (handled) {
+ mReorderAlarm.cancelAlarm();
+ } else {
+ mTargetCell = mContent.findNearestArea(
+ (int) r[0], (int) r[1] + scrollOffset, 1, 1, mTargetCell);
if (isLayoutRtl()) {
mTargetCell[0] = mContent.getCountX() - mTargetCell[0] - 1;
}
@@ -658,8 +660,6 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList
} else {
mDragMode = DRAG_MODE_NONE;
}
- } else {
- mReorderAlarm.cancelAlarm();
}
}
@@ -705,7 +705,7 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList
public void onDragExit(DragObject d) {
// Exiting folder; stop the auto scroller.
- mAutoScroller.stop();
+ mAutoScrollHelper.setEnabled(false);
// We only close the folder if this is a true drag exit, ie. not because
// a drop has occurred above the folder.
if (!d.dragComplete) {