@@ -44,7 +44,7 @@ public class DragSortController extends SimpleFloatViewManager implements View.O
44
44
private int mRemoveMode ;
45
45
46
46
private boolean mRemoveEnabled = false ;
47
- private boolean mIsRemoving = false ;
47
+ private boolean mIsRemoving = false ;
48
48
49
49
private GestureDetector mDetector ;
50
50
@@ -79,8 +79,7 @@ public class DragSortController extends SimpleFloatViewManager implements View.O
79
79
private boolean mCanDrag ;
80
80
81
81
private DragSortListView mDslv ;
82
- private int mPositionX ;
83
-
82
+ private int mPositionX ;
84
83
85
84
/**
86
85
* Calls {@link #DragSortController(DragSortListView, int)} with a
@@ -97,9 +96,9 @@ public DragSortController(DragSortListView dslv) {
97
96
public DragSortController (DragSortListView dslv , int dragHandleId , int dragInitMode , int removeMode ) {
98
97
this (dslv , dragHandleId , dragInitMode , removeMode , 0 );
99
98
}
100
- public DragSortController ( DragSortListView dslv , int dragHandleId , int dragInitMode , int removeMode , int clickRemoveId )
101
- {
102
- this (dslv , dragHandleId , dragInitMode , removeMode , clickRemoveId ,0 );
99
+
100
+ public DragSortController ( DragSortListView dslv , int dragHandleId , int dragInitMode , int removeMode , int clickRemoveId ) {
101
+ this (dslv , dragHandleId , dragInitMode , removeMode , clickRemoveId , 0 );
103
102
}
104
103
105
104
/**
@@ -109,8 +108,8 @@ public DragSortController(DragSortListView dslv, int dragHandleId, int dragInitM
109
108
* @param dragHandleId The resource id of the View that represents
110
109
* the drag handle in a list item.
111
110
*/
112
- public DragSortController (DragSortListView dslv , int dragHandleId , int dragInitMode , int removeMode , int clickRemoveId , int flingHandleId )
113
- {
111
+ public DragSortController (DragSortListView dslv , int dragHandleId , int dragInitMode ,
112
+ int removeMode , int clickRemoveId , int flingHandleId ) {
114
113
super (dslv );
115
114
mDslv = dslv ;
116
115
mDetector = new GestureDetector (dslv .getContext (), this );
@@ -186,8 +185,8 @@ public boolean isRemoveEnabled() {
186
185
*/
187
186
public void setDragHandleId (int id ) {
188
187
mDragHandleId = id ;
189
- }
190
-
188
+ }
189
+
191
190
/**
192
191
* Set the resource id for the View that represents the fling
193
192
* handle in a list item.
@@ -208,7 +207,6 @@ public void setClickRemoveId(int id) {
208
207
mClickRemoveId = id ;
209
208
}
210
209
211
-
212
210
/**
213
211
* Sets flags to restrict certain motions of the floating View
214
212
* based on DragSortController settings (such as remove mode).
@@ -220,18 +218,19 @@ public void setClickRemoveId(int id) {
220
218
*
221
219
* @return True if drag started, false otherwise.
222
220
*/
223
- public boolean startDrag (int position , int deltaX , int deltaY ) {
221
+ public boolean startDrag (int position , int deltaX , int deltaY ) {
224
222
225
223
int dragFlags = 0 ;
226
224
if (mSortEnabled && !mIsRemoving ) {
227
225
dragFlags |= DragSortListView .DRAG_POS_Y | DragSortListView .DRAG_NEG_Y ;
228
226
}
229
- if (mRemoveEnabled && mIsRemoving ){
230
- dragFlags |= DragSortListView .DRAG_POS_X ;
231
- dragFlags |= DragSortListView .DRAG_NEG_X ;
227
+ if (mRemoveEnabled && mIsRemoving ) {
228
+ dragFlags |= DragSortListView .DRAG_POS_X ;
229
+ dragFlags |= DragSortListView .DRAG_NEG_X ;
232
230
}
233
-
234
- mDragging = mDslv .startDrag (position - mDslv .getHeaderViewsCount (), dragFlags , deltaX , deltaY );
231
+
232
+ mDragging = mDslv .startDrag (position - mDslv .getHeaderViewsCount (), dragFlags , deltaX ,
233
+ deltaY );
235
234
return mDragging ;
236
235
}
237
236
@@ -242,29 +241,29 @@ public boolean onTouch(View v, MotionEvent ev) {
242
241
}
243
242
244
243
mDetector .onTouchEvent (ev );
245
- if (mRemoveEnabled && mDragging && mRemoveMode == FLING_REMOVE ) {
244
+ if (mRemoveEnabled && mDragging && mRemoveMode == FLING_REMOVE ) {
246
245
mFlingRemoveDetector .onTouchEvent (ev );
247
246
}
248
247
249
248
int action = ev .getAction () & MotionEvent .ACTION_MASK ;
250
249
251
250
switch (action ) {
252
- case MotionEvent .ACTION_DOWN :
253
- mCurrX = (int ) ev .getX ();
254
- mCurrY = (int ) ev .getY ();
255
- break ;
256
- case MotionEvent .ACTION_UP :
257
- if (mRemoveEnabled && mIsRemoving ) {
258
- int x = mPositionX >= 0 ? mPositionX : -mPositionX ;
259
- int removePoint = mDslv .getWidth () / 2 ;
260
- if ( x > removePoint ){
261
- mDslv .stopDragWithVelocity (true ,0 );
251
+ case MotionEvent .ACTION_DOWN :
252
+ mCurrX = (int ) ev .getX ();
253
+ mCurrY = (int ) ev .getY ();
254
+ break ;
255
+ case MotionEvent .ACTION_UP :
256
+ if (mRemoveEnabled && mIsRemoving ) {
257
+ int x = mPositionX >= 0 ? mPositionX : -mPositionX ;
258
+ int removePoint = mDslv .getWidth () / 2 ;
259
+ if (x > removePoint ) {
260
+ mDslv .stopDragWithVelocity (true , 0 );
261
+ }
262
262
}
263
- }
264
- case MotionEvent .ACTION_CANCEL :
265
- mIsRemoving = false ;
266
- mDragging = false ;
267
- break ;
263
+ case MotionEvent .ACTION_CANCEL :
264
+ mIsRemoving = false ;
265
+ mDragging = false ;
266
+ break ;
268
267
}
269
268
270
269
return false ;
@@ -276,7 +275,7 @@ public boolean onTouch(View v, MotionEvent ev) {
276
275
@ Override
277
276
public void onDragFloatView (View floatView , Point position , Point touch ) {
278
277
279
- if (mRemoveEnabled && mIsRemoving ) {
278
+ if (mRemoveEnabled && mIsRemoving ) {
280
279
mPositionX = position .x ;
281
280
}
282
281
}
@@ -297,8 +296,9 @@ public void onDragFloatView(View floatView, Point position, Point touch) {
297
296
public int startDragPosition (MotionEvent ev ) {
298
297
return dragHandleHitPosition (ev );
299
298
}
299
+
300
300
public int startFlingPosition (MotionEvent ev ) {
301
- return mRemoveMode == FLING_REMOVE ? flingHandleHitPosition (ev ) : MISS ;
301
+ return mRemoveMode == FLING_REMOVE ? flingHandleHitPosition (ev ) : MISS ;
302
302
}
303
303
304
304
/**
@@ -314,32 +314,34 @@ public int startFlingPosition(MotionEvent ev) {
314
314
public int dragHandleHitPosition (MotionEvent ev ) {
315
315
return viewIdHitPosition (ev , mDragHandleId );
316
316
}
317
+
317
318
public int flingHandleHitPosition (MotionEvent ev ) {
318
- return viewIdHitPosition (ev , mFlingHandleId );
319
+ return viewIdHitPosition (ev , mFlingHandleId );
319
320
}
320
321
321
322
public int viewIdHitPosition (MotionEvent ev , int id ) {
322
323
final int x = (int ) ev .getX ();
323
324
final int y = (int ) ev .getY ();
324
325
325
- int touchPos = mDslv .pointToPosition (x , y ); //includes headers/footers
326
-
326
+ int touchPos = mDslv .pointToPosition (x , y ); // includes headers/footers
327
+
327
328
final int numHeaders = mDslv .getHeaderViewsCount ();
328
329
final int numFooters = mDslv .getFooterViewsCount ();
329
330
final int count = mDslv .getCount ();
330
-
331
- //Log.d("mobeta", "touch down on position " + itemnum);
331
+
332
+ // Log.d("mobeta", "touch down on position " + itemnum);
332
333
// We're only interested if the touch was on an
333
334
// item that's not a header or footer.
334
- if (touchPos != AdapterView .INVALID_POSITION && touchPos >= numHeaders && touchPos < (count - numFooters )) {
335
+ if (touchPos != AdapterView .INVALID_POSITION && touchPos >= numHeaders
336
+ && touchPos < (count - numFooters )) {
335
337
final View item = mDslv .getChildAt (touchPos - mDslv .getFirstVisiblePosition ());
336
338
final int rawX = (int ) ev .getRawX ();
337
339
final int rawY = (int ) ev .getRawY ();
338
-
340
+
339
341
View dragBox = id == 0 ? item : (View ) item .findViewById (id );
340
342
if (dragBox != null ) {
341
343
dragBox .getLocationOnScreen (mTempLoc );
342
-
344
+
343
345
if (rawX > mTempLoc [0 ] && rawY > mTempLoc [1 ] &&
344
346
rawX < mTempLoc [0 ] + dragBox .getWidth () &&
345
347
rawY < mTempLoc [1 ] + dragBox .getHeight ()) {
@@ -362,67 +364,56 @@ public boolean onDown(MotionEvent ev) {
362
364
}
363
365
364
366
mHitPos = startDragPosition (ev );
365
- if (mHitPos != MISS && mDragInitMode == ON_DOWN ) {
366
- startDrag (mHitPos , (int ) ev .getX () - mItemX , (int ) ev .getY () - mItemY );
367
+ if (mHitPos != MISS && mDragInitMode == ON_DOWN ) {
368
+ startDrag (mHitPos , (int ) ev .getX () - mItemX , (int ) ev .getY () - mItemY );
367
369
}
368
-
370
+
369
371
mIsRemoving = false ;
370
372
mCanDrag = true ;
371
373
mPositionX = 0 ;
372
374
mFlingHitPos = startFlingPosition (ev );
373
375
374
376
return true ;
375
377
}
376
-
378
+
377
379
@ Override
378
380
public boolean onScroll (MotionEvent e1 , MotionEvent e2 , float distanceX , float distanceY ) {
379
381
380
382
final int x1 = (int ) e1 .getX ();
381
383
final int y1 = (int ) e1 .getY ();
382
384
final int x2 = (int ) e2 .getX ();
383
385
final int y2 = (int ) e2 .getY ();
384
- final int deltaX = x2 -mItemX ;
385
- final int deltaY = y2 -mItemY ;
386
-
387
- if ( mCanDrag && !mDragging && (mHitPos != MISS || mFlingHitPos !=MISS )) {
388
-
389
- if ( mHitPos != MISS )
390
- {
391
- if ( mDragInitMode == ON_DRAG )
392
- {
393
- if ( Math .abs (y2 -y1 )>mTouchSlop && mSortEnabled )
394
- {
395
- startDrag (mHitPos , deltaX , deltaY );
396
- }
397
- else if ( Math .abs (x2 - x1 ) > mTouchSlop && mRemoveEnabled )
398
- {
399
- mIsRemoving = true ;
400
- startDrag (mFlingHitPos , deltaX , deltaY );
401
- }
402
- }
403
- //if mDragInitMode != ON_DRAG shloudn't do anything
404
- }
405
- else if ( mFlingHitPos != MISS )
406
- {
407
- if ( Math .abs (x2 - x1 ) > mTouchSlop && mRemoveEnabled )
408
- {
409
- mIsRemoving = true ;
410
- startDrag (mFlingHitPos , deltaX , deltaY );
411
- }
412
- else if ( Math .abs (y2 -y1 ) > mTouchSlop )
413
- {
414
- mCanDrag = false ; //if started to scroll the list then don't allow sorting nor fling-removing
415
- }
386
+ final int deltaX = x2 - mItemX ;
387
+ final int deltaY = y2 - mItemY ;
388
+
389
+ if (mCanDrag && !mDragging && (mHitPos != MISS || mFlingHitPos != MISS )) {
390
+ if (mHitPos != MISS ) {
391
+ if (mDragInitMode == ON_DRAG && Math .abs (y2 - y1 ) > mTouchSlop && mSortEnabled ) {
392
+ startDrag (mHitPos , deltaX , deltaY );
393
+ }
394
+ else if (mDragInitMode != ON_DOWN && Math .abs (x2 - x1 ) > mTouchSlop && mRemoveEnabled )
395
+ {
396
+ mIsRemoving = true ;
397
+ startDrag (mFlingHitPos , deltaX , deltaY );
398
+ }
399
+ } else if (mFlingHitPos != MISS ) {
400
+ if (Math .abs (x2 - x1 ) > mTouchSlop && mRemoveEnabled ) {
401
+ mIsRemoving = true ;
402
+ startDrag (mFlingHitPos , deltaX , deltaY );
403
+ } else if (Math .abs (y2 - y1 ) > mTouchSlop ) {
404
+ mCanDrag = false ; // if started to scroll the list then
405
+ // don't allow sorting nor fling-removing
406
+ }
416
407
}
417
- }
408
+ }
418
409
// return whatever
419
410
return false ;
420
411
}
421
412
422
413
@ Override
423
414
public void onLongPress (MotionEvent e ) {
424
- //Log.d("mobeta", "lift listener long pressed");
425
- if (mHitPos != MISS && mDragInitMode == ON_LONG_PRESS ) {
415
+ // Log.d("mobeta", "lift listener long pressed");
416
+ if (mHitPos != MISS && mDragInitMode == ON_LONG_PRESS ) {
426
417
mDslv .performHapticFeedback (HapticFeedbackConstants .LONG_PRESS );
427
418
startDrag (mHitPos , mCurrX - mItemX , mCurrY - mItemY );
428
419
}
@@ -454,24 +445,20 @@ public void onShowPress(MotionEvent ev) {
454
445
private GestureDetector .OnGestureListener mFlingRemoveListener =
455
446
new GestureDetector .SimpleOnGestureListener () {
456
447
@ Override
457
- public final boolean onFling (MotionEvent e1 , MotionEvent e2 , float velocityX , float velocityY ) {
458
- //Log.d("mobeta", "on fling remove called");
459
- if (mRemoveEnabled && mIsRemoving ) {
460
- int w = mDslv .getWidth ();
461
- int minPos = w /5 ;
462
- if (velocityX > mFlingSpeed )
463
- {
464
- if ( mPositionX > -minPos )
465
- {
466
- mDslv .stopDragWithVelocity (true ,velocityX );
467
- }
468
- }
469
- else if (velocityX < -mFlingSpeed )
470
- {
471
- if ( mPositionX < minPos )
472
- {
473
- mDslv .stopDragWithVelocity (true ,velocityX );
474
- }
448
+ public final boolean onFling (MotionEvent e1 , MotionEvent e2 , float velocityX ,
449
+ float velocityY ) {
450
+ // Log.d("mobeta", "on fling remove called");
451
+ if (mRemoveEnabled && mIsRemoving ) {
452
+ int w = mDslv .getWidth ();
453
+ int minPos = w / 5 ;
454
+ if (velocityX > mFlingSpeed ) {
455
+ if (mPositionX > -minPos ) {
456
+ mDslv .stopDragWithVelocity (true , velocityX );
457
+ }
458
+ } else if (velocityX < -mFlingSpeed ) {
459
+ if (mPositionX < minPos ) {
460
+ mDslv .stopDragWithVelocity (true , velocityX );
461
+ }
475
462
}
476
463
mIsRemoving = false ;
477
464
}
@@ -480,4 +467,3 @@ else if (velocityX < -mFlingSpeed )
480
467
};
481
468
482
469
}
483
-
0 commit comments