Ext.gesture.Swipe = Ext.extend(Ext.gesture.Gesture, {
listenForEnd: false,
swipeThreshold: 35,
swipeTime: 1000,
onTouchStart : function(e, touch) {
this.startTime = e.timeStamp;
this.startX = touch.pageX;
this.startY = touch.pageY;
this.lock('scroll', 'scrollstart', 'scrollend');
},
onTouchMove : function(e, touch) {
var deltaY = touch.pageY - this.startY,
deltaX = touch.pageX - this.startX,
absDeltaY = Math.abs(deltaY),
absDeltaX = Math.abs(deltaX),
deltaTime = e.timeStamp - this.startTime;
// If the swipeTime is over, we are not gonna check for it again
if (absDeltaY - absDeltaX > 3 || deltaTime > this.swipeTime) {
this.unlock('scroll', 'scrollstart', 'scrollend');
this.stop();
}
else if (absDeltaX > this.swipeThreshold && absDeltaX > absDeltaY) {
// If this is a swipe, a scroll is not possible anymore
this.fire('swipe', e, {
direction: (deltaX < 0) ? 'left' : 'right',
distance: absDeltaX,
deltaTime: deltaTime,
deltaX: deltaX
});
this.stop();
}
}
});
Ext.regGesture('swipe', Ext.gesture.Swipe);