| | |
| | | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | * See the License for the specific language governing permissions and |
| | | * limitations under the License. |
| | | * |
| | | * |
| | | * @author Guido Marucci Blas - guido@zaubersoftware.com |
| | | * @description Adds a handler for a custom event 'taphold' that handles a |
| | | * tap and hold on touch interfaces. |
| | |
| | | startTapAndHoldDetector.call(this, event) |
| | | var element = $(this); |
| | | element.bind(TOUCHMOVE, onTouchMove); |
| | | element.bind(TOUCHEND, onTouchEnd); |
| | | element.bind(TOUCHEND, onTouchEnd); |
| | | } else { |
| | | stopTapAndHoldDetector.call(this); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | function onTouchMove(event) { |
| | |
| | | var e = event.originalEvent; |
| | | var x = (e.changedTouches) ? e.changedTouches[0].pageX: e.pageX; |
| | | var y = (e.changedTouches) ? e.changedTouches[0].pageY: e.pageY; |
| | | |
| | | |
| | | var tapAndHoldPoint = $(this).data("taphold.point"); |
| | | var euclideanDistance = calculateEuclideanDistance(tapAndHoldPoint.x, tapAndHoldPoint.y, x, y); |
| | | |
| | | |
| | | if (euclideanDistance > MAX_DISTANCE_ALLOWED_IN_TAP_AND_HOLD_EVENT) { |
| | | stopTapAndHoldDetector.call(this); |
| | | } |
| | |
| | | function clear() { |
| | | tapAndHoldTimer = null; |
| | | $(this).unbind(TOUCHMOVE, onTouchMove); |
| | | $(this).unbind(TOUCHEND, onTouchEnd); |
| | | $(this).unbind(TOUCHEND, onTouchEnd); |
| | | }; |
| | | |
| | | function startTapAndHoldDetector(event) { |
| | |
| | | |
| | | function stopTapAndHoldDetector() { |
| | | clearTimeout(tapAndHoldTimer); |
| | | clear.call(this); |
| | | clear.call(this); |
| | | }; |
| | | |
| | | $.event.special["taphold"] = { |
| | | setup: function() { |
| | | |
| | | |
| | | }, |
| | | |
| | | add: function(handleObj) { |
| | |
| | | }, |
| | | |
| | | teardown: function() { |
| | | |
| | | |
| | | } |
| | | }; |
| | | |
| | | })(jQuery); |
| | | })(jQuery); |