PlatformTouchEvent::PlatformTouchEvent(QTouchEvent* event) { switch (event->type()) { case QEvent::TouchBegin: m_type = TouchStart; break; case QEvent::TouchUpdate: m_type = TouchMove; break; case QEvent::TouchEnd: m_type = TouchEnd; break; } const QList<QTouchEvent::TouchPoint>& points = event->touchPoints(); for (int i = 0; i < points.count(); ++i) m_touchPoints.append(PlatformTouchPoint(points.at(i))); }
PlatformTouchEvent::PlatformTouchEvent(QTouchEvent* event) { switch (event->type()) { case QEvent::TouchBegin: m_type = TouchStart; break; case QEvent::TouchUpdate: m_type = TouchMove; break; case QEvent::TouchEnd: m_type = TouchEnd; break; } const QList<QTouchEvent::TouchPoint>& points = event->touchPoints(); for (int i = 0; i < points.count(); ++i) m_touchPoints.append(PlatformTouchPoint(points.at(i))); m_ctrlKey = (event->modifiers() & Qt::ControlModifier); m_altKey = (event->modifiers() & Qt::AltModifier); m_shiftKey = (event->modifiers() & Qt::ShiftModifier); m_metaKey = (event->modifiers() & Qt::MetaModifier); }
PlatformTouchEvent::PlatformTouchEvent(BlackBerry::Platform::TouchEvent* event) : PlatformEvent(touchEventType(event), event->shiftActive(), event->ctrlActive(), event->altActive(), false, currentTime()) , m_rotation(0) , m_scale(1) , m_doubleTap(false) , m_touchHold(false) { for (unsigned i = 0; i < event->m_points.size(); ++i) m_touchPoints.append(PlatformTouchPoint(event->m_points[i])); if (event->isPinch()) { m_rotation = event->pinchData().m_angle * 180 / M_PI; m_scale = event->pinchData().m_scale; } m_doubleTap = event->isDoubleTap(); m_touchHold = event->isTouchHold(); }
PlatformTouchEvent::PlatformTouchEvent(JNIEnv* env, jint id, jobject touchData, jboolean shift, jboolean ctrl, jboolean alt, jboolean meta, jfloat timestamp) { switch (id) { case com_sun_webkit_event_WCTouchEvent_TOUCH_START: m_type = PlatformEvent::TouchStart; break; case com_sun_webkit_event_WCTouchEvent_TOUCH_MOVE: m_type = PlatformEvent::TouchMove; break; case com_sun_webkit_event_WCTouchEvent_TOUCH_END: m_type = PlatformEvent::TouchEnd; break; } ASSERT(touchData); jint* p(static_cast<jint*>(env->GetDirectBufferAddress(touchData))); // each touch datum has 6 int (4-byte) items long count(env->GetDirectBufferCapacity(touchData) / 6 / 4); for (long i=0; i<count; i++) { jint id = *p++; jint state = *p++; jint x = *p++; jint y = *p++; jint sx = *p++; jint sy = *p++; m_touchPoints.append(PlatformTouchPoint(id, PlatformTouchPoint::State(state), IntPoint(x, y), IntPoint(sx, sy))); } m_timestamp = timestamp; m_modifiers = 0; if (shift) m_modifiers |= ShiftKey; if (ctrl) m_modifiers |= CtrlKey; if (alt) m_modifiers |= AltKey; if (meta) m_modifiers |= MetaKey; }