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