akntouchgesturefw/src/akntouchgesturefwsettings.cpp
changeset 0 2f259fa3e83a
equal deleted inserted replaced
-1:000000000000 0:2f259fa3e83a
       
     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 "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:  Touch gesture framework settings provider.
       
    15 *
       
    16 */
       
    17 
       
    18 #include <centralrepository.h>
       
    19 
       
    20 #include "akntouchgesturefwdefs.h"
       
    21 #include "akntouchgesturefwsettings.h"
       
    22 #include "akntouchgesturefwcrkeys.h"
       
    23 
       
    24 using namespace AknTouchGestureFw;
       
    25 
       
    26 /** Value for an unset parameter. */
       
    27 const TInt KParamNotSet( -1 );
       
    28 
       
    29 // ======== MEMBER FUNCTIONS ========
       
    30 
       
    31 // ---------------------------------------------------------------------------
       
    32 // Two-phased constructor.
       
    33 // ---------------------------------------------------------------------------
       
    34 //
       
    35 CAknTouchGestureFwSettings* CAknTouchGestureFwSettings::NewL()
       
    36     {
       
    37     CAknTouchGestureFwSettings* self = CAknTouchGestureFwSettings::NewLC();
       
    38     CleanupStack::Pop( self );
       
    39     return self;
       
    40     }
       
    41 
       
    42 
       
    43 // ---------------------------------------------------------------------------
       
    44 // Two-phased constructor.
       
    45 // ---------------------------------------------------------------------------
       
    46 //
       
    47 CAknTouchGestureFwSettings* CAknTouchGestureFwSettings::NewLC()
       
    48     {
       
    49     CAknTouchGestureFwSettings* self
       
    50         = new ( ELeave ) CAknTouchGestureFwSettings();
       
    51     CleanupStack::PushL( self );
       
    52     self->ConstructL();
       
    53     return self;
       
    54     }
       
    55 
       
    56 
       
    57 // ---------------------------------------------------------------------------
       
    58 // Destructor.
       
    59 // ---------------------------------------------------------------------------
       
    60 //
       
    61 CAknTouchGestureFwSettings::~CAknTouchGestureFwSettings()
       
    62     {
       
    63     delete iListener;
       
    64     delete iCenRep;
       
    65     }
       
    66 
       
    67 
       
    68 // ---------------------------------------------------------------------------
       
    69 // Returns the flick buffer setting value.
       
    70 // ---------------------------------------------------------------------------
       
    71 //
       
    72 TInt CAknTouchGestureFwSettings::FlickBuffer() const
       
    73     {
       
    74     return iFlickBuffer;
       
    75     }
       
    76 
       
    77 
       
    78 // ---------------------------------------------------------------------------
       
    79 // Returns the long tap threshold setting value.
       
    80 // ---------------------------------------------------------------------------
       
    81 //
       
    82 TInt CAknTouchGestureFwSettings::LongTapThreshold() const
       
    83     {
       
    84     return iLongTapThreshold;
       
    85     }
       
    86 
       
    87 
       
    88 // ---------------------------------------------------------------------------
       
    89 // Returns the tap threshold setting value.
       
    90 // ---------------------------------------------------------------------------
       
    91 //
       
    92 TInt CAknTouchGestureFwSettings::TapThreshold() const
       
    93     {
       
    94     return iTapThreshold;
       
    95     }
       
    96 
       
    97 
       
    98 // ---------------------------------------------------------------------------
       
    99 // Returns the double tap maximum duration setting value.
       
   100 // ---------------------------------------------------------------------------
       
   101 //
       
   102 TInt CAknTouchGestureFwSettings::DoubleTapMaximumDuration() const
       
   103     {
       
   104     return iDoubleTapMaximumDuration;
       
   105     }
       
   106 
       
   107 
       
   108 // ---------------------------------------------------------------------------
       
   109 // Returns the drag threshold setting value.
       
   110 // ---------------------------------------------------------------------------
       
   111 //
       
   112 TInt CAknTouchGestureFwSettings::DragThreshold() const
       
   113     {
       
   114     return iDragThreshold;
       
   115     }
       
   116 
       
   117 
       
   118 // ---------------------------------------------------------------------------
       
   119 // Returns the flick speed threshold setting value.
       
   120 // ---------------------------------------------------------------------------
       
   121 //
       
   122 TInt CAknTouchGestureFwSettings::FlickSpeedThreshold() const
       
   123     {
       
   124     return iFlickSpeedThreshold;
       
   125     }
       
   126 
       
   127 
       
   128 // ---------------------------------------------------------------------------
       
   129 // Returns the flick detection time setting value.
       
   130 // ---------------------------------------------------------------------------
       
   131 //
       
   132 TInt CAknTouchGestureFwSettings::FlickDetectionTime() const
       
   133     {
       
   134     return iFlickDetectionTime;
       
   135     }
       
   136 
       
   137 
       
   138 // ---------------------------------------------------------------------------
       
   139 // Returns the flick change sensitivity setting value.
       
   140 // ---------------------------------------------------------------------------
       
   141 //
       
   142 TInt CAknTouchGestureFwSettings::FlickChangeSensitivity() const
       
   143     {
       
   144     return iFlickChangeSensitivity;
       
   145     }
       
   146 
       
   147 
       
   148 // ---------------------------------------------------------------------------
       
   149 // Returns pinch initial threshold setting value.
       
   150 // ---------------------------------------------------------------------------
       
   151 //
       
   152 TInt CAknTouchGestureFwSettings::PinchInitialThreshold() const
       
   153     {
       
   154     return iPinchInitialThreshold;
       
   155     }
       
   156 
       
   157 
       
   158 // ---------------------------------------------------------------------------
       
   159 // Returns pinch movement threshold setting value.
       
   160 // ---------------------------------------------------------------------------
       
   161 //
       
   162 TInt CAknTouchGestureFwSettings::PinchMovementThreshold() const
       
   163     {
       
   164     return iPinchMovementThreshold;
       
   165     }
       
   166 
       
   167 
       
   168 // ---------------------------------------------------------------------------
       
   169 // Returns pinch direction change sensitivity setting value.
       
   170 // ---------------------------------------------------------------------------
       
   171 //
       
   172 TInt CAknTouchGestureFwSettings::PinchDirectionChangeSensitivity() const
       
   173     {
       
   174     return iPinchDirectionChangeSensitivity;
       
   175     }
       
   176 
       
   177 
       
   178 // ---------------------------------------------------------------------------
       
   179 // Returns pinch direction reset sensitivity setting value.
       
   180 // ---------------------------------------------------------------------------
       
   181 //
       
   182 TInt CAknTouchGestureFwSettings::PinchDirectionResetSensitivity() const
       
   183     {
       
   184     return iPinchDirectionResetSensitivity;
       
   185     }
       
   186 
       
   187 // ---------------------------------------------------------------------------
       
   188 // Returns pinch dimension threshold.
       
   189 // ---------------------------------------------------------------------------
       
   190 //
       
   191 TInt CAknTouchGestureFwSettings::PinchDimensionThreshold() const
       
   192     {
       
   193     return iPinchDimensionThreshold;
       
   194     }
       
   195 
       
   196 // ---------------------------------------------------------------------------
       
   197 // Returns pinch maximum confirmation duration.
       
   198 // ---------------------------------------------------------------------------
       
   199 //
       
   200 TInt CAknTouchGestureFwSettings::PinchMaximumConfirmationDuration() const
       
   201     {
       
   202     return iPinchMaximumConfirmationDuration;
       
   203     }
       
   204 
       
   205 // ---------------------------------------------------------------------------
       
   206 // Called when the value of a touch gesture FW setting CenRep key changes
       
   207 // to update the corresponding member variable.
       
   208 // ---------------------------------------------------------------------------
       
   209 //
       
   210 void CAknTouchGestureFwSettings::CenRepValueChanged( const TInt& aKey )
       
   211     {
       
   212     switch ( aKey )
       
   213         {
       
   214         case KFlickBuffer:
       
   215             {
       
   216             iCenRep->Get( KFlickBuffer, iFlickBuffer );
       
   217             break;
       
   218             }
       
   219         case KLongTapThreshold:
       
   220             {
       
   221             iCenRep->Get( KLongTapThreshold, iLongTapThreshold );
       
   222             break;
       
   223             }
       
   224         case KTapThreshold:
       
   225             {
       
   226             iCenRep->Get( KTapThreshold, iTapThreshold );
       
   227             break;
       
   228             }
       
   229         case KDoubleTapMaximumDuration:
       
   230             {
       
   231             iCenRep->Get( KDoubleTapMaximumDuration,
       
   232                           iDoubleTapMaximumDuration );
       
   233             break;
       
   234             }
       
   235         case KDragThreshold:
       
   236             {
       
   237             iCenRep->Get( KDragThreshold, iDragThreshold );
       
   238             break;
       
   239             }
       
   240         case KFlickSpeedThreshold:
       
   241             {
       
   242             iCenRep->Get( KFlickSpeedThreshold, iFlickSpeedThreshold );
       
   243             break;
       
   244             }
       
   245         case KFlickDetectionTime:
       
   246             {
       
   247             iCenRep->Get( KFlickDetectionTime, iFlickDetectionTime );
       
   248             break;
       
   249             }
       
   250         case KFlickDirectionChange:
       
   251             {
       
   252             iCenRep->Get( KFlickDirectionChange, iFlickChangeSensitivity );
       
   253             break;
       
   254             }
       
   255         case KPinchInitialThreshold:
       
   256 		    {
       
   257             iCenRep->Get( KPinchInitialThreshold, iPinchInitialThreshold );
       
   258             break;
       
   259 			}
       
   260         case KPinchMovementThreshold:
       
   261             {
       
   262             iCenRep->Get( KPinchMovementThreshold, iPinchMovementThreshold );
       
   263             break;
       
   264             }
       
   265         case KPinchDirectionChangeSensitivity:
       
   266             {
       
   267             iCenRep->Get( KPinchDirectionChangeSensitivity, 
       
   268                 iPinchDirectionChangeSensitivity );
       
   269             break;
       
   270             }
       
   271         case KPinchDirectionResetSensitivity:
       
   272             {
       
   273             iCenRep->Get( KPinchDirectionResetSensitivity, 
       
   274                 iPinchDirectionResetSensitivity );
       
   275             break;
       
   276             }
       
   277         case KPinchDimensionThreshold:
       
   278             {
       
   279             iCenRep->Get( KPinchDimensionThreshold, 
       
   280                 iPinchDimensionThreshold );            
       
   281             break;
       
   282             }
       
   283         case KPinchMaximumConfirmationDuration:
       
   284             {
       
   285             iCenRep->Get( KPinchMaximumConfirmationDuration, 
       
   286                 iPinchMaximumConfirmationDuration );            
       
   287             break;
       
   288             }
       
   289         default:
       
   290             {
       
   291             break;
       
   292             }
       
   293         }
       
   294     }
       
   295 
       
   296 
       
   297 // ---------------------------------------------------------------------------
       
   298 // Default C++ constructor.
       
   299 // ---------------------------------------------------------------------------
       
   300 //
       
   301 CAknTouchGestureFwSettings::CAknTouchGestureFwSettings() :
       
   302     iCenRep( NULL ),
       
   303     iListener( NULL ),
       
   304     iFlickBuffer( KParamNotSet ),
       
   305     iLongTapThreshold( KParamNotSet ),
       
   306     iTapThreshold( KParamNotSet ),
       
   307     iDoubleTapMaximumDuration( KParamNotSet ),
       
   308     iDragThreshold( KParamNotSet ),
       
   309     iFlickSpeedThreshold( KParamNotSet ),
       
   310     iFlickDetectionTime( KParamNotSet ),
       
   311     iFlickChangeSensitivity( KParamNotSet ),
       
   312     iPinchInitialThreshold( KParamNotSet ),
       
   313     iPinchMovementThreshold( KParamNotSet ),
       
   314     iPinchDirectionChangeSensitivity( KParamNotSet ),
       
   315     iPinchDirectionResetSensitivity( KParamNotSet ),
       
   316     iPinchDimensionThreshold( KParamNotSet ),
       
   317     iPinchMaximumConfirmationDuration( KParamNotSet )
       
   318     {
       
   319     }
       
   320 
       
   321 
       
   322 // ---------------------------------------------------------------------------
       
   323 // Second-phase constructor.
       
   324 // ---------------------------------------------------------------------------
       
   325 //
       
   326 void CAknTouchGestureFwSettings::ConstructL()
       
   327     {
       
   328     TRAPD( err,
       
   329            iCenRep = CRepository::NewL( KCRUidAknTouchGestureFwSettings ) );
       
   330     if ( err )
       
   331         {
       
   332         SetDefaultValues( EFalse );
       
   333         return;
       
   334         }
       
   335     iListener = CAknTouchGestureFwCenRepListener::NewL( iCenRep, this );
       
   336     ReadValuesFromCenRep();
       
   337     if ( !ValuesAreSet() )
       
   338         {
       
   339         SetDefaultValues( ETrue );
       
   340         }
       
   341     }
       
   342 
       
   343 
       
   344 // ---------------------------------------------------------------------------
       
   345 // Reads the setting values from the central repository.
       
   346 // ---------------------------------------------------------------------------
       
   347 //
       
   348 void CAknTouchGestureFwSettings::ReadValuesFromCenRep()
       
   349     {
       
   350     iCenRep->Get( KFlickBuffer, iFlickBuffer );
       
   351     iCenRep->Get( KLongTapThreshold, iLongTapThreshold );
       
   352     iCenRep->Get( KTapThreshold, iTapThreshold );
       
   353     iCenRep->Get( KDoubleTapMaximumDuration, iDoubleTapMaximumDuration );
       
   354     iCenRep->Get( KDragThreshold, iDragThreshold );
       
   355     iCenRep->Get( KFlickSpeedThreshold, iFlickSpeedThreshold );
       
   356     iCenRep->Get( KFlickDetectionTime, iFlickDetectionTime );
       
   357     iCenRep->Get( KFlickDirectionChange, iFlickChangeSensitivity );
       
   358     iCenRep->Get( KPinchInitialThreshold, iPinchInitialThreshold );
       
   359     iCenRep->Get( KPinchMovementThreshold, iPinchMovementThreshold );
       
   360     iCenRep->Get( KPinchDirectionChangeSensitivity, 
       
   361         iPinchDirectionChangeSensitivity );
       
   362     iCenRep->Get( KPinchDirectionResetSensitivity, 
       
   363         iPinchDirectionResetSensitivity );
       
   364     iCenRep->Get( KPinchDimensionThreshold, 
       
   365         iPinchDimensionThreshold );
       
   366     iCenRep->Get( KPinchMaximumConfirmationDuration, 
       
   367         iPinchMaximumConfirmationDuration );
       
   368     }
       
   369 
       
   370 
       
   371 // ---------------------------------------------------------------------------
       
   372 // Sets the default values for the settings.
       
   373 // ---------------------------------------------------------------------------
       
   374 //
       
   375 void CAknTouchGestureFwSettings::SetDefaultValues( TBool aWriteToCenRep )
       
   376     {
       
   377     iFlickBuffer = KMaxBufferLength;
       
   378     iLongTapThreshold = KDefaultLongTapThreshold / KMicroSecondsInMilliSecond;
       
   379     iTapThreshold = KTapThreshold;
       
   380     iDoubleTapMaximumDuration =
       
   381         KDefaultMaxDoubleTapDuration / KMicroSecondsInMilliSecond;
       
   382     iDragThreshold = KDefaultDragThreshold;
       
   383     iFlickSpeedThreshold = KDefaultFlickSpeedThreshold;
       
   384     iFlickDetectionTime =
       
   385         KDefaultFlickDetectionTime / KMicroSecondsInMilliSecond;
       
   386     iFlickChangeSensitivity = KDefaultDirectionChangeSensitivity;
       
   387     iPinchInitialThreshold = KDefaultPinchInitialThreshold;
       
   388     iPinchMovementThreshold = KDefaultPinchMovementThreshold;
       
   389     iPinchDirectionChangeSensitivity = KDefaultPinchDirectionChangeSensitivity;
       
   390     iPinchDirectionResetSensitivity = KDefaultPinchDirectionResetSensitivity;
       
   391     iPinchDimensionThreshold = KDefaultPinchDimensionThreshold;
       
   392     iPinchMaximumConfirmationDuration = 
       
   393         KDefaultPinchMaximumConfirmationDuration;
       
   394     
       
   395     if ( aWriteToCenRep )
       
   396         {
       
   397         if ( !iCenRep )
       
   398             {
       
   399             TRAPD( err,
       
   400                 iCenRep = CRepository::NewL(
       
   401                         KCRUidAknTouchGestureFwSettings ) );
       
   402             if ( err )
       
   403                 {
       
   404                 return;
       
   405                 }
       
   406             }
       
   407         iCenRep->Set( KFlickBuffer, iFlickBuffer );
       
   408         iCenRep->Set( KLongTapThreshold, iLongTapThreshold );
       
   409         iCenRep->Set( KTapThreshold, iTapThreshold );
       
   410         iCenRep->Set(
       
   411                 KDoubleTapMaximumDuration, iDoubleTapMaximumDuration );
       
   412         iCenRep->Set( KDragThreshold, iDragThreshold );
       
   413         iCenRep->Set( KFlickSpeedThreshold, iFlickSpeedThreshold );
       
   414         iCenRep->Set( KFlickDetectionTime, iFlickDetectionTime );
       
   415         iCenRep->Set( KFlickDirectionChange, iFlickChangeSensitivity );
       
   416         iCenRep->Set( KPinchInitialThreshold, iPinchInitialThreshold );
       
   417         iCenRep->Set( KPinchMovementThreshold, iPinchMovementThreshold );
       
   418         iCenRep->Set( KPinchDirectionChangeSensitivity, 
       
   419             iPinchDirectionChangeSensitivity );
       
   420         iCenRep->Set( KPinchDirectionResetSensitivity, 
       
   421             iPinchDirectionResetSensitivity );
       
   422         iCenRep->Set( KPinchDimensionThreshold, 
       
   423             iPinchDimensionThreshold );
       
   424         iCenRep->Set( KPinchMaximumConfirmationDuration, 
       
   425             iPinchMaximumConfirmationDuration );
       
   426         }
       
   427     }
       
   428 
       
   429 
       
   430 // ---------------------------------------------------------------------------
       
   431 // Checks if the setting values have been set.
       
   432 // ---------------------------------------------------------------------------
       
   433 //
       
   434 TBool CAknTouchGestureFwSettings::ValuesAreSet() const
       
   435     {
       
   436     TBool areSet( ETrue );
       
   437     if ( iFlickBuffer == KParamNotSet
       
   438         || iLongTapThreshold == KParamNotSet
       
   439         || iTapThreshold == KParamNotSet
       
   440         || iDoubleTapMaximumDuration == KParamNotSet
       
   441         || iDragThreshold == KParamNotSet
       
   442         || iFlickSpeedThreshold == KParamNotSet
       
   443         || iFlickDetectionTime == KParamNotSet
       
   444         || iFlickChangeSensitivity == KParamNotSet
       
   445         || iPinchInitialThreshold == KParamNotSet 
       
   446         || iPinchMovementThreshold == KParamNotSet
       
   447         || iPinchDirectionChangeSensitivity == KParamNotSet
       
   448         || iPinchDirectionResetSensitivity == KParamNotSet 
       
   449         || iPinchDimensionThreshold == KParamNotSet
       
   450         || iPinchMaximumConfirmationDuration == KParamNotSet )
       
   451         {
       
   452         areSet = EFalse;
       
   453         }
       
   454 
       
   455     return areSet;
       
   456     }
       
   457 
       
   458 // End of File