webengine/webkitutils/rt_gesturehelper/src/gestureeventfilter.cpp
changeset 42 d39add9822e2
parent 38 6297cdf66332
child 46 ea4b2e4f7cac
child 47 9377e2ba0634
child 65 5bfc169077b2
equal deleted inserted replaced
38:6297cdf66332 42:d39add9822e2
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 *
       
    16 */
       
    17 /*
       
    18  * gestureeventfilter.cpp
       
    19  *
       
    20  *  Created on: Jan 22, 2009
       
    21  *      Author: tyutyuni
       
    22  */
       
    23 
       
    24 #include "gesturedefs.h"
       
    25 #include "gestureeventfilter.h"
       
    26 
       
    27 
       
    28 using namespace RT_GestureHelper;
       
    29 
       
    30 CGestureEventFilter::CGestureEventFilter(TInt aTapSize):iTapSize(aTapSize)
       
    31     {
       
    32     
       
    33     }
       
    34 
       
    35 CGestureEventFilter::~CGestureEventFilter()
       
    36     {
       
    37     
       
    38     }
       
    39 
       
    40 
       
    41 TBool CGestureEventFilter::FilterDrag(const TPointerEvent& aPointerEvent, TInt& aReason)
       
    42     {
       
    43     TTime now;
       
    44     now.HomeTime();
       
    45     return FilterDrag(aPointerEvent, now, aReason);
       
    46     }
       
    47 
       
    48 TBool CGestureEventFilter::FilterDrag(const TPointerEvent& aPointerEvent, TTime& eventTime, TInt& aReason)
       
    49     {
       
    50     TBool filtered = EFalse;
       
    51     
       
    52     aReason = EFilteredNoReason;
       
    53     
       
    54     switch (aPointerEvent.iType)
       
    55         {
       
    56         case TPointerEvent::EButton1Down:
       
    57             {
       
    58             iIsTouchDown = ETrue;
       
    59             iTouchDownTime = iLastEventTime;
       
    60             iTouchDownPos = aPointerEvent.iPosition;
       
    61             break;
       
    62             }
       
    63         case TPointerEvent::EDrag:
       
    64             {
       
    65             if (iIsTouchDown)
       
    66                 {
       
    67                 TPoint delta = aPointerEvent.iPosition - iTouchDownPos;
       
    68                 filtered = (Abs(delta.iX) <= iTapSize && Abs(delta.iY) <= iTapSize);
       
    69                 aReason = (filtered) ? EFilteredBySize : EFilteredNoReason;
       
    70                 }
       
    71                 
       
    72             if (!filtered)
       
    73                 {
       
    74                 filtered = (eventTime.MicroSecondsFrom(iLastEventTime) < KMinTimeBetweenDrags);
       
    75                 aReason = (filtered) ? EFilteredByTime : EFilteredNoReason;
       
    76                 }
       
    77             
       
    78             if (!filtered)
       
    79                 {
       
    80                 iLastEventTime = eventTime;
       
    81                 }
       
    82             iIsTouchDown = filtered;
       
    83             
       
    84             break;
       
    85             }
       
    86         case TPointerEvent::EButton1Up:
       
    87             {
       
    88             iIsTouchDown = EFalse;
       
    89             break;
       
    90             }
       
    91         }
       
    92     
       
    93     
       
    94     return filtered;
       
    95     }