tactilefeedback/tactilefeedbackresolver/src/tactilefeedbackresolver.cpp
branchRCL_3
changeset 36 39d4c97df8cb
parent 21 f35d4b6d212e
child 37 09b094b73eb8
equal deleted inserted replaced
34:d57e599df233 36:39d4c97df8cb
    21 #include <e32std.h>
    21 #include <e32std.h>
    22 #include <e32debug.h>
    22 #include <e32debug.h>
    23 
    23 
    24 #include <centralrepository.h>
    24 #include <centralrepository.h>
    25 #include <ecom/implementationinformation.h>
    25 #include <ecom/implementationinformation.h>
       
    26 #include <ProfileEngineInternalCRKeys.h>
    26 
    27 
    27 #include "tactilefeedbackprivatecrkeys.h"
    28 #include "tactilefeedbackprivatecrkeys.h"
    28 #include "tactilefeedbackinternalpskeys.h"
    29 #include "tactilefeedbackinternalpskeys.h"
    29 #include "tactilefeedbacktrace.h"
    30 #include "tactilefeedbacktrace.h"
    30 
    31 
   101 //
   102 //
   102 CTactileFeedbackResolver::~CTactileFeedbackResolver()
   103 CTactileFeedbackResolver::~CTactileFeedbackResolver()
   103     {
   104     {
   104     delete iCenRepNotifier;
   105     delete iCenRepNotifier;
   105     delete iRepository;
   106     delete iRepository;
       
   107     delete iProfileRepository;
   106     delete iPropertyWatcher;
   108     delete iPropertyWatcher;
   107     delete iHapticsPlayer;
   109     delete iHapticsPlayer;
   108     delete iAudioPlayer;
   110     delete iAudioPlayer;
   109     REComSession::FinalClose();
   111     REComSession::FinalClose();
   110     }
   112     }
   111 
   113 
   112 TBool CTactileFeedbackResolver::IsHigherThanPlaying(
   114 TBool CTactileFeedbackResolver::IsHigherThanPlaying(
   113     TTouchLogicalFeedback aFeedback ) const
   115     TTouchLogicalFeedback aFeedback ) const
   114     {
   116     {
   115     if( aFeedback == ETouchFeedbackList &&
   117     if( aFeedback == ETouchFeedbackBasicItem &&
   116         iLastFeedback == ETouchFeedbackSensitiveList )
   118         iLastFeedback == ETouchFeedbackSensitiveItem )
   117         {
   119         {
   118         return ETrue;
   120         return ETrue;
   119         }
   121         }
   120     
   122     
   121     return ( ( aFeedback == ETouchFeedbackPopUp || 
   123     return ( aFeedback == ETouchFeedbackPopUp || 
   122             aFeedback == ETouchFeedbackIncreasingPopUp || 
   124             aFeedback == ETouchFeedbackPopupOpen || 
   123             aFeedback == ETouchFeedbackDecreasingPopUp ||
   125             aFeedback == ETouchFeedbackPopupClose ||
   124             aFeedback == ETouchFeedbackBoundaryList ||
   126             aFeedback == ETouchFeedbackBounceEffect ) &&
   125             aFeedback == ETouchFeedbackOptionsMenuOpened ||
       
   126             aFeedback == ETouchFeedbackOptionsMenuClosed ||
       
   127             aFeedback == ETouchFeedbackSubMenuOpened ||
       
   128             aFeedback == ETouchFeedbackSubMenuClosed ) &&
       
   129             ( iLastFeedback == ETouchFeedbackBasicButton ||
   127             ( iLastFeedback == ETouchFeedbackBasicButton ||
   130             iLastFeedback == ETouchFeedbackSensitiveButton ||
   128             iLastFeedback == ETouchFeedbackSensitiveButton ||
   131             iLastFeedback == ETouchFeedbackSensitiveList ||
   129             iLastFeedback == ETouchFeedbackSensitiveItem ||
   132             iLastFeedback == ETouchFeedbackList ||
   130             iLastFeedback == ETouchFeedbackBasicItem ||
   133             iLastFeedback == ETouchFeedbackCheckbox ) );
   131             iLastFeedback == ETouchFeedbackCheckbox );
   134     }
   132     }
   135 
   133 
   136 // ---------------------------------------------------------------------------
   134 // ---------------------------------------------------------------------------
   137 // We play feedback in case all three conditions are met:
   135 // We play feedback in case all three conditions are met:
   138 // 
   136 // 
   145     TTouchLogicalFeedback aFeedback,
   143     TTouchLogicalFeedback aFeedback,
   146     TBool aPlayVibra,
   144     TBool aPlayVibra,
   147     TBool aPlayAudio )
   145     TBool aPlayAudio )
   148     {
   146     {
   149     // TRACE("CTactileFeedbackResolver::PlayFeedback - Begin");
   147     // TRACE("CTactileFeedbackResolver::PlayFeedback - Begin");
       
   148     
       
   149     // A temporary solution to change effect of ETouchFeedbackSensitiveSlider,
       
   150     // it will be removed when the IVT files is ready.
       
   151     if( ETouchFeedbackSensitiveSlider == aFeedback )
       
   152         {
       
   153         aFeedback = ETouchFeedbackBasicSlider;
       
   154         }
       
   155 
   150     // Feedback filtering in order to prevent too many feedbacks
   156     // Feedback filtering in order to prevent too many feedbacks
   151     // in a short time (e.g. when doing text selection).    
   157     // in a short time (e.g. when doing text selection).    
   152     TTime now;
   158     TTime now;
   153     now.UniversalTime();
   159     now.UniversalTime();
   154     
   160     
   188         if ( !iAudioEnabled )
   194         if ( !iAudioEnabled )
   189             {
   195             {
   190             aPlayAudio = EFalse;
   196             aPlayAudio = EFalse;
   191             }
   197             }
   192         
   198         
       
   199         // check silent mode, if device is in silent mode, 
       
   200         // audio feedback is not allowed.
       
   201         TInt err;
       
   202         TInt isAudioSupported;
       
   203         err = iProfileRepository->Get( KProEngSilenceMode, isAudioSupported );
       
   204         if ( KErrNone == err && 1 == isAudioSupported )
       
   205             {
       
   206             aPlayAudio = EFalse;
       
   207             }
       
   208 
   193         if ( ( aPlayVibra || aPlayAudio ) &&        // #1
   209         if ( ( aPlayVibra || aPlayAudio ) &&        // #1
   194                aFeedback != ETouchFeedbackNone )    // #2
   210                aFeedback != ETouchFeedbackNone )    // #2
   195             {
   211             {
   196             OstTrace0( TACTILE_PERFORMANCE, TACTILE_RESOLVER_PLAY_FEEDBACK_1, "e_TACTILE_RESOLVER_PLAY_FEEDBACK 1");
   212             OstTrace0( TACTILE_PERFORMANCE, TACTILE_RESOLVER_PLAY_FEEDBACK_1, "e_TACTILE_RESOLVER_PLAY_FEEDBACK 1");
   197             
   213             
   232 void CTactileFeedbackResolver::InitializeCrKeysL()    
   248 void CTactileFeedbackResolver::InitializeCrKeysL()    
   233     {
   249     {
   234     if ( !iRepository )
   250     if ( !iRepository )
   235         {
   251         {
   236         iRepository = CRepository::NewL( KCRUidTactileFeedback );    
   252         iRepository = CRepository::NewL( KCRUidTactileFeedback );    
   237         }    
   253         }
       
   254 
       
   255     if ( !iProfileRepository )
       
   256         {
       
   257         iProfileRepository = CRepository::NewL( KCRUidProfileEngine );
       
   258         }
   238     
   259     
   239     TInt minInterval(0);
   260     TInt minInterval(0);
   240     // Read and store minimun feedback interfal
   261     // Read and store minimun feedback interfal
   241     User::LeaveIfError( iRepository->Get( KTactileFeedbackMinimumInterval, 
   262     User::LeaveIfError( iRepository->Get( KTactileFeedbackMinimumInterval, 
   242                                           minInterval ) );
   263                                           minInterval ) );
   367         iHapticsPlayer->ModifyFeedback( aIntensity );
   388         iHapticsPlayer->ModifyFeedback( aIntensity );
   368         }    
   389         }    
   369     }
   390     }
   370     
   391     
   371 // ---------------------------------------------------------------------------
   392 // ---------------------------------------------------------------------------
   372 // Stop feedback.
   393 // Stop continuous feedback.
   373 // ---------------------------------------------------------------------------
   394 // ---------------------------------------------------------------------------
   374 //    
   395 //    
   375 void CTactileFeedbackResolver::StopFeedback()
   396 void CTactileFeedbackResolver::StopFeedback()
   376     {
   397     {
   377     if ( iHapticsPlayer )
   398     if ( iHapticsPlayer )
   387 //    
   408 //    
   388 void CTactileFeedbackResolver::PlayPreviewFeedback( TInt aLevel,
   409 void CTactileFeedbackResolver::PlayPreviewFeedback( TInt aLevel,
   389                           TTouchLogicalFeedback aFeedback,
   410                           TTouchLogicalFeedback aFeedback,
   390                           TTouchFeedbackType aType )
   411                           TTouchFeedbackType aType )
   391     {
   412     {
       
   413     // A temporary solution to change effect of ETouchFeedbackSensitiveSlider,
       
   414     // it will be removed when the IVT files is ready.
       
   415     if( ETouchFeedbackSensitiveSlider == aFeedback )
       
   416         {
       
   417         aFeedback = ETouchFeedbackBasicSlider;
       
   418         }
       
   419     
   392     if ( aType & ETouchFeedbackVibra && iHapticsPlayer )
   420     if ( aType & ETouchFeedbackVibra && iHapticsPlayer )
   393         {
   421         {
   394         iHapticsPlayer->PlayPreviewFeedback( aLevel, aFeedback );
   422         iHapticsPlayer->PlayPreviewFeedback( aLevel, aFeedback );
   395         }
   423         }
   396     if ( aType & ETouchFeedbackAudio && iAudioPlayer )
   424     if ( aType & ETouchFeedbackAudio && iAudioPlayer )