4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
8 * Jaewon Lim <jaewon81.lim@samsung.com>
9 * Woojin Jung <woojin2.jung@samsung.com>
10 * Juyoung Kim <j0.kim@samsung.com>
12 * This library is free software; you can redistribute it and/or modify it under
13 * the terms of the GNU Lesser General Public License as published by the
14 * Free Software Foundation; either version 2.1 of the License, or (at your option)
17 * This library is distributed in the hope that it will be useful, but WITHOUT ANY
18 * WARRANTY; without even the implied warranty of MERCHANTABILITY or
19 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
20 * License for more details.
22 * You should have received a copy of the GNU Lesser General Public License
23 * along with this library; if not, write to the Free Software Foundation, Inc., 51
24 * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
33 #include "probeinfo.h"
34 #include "osp_probe.h"
35 #include "dacollection.h"
40 #define GESTURE_EVENT_LOG(_FUNCNAME, _GESTURETYPE, _X, _Y, _INFO1, _INFO2) \
41 setProbePoint(&probeInfo); \
43 APPEND_LOG_BASIC_NAME(LC_UIEVENT, _FUNCNAME); \
44 APPEND_LOG_COMMON_NONE(0); \
45 log.length += sprintf(log.data + log.length, "`,%d`,%d`,%d`,%d`,%d`,%d", \
46 _EVENT_GESTURE, _GESTURETYPE, _X, _Y, _INFO1, _INFO2); \
47 printLog(&log, MSG_LOG)
49 #define PACK_GESTURE_EVENT(_GESTURETYPE, _X, _Y, _INFO1, _INFO2, _ARGDETECTOR) \
52 PREPARE_LOCAL_BUF(); \
53 PACK_COMMON_BEGIN(MSG_PROBE_UIEVENT, LC_UIEVENT, "p", _ARGDETECTOR); \
54 PACK_COMMON_END(0, 0, 0); \
55 sprintf(info1_str, "%d", _INFO1); \
56 PACK_UIEVENT(_EVENT_GESTURE, _GESTURETYPE, _X, _Y, info1_str, _INFO2); \
60 GestureEventListener GestureEventListener::rInstance;
62 GestureEventListener::GestureEventListener()
67 GestureEventListener::~GestureEventListener()
72 void GestureEventListener::OnCustomGestureCanceled (TouchGestureDetector &gestureDetector)
74 DECLARE_COMMON_VARIABLE;
76 if(isOptionEnabled(OPT_EVENT))
79 GESTURE_EVENT_LOG("canceled", _GESTURE_CUSTOM, 0, 0, 0, 0);
80 PACK_GESTURE_EVENT(_GESTURE_CUSTOM, 0, 0, 0, 0, &gestureDetector);
85 void GestureEventListener::OnCustomGestureChanged (TouchGestureDetector &gestureDetector)
87 DECLARE_COMMON_VARIABLE;
89 if(isOptionEnabled(OPT_EVENT))
92 GESTURE_EVENT_LOG("changed", _GESTURE_CUSTOM, 0, 0, 0, 0);
93 PACK_GESTURE_EVENT(_GESTURE_CUSTOM, 0, 0, 0, 0, &gestureDetector);
98 void GestureEventListener::OnCustomGestureFinished (TouchGestureDetector &gestureDetector)
100 DECLARE_COMMON_VARIABLE;
102 if(isOptionEnabled(OPT_EVENT))
105 GESTURE_EVENT_LOG("finished", _GESTURE_CUSTOM, 0, 0, 0, 0);
106 PACK_GESTURE_EVENT(_GESTURE_CUSTOM, 0, 0, 0, 0, &gestureDetector);
111 void GestureEventListener::OnCustomGestureStarted (TouchGestureDetector &gestureDetector)
113 DECLARE_COMMON_VARIABLE;
115 if(isOptionEnabled(OPT_EVENT))
118 GESTURE_EVENT_LOG("started", _GESTURE_CUSTOM, 0, 0, 0, 0);
119 PACK_GESTURE_EVENT(_GESTURE_CUSTOM, 0, 0, 0, 0, &gestureDetector);
124 void GestureEventListener::OnFlickGestureCanceled (TouchFlickGestureDetector &gestureDetector)
126 DECLARE_COMMON_VARIABLE;
128 if(isOptionEnabled(OPT_EVENT))
132 int x = 0, y = 0, dur = 0;
133 FlickDirection direction = FLICK_DIRECTION_NONE;
135 gestureDetector.GetDistance(x, y);
136 dur = gestureDetector.GetDuration();
137 direction = gestureDetector.GetDirection();
138 GESTURE_EVENT_LOG("canceled", _GESTURE_FLICK, x, y, dur, (int)direction);
139 PACK_GESTURE_EVENT(_GESTURE_FLICK, x, y, dur, (int)direction, &gestureDetector);
145 void GestureEventListener::OnFlickGestureDetected (TouchFlickGestureDetector &gestureDetector)
147 DECLARE_COMMON_VARIABLE;
149 if(isOptionEnabled(OPT_EVENT))
153 int x = 0, y = 0, dur = 0;
154 FlickDirection direction = FLICK_DIRECTION_NONE;
156 gestureDetector.GetDistance(x, y);
157 dur = gestureDetector.GetDuration();
158 direction = gestureDetector.GetDirection();
159 GESTURE_EVENT_LOG("detected", _GESTURE_FLICK, x, y, dur, (int)direction);
160 PACK_GESTURE_EVENT(_GESTURE_FLICK, x, y, dur, (int)direction, &gestureDetector);
166 void GestureEventListener::OnLongPressGestureCanceled (TouchLongPressGestureDetector &gestureDetector)
168 DECLARE_COMMON_VARIABLE;
170 if(isOptionEnabled(OPT_EVENT))
174 int moveallow = 0, tcount = 0, dur = 0;
176 moveallow = gestureDetector.GetMoveAllowance();
177 dur = gestureDetector.GetDuration();
178 tcount = gestureDetector.GetTouchCount();
179 GESTURE_EVENT_LOG("canceled", _GESTURE_LONGPRESS, moveallow, 0, dur, tcount);
180 PACK_GESTURE_EVENT(_GESTURE_LONGPRESS, moveallow, 0, dur, tcount, &gestureDetector);
186 void GestureEventListener::OnLongPressGestureDetected (TouchLongPressGestureDetector &gestureDetector)
188 DECLARE_COMMON_VARIABLE;
190 if(isOptionEnabled(OPT_EVENT))
194 int moveallow = 0, tcount = 0, dur = 0;
196 moveallow = gestureDetector.GetMoveAllowance();
197 dur = gestureDetector.GetDuration();
198 tcount = gestureDetector.GetTouchCount();
199 GESTURE_EVENT_LOG("detected", _GESTURE_LONGPRESS, moveallow, 0, dur, tcount);
200 PACK_GESTURE_EVENT(_GESTURE_LONGPRESS, moveallow, 0, dur, tcount, &gestureDetector);
206 void GestureEventListener::OnPanningGestureCanceled (TouchPanningGestureDetector &gestureDetector)
208 DECLARE_COMMON_VARIABLE;
210 if(isOptionEnabled(OPT_EVENT))
216 tcount = gestureDetector.GetTouchCount();
217 GESTURE_EVENT_LOG("canceled", _GESTURE_PANNING, 0, 0, 0, tcount);
218 PACK_GESTURE_EVENT(_GESTURE_PANNING, 0, 0, 0, tcount, &gestureDetector);
224 void GestureEventListener::OnPanningGestureChanged (TouchPanningGestureDetector &gestureDetector)
226 DECLARE_COMMON_VARIABLE;
228 if(isOptionEnabled(OPT_EVENT))
234 tcount = gestureDetector.GetTouchCount();
235 GESTURE_EVENT_LOG("changed", _GESTURE_PANNING, 0, 0, 0, tcount);
236 PACK_GESTURE_EVENT(_GESTURE_PANNING, 0, 0, 0, tcount, &gestureDetector);
242 void GestureEventListener::OnPanningGestureFinished (TouchPanningGestureDetector &gestureDetector)
244 DECLARE_COMMON_VARIABLE;
246 if(isOptionEnabled(OPT_EVENT))
252 tcount = gestureDetector.GetTouchCount();
253 GESTURE_EVENT_LOG("finished", _GESTURE_PANNING, 0, 0, 0, tcount);
254 PACK_GESTURE_EVENT(_GESTURE_PANNING, 0, 0, 0, tcount, &gestureDetector);
260 void GestureEventListener::OnPanningGestureStarted (TouchPanningGestureDetector &gestureDetector)
262 DECLARE_COMMON_VARIABLE;
264 if(isOptionEnabled(OPT_EVENT))
270 tcount = gestureDetector.GetTouchCount();
271 GESTURE_EVENT_LOG("started", _GESTURE_PANNING, 0, 0, 0, tcount);
272 PACK_GESTURE_EVENT(_GESTURE_PANNING, 0, 0, 0, tcount, &gestureDetector);
278 void GestureEventListener::OnPinchGestureCanceled (TouchPinchGestureDetector &gestureDetector)
280 DECLARE_COMMON_VARIABLE;
282 if(isOptionEnabled(OPT_EVENT))
286 Tizen::Graphics::Point point;
289 point = gestureDetector.GetCenterPoint();
290 scale = gestureDetector.GetScale();
291 GESTURE_EVENT_LOG("canceled", _GESTURE_PINCH, point.x, point.y, scale, 0);
292 PACK_GESTURE_EVENT(_GESTURE_PINCH, point.x, point.y, scale, 0, &gestureDetector);
298 void GestureEventListener::OnPinchGestureChanged (TouchPinchGestureDetector &gestureDetector)
300 DECLARE_COMMON_VARIABLE;
302 if(isOptionEnabled(OPT_EVENT))
306 Tizen::Graphics::Point point;
309 point = gestureDetector.GetCenterPoint();
310 scale = gestureDetector.GetScale();
311 GESTURE_EVENT_LOG("changed", _GESTURE_PINCH, point.x, point.y, scale, 0);
312 PACK_GESTURE_EVENT(_GESTURE_PINCH, point.x, point.y, scale, 0, &gestureDetector);
318 void GestureEventListener::OnPinchGestureFinished (TouchPinchGestureDetector &gestureDetector)
320 DECLARE_COMMON_VARIABLE;
322 if(isOptionEnabled(OPT_EVENT))
326 Tizen::Graphics::Point point;
329 point = gestureDetector.GetCenterPoint();
330 scale = gestureDetector.GetScale();
331 GESTURE_EVENT_LOG("finished", _GESTURE_PINCH, point.x, point.y, scale, 0);
332 PACK_GESTURE_EVENT(_GESTURE_PINCH, point.x, point.y, scale, 0, &gestureDetector);
338 void GestureEventListener::OnPinchGestureStarted (TouchPinchGestureDetector &gestureDetector)
340 DECLARE_COMMON_VARIABLE;
342 if(isOptionEnabled(OPT_EVENT))
346 Tizen::Graphics::Point point;
349 point = gestureDetector.GetCenterPoint();
350 scale = gestureDetector.GetScale();
351 GESTURE_EVENT_LOG("started", _GESTURE_PINCH, point.x, point.y, scale, 0);
352 PACK_GESTURE_EVENT(_GESTURE_PINCH, point.x, point.y, scale, 0, &gestureDetector);
358 void GestureEventListener::OnRotationGestureCanceled (TouchRotationGestureDetector &gestureDetector)
360 DECLARE_COMMON_VARIABLE;
362 if(isOptionEnabled(OPT_EVENT))
369 distance = gestureDetector.GetDistance();
370 angle = gestureDetector.GetAngle();
371 GESTURE_EVENT_LOG("canceled", _GESTURE_ROTATION, 0, 0, distance, static_cast<int>(angle));
372 PACK_GESTURE_EVENT(_GESTURE_ROTATION, 0, 0, distance, static_cast<int>(angle), &gestureDetector);
378 void GestureEventListener::OnRotationGestureChanged (TouchRotationGestureDetector &gestureDetector)
380 DECLARE_COMMON_VARIABLE;
382 if(isOptionEnabled(OPT_EVENT))
389 distance = gestureDetector.GetDistance();
390 angle = gestureDetector.GetAngle();
391 GESTURE_EVENT_LOG("changed", _GESTURE_ROTATION, 0, 0, distance, static_cast<int>(angle));
392 PACK_GESTURE_EVENT(_GESTURE_ROTATION, 0, 0, distance, static_cast<int>(angle), &gestureDetector);
398 void GestureEventListener::OnRotationGestureFinished (TouchRotationGestureDetector &gestureDetector)
400 DECLARE_COMMON_VARIABLE;
402 if(isOptionEnabled(OPT_EVENT))
409 distance = gestureDetector.GetDistance();
410 angle = gestureDetector.GetAngle();
411 GESTURE_EVENT_LOG("finished", _GESTURE_ROTATION, 0, 0, distance, static_cast<int>(angle));
412 PACK_GESTURE_EVENT(_GESTURE_ROTATION, 0, 0, distance, static_cast<int>(angle), &gestureDetector);
418 void GestureEventListener::OnRotationGestureStarted (TouchRotationGestureDetector &gestureDetector)
420 DECLARE_COMMON_VARIABLE;
422 if(isOptionEnabled(OPT_EVENT))
429 distance = gestureDetector.GetDistance();
430 angle = gestureDetector.GetAngle();
431 GESTURE_EVENT_LOG("started", _GESTURE_ROTATION, 0, 0, distance, static_cast<int>(angle));
432 PACK_GESTURE_EVENT(_GESTURE_ROTATION, 0, 0, distance, static_cast<int>(angle), &gestureDetector);
438 void GestureEventListener::OnTapGestureCanceled (TouchTapGestureDetector &gestureDetector)
440 DECLARE_COMMON_VARIABLE;
442 if(isOptionEnabled(OPT_EVENT))
446 int move = 0, tapcount = 0, touchcount = 0, interval = 0;
448 move = gestureDetector.GetMoveAllowance();
449 tapcount = gestureDetector.GetTapCount();
450 interval = gestureDetector.GetTapInterval();
451 touchcount = gestureDetector.GetTouchCount();
452 GESTURE_EVENT_LOG("canceled", _GESTURE_TAP, move, tapcount, interval, touchcount);
453 PACK_GESTURE_EVENT(_GESTURE_TAP, move, tapcount, interval, touchcount, &gestureDetector);
459 void GestureEventListener::OnTapGestureDetected (TouchTapGestureDetector &gestureDetector)
461 DECLARE_COMMON_VARIABLE;
463 if(isOptionEnabled(OPT_EVENT))
467 int move = 0, tapcount = 0, touchcount = 0, interval = 0;
469 move = gestureDetector.GetMoveAllowance();
470 tapcount = gestureDetector.GetTapCount();
471 interval = gestureDetector.GetTapInterval();
472 touchcount = gestureDetector.GetTouchCount();
473 GESTURE_EVENT_LOG("detected", _GESTURE_TAP, move, tapcount, interval, touchcount);
474 PACK_GESTURE_EVENT(_GESTURE_TAP, move, tapcount, interval, touchcount, &gestureDetector);
480 GestureEventListener& GestureEventListener::GetInstance()
486 namespace Tizen { namespace Ui {
488 result TouchFlickGestureDetector::AddFlickGestureEventListener(ITouchFlickGestureEventListener& listener)
490 typedef result (TouchFlickGestureDetector::*methodType)(ITouchFlickGestureEventListener& listener);
491 static methodType addflickgestureeventlistenerp;
494 GET_REAL_FUNC_OSP(_ZN5Tizen2Ui25TouchFlickGestureDetector28AddFlickGestureEventListenerERNS0_31ITouchFlickGestureEventListenerE,
495 LIBOSP_UIFW, addflickgestureeventlistenerp);
498 GestureEventListener& mylistener = GestureEventListener::GetInstance();
499 if(add_detector_hash(static_cast<void*>(this), static_cast<void*>(&mylistener)) <= 0)
501 iret = (this->*addflickgestureeventlistenerp)(static_cast<ITouchFlickGestureEventListener&>(mylistener));
502 if(likely(iret == E_SUCCESS))
508 del_detector_hash(static_cast<void*>(this));
513 return (this->*addflickgestureeventlistenerp)(listener);
516 result TouchLongPressGestureDetector::AddLongPressGestureEventListener(ITouchLongPressGestureEventListener& listener)
518 typedef result (TouchLongPressGestureDetector::*methodType)(ITouchLongPressGestureEventListener& listener);
519 static methodType addlongpressgestureeventlistenerp;
522 GET_REAL_FUNC_OSP(_ZN5Tizen2Ui29TouchLongPressGestureDetector32AddLongPressGestureEventListenerERNS0_35ITouchLongPressGestureEventListenerE,
523 LIBOSP_UIFW, addlongpressgestureeventlistenerp);
526 GestureEventListener& mylistener = GestureEventListener::GetInstance();
527 if(add_detector_hash(static_cast<void*>(this), static_cast<void*>(&mylistener)) <= 0)
529 iret = (this->*addlongpressgestureeventlistenerp)(static_cast<ITouchLongPressGestureEventListener&>(mylistener));
530 if(likely(iret == E_SUCCESS))
536 del_detector_hash(static_cast<void*>(this));
541 return (this->*addlongpressgestureeventlistenerp)(listener);
544 result TouchPanningGestureDetector::AddPanningGestureEventListener(ITouchPanningGestureEventListener& listener)
546 typedef result (TouchPanningGestureDetector::*methodType)(ITouchPanningGestureEventListener& listener);
547 static methodType addpanninggestureeventlistenerp;
550 GET_REAL_FUNC_OSP(_ZN5Tizen2Ui27TouchPanningGestureDetector30AddPanningGestureEventListenerERNS0_33ITouchPanningGestureEventListenerE,
551 LIBOSP_UIFW, addpanninggestureeventlistenerp);
554 GestureEventListener& mylistener = GestureEventListener::GetInstance();
555 if(add_detector_hash(static_cast<void*>(this), static_cast<void*>(&mylistener)) <= 0)
557 iret = (this->*addpanninggestureeventlistenerp)(static_cast<ITouchPanningGestureEventListener&>(mylistener));
558 if(likely(iret == E_SUCCESS))
564 del_detector_hash(static_cast<void*>(this));
569 return (this->*addpanninggestureeventlistenerp)(listener);
572 result TouchPinchGestureDetector::AddPinchGestureEventListener(ITouchPinchGestureEventListener& listener)
574 typedef result (TouchPinchGestureDetector::*methodType)(ITouchPinchGestureEventListener& listener);
575 static methodType addpinchgestureeventlistenerp;
578 GET_REAL_FUNC_OSP(_ZN5Tizen2Ui25TouchPinchGestureDetector28AddPinchGestureEventListenerERNS0_31ITouchPinchGestureEventListenerE,
579 LIBOSP_UIFW, addpinchgestureeventlistenerp);
582 GestureEventListener& mylistener = GestureEventListener::GetInstance();
583 if(add_detector_hash(static_cast<void*>(this), static_cast<void*>(&mylistener)) <= 0)
585 iret = (this->*addpinchgestureeventlistenerp)(static_cast<ITouchPinchGestureEventListener&>(mylistener));
586 if(likely(iret == E_SUCCESS))
592 del_detector_hash(static_cast<void*>(this));
597 return (this->*addpinchgestureeventlistenerp)(listener);
600 result TouchRotationGestureDetector::AddRotationGestureEventListener(ITouchRotationGestureEventListener& listener)
602 typedef result (TouchRotationGestureDetector::*methodType)(ITouchRotationGestureEventListener& listener);
603 static methodType addrotationgestureeventlistenerp;
606 GET_REAL_FUNC_OSP(_ZN5Tizen2Ui28TouchRotationGestureDetector31AddRotationGestureEventListenerERNS0_34ITouchRotationGestureEventListenerE,
607 LIBOSP_UIFW, addrotationgestureeventlistenerp);
610 GestureEventListener& mylistener = GestureEventListener::GetInstance();
611 if(add_detector_hash(static_cast<void*>(this), static_cast<void*>(&mylistener)) <= 0)
613 iret = (this->*addrotationgestureeventlistenerp)(static_cast<ITouchRotationGestureEventListener&>(mylistener));
614 if(likely(iret == E_SUCCESS))
620 del_detector_hash(static_cast<void*>(this));
625 return (this->*addrotationgestureeventlistenerp)(listener);
628 result TouchTapGestureDetector::AddTapGestureEventListener(ITouchTapGestureEventListener& listener)
630 typedef result (TouchTapGestureDetector::*methodType)(ITouchTapGestureEventListener& listener);
631 static methodType addtapgestureeventlistenerp;
634 GET_REAL_FUNC_OSP(_ZN5Tizen2Ui23TouchTapGestureDetector26AddTapGestureEventListenerERNS0_29ITouchTapGestureEventListenerE,
635 LIBOSP_UIFW, addtapgestureeventlistenerp);
638 GestureEventListener& mylistener = GestureEventListener::GetInstance();
639 if(add_detector_hash(static_cast<void*>(this), static_cast<void*>(&mylistener)) <= 0)
641 iret = (this->*addtapgestureeventlistenerp)(static_cast<ITouchTapGestureEventListener&>(mylistener));
642 if(likely(iret == E_SUCCESS))
648 del_detector_hash(static_cast<void*>(this));
653 return (this->*addtapgestureeventlistenerp)(listener);
656 result TouchGestureDetector::AddGestureEventListener(ITouchGestureEventListener& listener)
658 typedef result (TouchGestureDetector::*methodType)(ITouchGestureEventListener& listener);
659 static methodType addgestureeventlistenerp;
662 GET_REAL_FUNC_OSP(_ZN5Tizen2Ui20TouchGestureDetector23AddGestureEventListenerERNS0_26ITouchGestureEventListenerE,
663 LIBOSP_UIFW, addgestureeventlistenerp);
666 GestureEventListener& mylistener = GestureEventListener::GetInstance();
667 if(add_detector_hash(static_cast<void*>(this), static_cast<void*>(&mylistener)) <= 0)
669 iret = (this->*addgestureeventlistenerp)(static_cast<ITouchGestureEventListener&>(mylistener));
670 if(likely(iret == E_SUCCESS))
676 del_detector_hash(static_cast<void*>(this));
681 return (this->*addgestureeventlistenerp)(listener);
685 } } // end of namespace