phoneapp/phoneuivoipextension/src/cphonevcchandler.cpp
branchRCL_3
changeset 61 41a7f70b3818
parent 34 b68fcd923911
child 62 5266b1f337bd
equal deleted inserted replaced
58:40a3f856b14d 61:41a7f70b3818
    14 * Description: Implementation of CPhoneVccHandler class.
    14 * Description: Implementation of CPhoneVccHandler class.
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 // INCLUDES
    18 // INCLUDES
    19 #include <phoneui.rsg>
    19 #include "phoneresourceids.h"
    20 #include <avkon.rsg>
       
    21 #include <phoneuivoip.rsg>
       
    22 #include <StringLoader.h>
    20 #include <StringLoader.h>
    23 #include <avkon.rsg>
    21 #include <avkon.rsg>
    24 #include <mpeengineinfo.h>
    22 #include <mpeengineinfo.h>
    25 #include <eikmenup.h>
    23 #include <eikmenup.h>
    26 #include <vccuipsproperty.h>
    24 #include <vccuipsproperty.h>
    54 //
    52 //
    55 CPhoneVccHandler::CPhoneVccHandler( 
    53 CPhoneVccHandler::CPhoneVccHandler( 
    56     MPhoneStateMachine& aStateMachine,
    54     MPhoneStateMachine& aStateMachine,
    57     MPhoneViewCommandHandle& aViewCommandHandle ) : 
    55     MPhoneViewCommandHandle& aViewCommandHandle ) : 
    58     iStateMachine( aStateMachine ),
    56     iStateMachine( aStateMachine ),
    59     iViewCommandHandle( aViewCommandHandle ), iVccHoReady( ETrue ),
    57     iViewCommandHandle( aViewCommandHandle ), iVccHoReady( ETrue )
    60     iHOFailure ( EFalse )
       
    61     {
    58     {
    62     }
    59     }
    63 
    60 
    64 // -----------------------------------------------------------
    61 // -----------------------------------------------------------
    65 // CPhoneVccHandler::~CPhoneStateIdleVoIP()
    62 // CPhoneVccHandler::~CPhoneStateIdleVoIP()
    67 // -----------------------------------------------------------
    64 // -----------------------------------------------------------
    68 //
    65 //
    69 CPhoneVccHandler::~CPhoneVccHandler()
    66 CPhoneVccHandler::~CPhoneVccHandler()
    70     {
    67     {
    71     delete iPropListener;
    68     delete iPropListener;
    72     delete iPropListenerReq;
       
    73     TRAPD( err, CancelHandoverNoteTimerL() );
    69     TRAPD( err, CancelHandoverNoteTimerL() );
    74     if ( err != KErrNone )
    70     if ( err != KErrNone )
    75         {
    71         {
    76         __PHONELOG( EBasic, PhoneUIVoIPExtension,
    72         __PHONELOG( EBasic, PhoneUIVoIPExtension,
    77               "CPhoneVccHandler::~CPhoneVccHandler, leave" );
    73               "CPhoneVccHandler::~CPhoneVccHandler, leave" );
    86 void CPhoneVccHandler::ConstructL()
    82 void CPhoneVccHandler::ConstructL()
    87     {
    83     {
    88     iPropListener = CVccUiPsPropertyListener::NewL( KVccPropKeyHoStatus );
    84     iPropListener = CVccUiPsPropertyListener::NewL( KVccPropKeyHoStatus );
    89     iPropListener->AddObserverL( *this );
    85     iPropListener->AddObserverL( *this );
    90     iPropListener->Start();
    86     iPropListener->Start();
    91 
       
    92     iPropListenerReq = CVccUiPsPropertyListener::NewL( KVccPropKeyHoRequest );
       
    93     iPropListenerReq->AddObserverL( *this );
       
    94     iPropListenerReq->Start();
       
    95  	
       
    96     }
    87     }
    97 
    88 
    98 // -----------------------------------------------------------
    89 // -----------------------------------------------------------
    99 // CPhoneVccHandler::NewL()
    90 // CPhoneVccHandler::NewL()
   100 // Constructor
    91 // Constructor
   279     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
   270     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
   280         "CPhoneVccHandler::RemoveHandoverNoteL()");
   271         "CPhoneVccHandler::RemoveHandoverNoteL()");
   281         
   272         
   282     if ( iVccHoReady && !iHandoverNoteTimer )
   273     if ( iVccHoReady && !iHandoverNoteTimer )
   283         {
   274         {
   284         iViewCommandHandle.ExecuteCommandL( EPhoneViewRemoveGlobalNote );
   275         iViewCommandHandle.ExecuteCommandL( EPhoneViewRemoveGlobalNote );            
   285         if ( iHOFailure )
       
   286             {
       
   287             iHOFailure = EFalse;
       
   288             CPhoneState* phoneState = 
       
   289             static_cast< CPhoneState* >( iStateMachine.State() ); 
       
   290             phoneState->SendGlobalInfoNoteL( EPhoneVoIPHandoverFail );
       
   291             
       
   292             }
       
   293         } 
   276         } 
   294     }
   277     }
   295     
   278     
   296 // -----------------------------------------------------------
   279 // -----------------------------------------------------------
   297 // CPhoneVccHandler::HandoverInProgressNoteL
   280 // CPhoneVccHandler::HandoverInProgressNoteL
   298 // -----------------------------------------------------------
   281 // -----------------------------------------------------------
   299 //
   282 //
   300 void CPhoneVccHandler::HandoverInProgressNoteL( TInt aCommand )
   283 void CPhoneVccHandler::HandoverInProgressNoteL( TInt aCommand )
   301     {
   284     {
   302     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
   285      TPhoneCmdParamGlobalNote globalNoteParam;  
   303             "CPhoneVccHandler::HandoverInProgressNoteL()");
       
   304     
       
   305     TPhoneCmdParamGlobalNote globalNoteParam;  
       
   306           
   286           
   307     // Check notification tone user setting
   287 // Check notification tone user setting
   308     TInt tone = GetHoNotifToneModeL();
   288      TInt tone = GetHoNotifToneModeL();
   309     
   289     
   310     __PHONELOG1( EBasic, EPhoneControl,
   290 //      if ( tone == 1 )
   311                 "CPhoneVccHandler::HandoverInProgressNoteL - tone: %d", tone );
   291 //           {
   312     
   292 //           globalNoteParam.SetTone( EAvkonSIDConfirmationTone );
   313       if ( tone == 1 )
   293 //           }
   314            {
   294 //       else
   315            globalNoteParam.SetTone( EAvkonSIDDefaultSound );
   295 //           {
   316            }
   296 //           globalNoteParam.SetTone( EAvkonSIDNoSound );
   317        else
   297 //           }
   318            {
   298 
   319            globalNoteParam.SetTone( EAvkonSIDNoSound );
   299      globalNoteParam.SetType( EPhoneNotificationDialog );
   320            }
       
   321 
       
   322      globalNoteParam.SetType( EAknGlobalWaitNote );
       
   323      globalNoteParam.SetSoftkeys( R_AVKON_SOFTKEYS_EMPTY );
   300      globalNoteParam.SetSoftkeys( R_AVKON_SOFTKEYS_EMPTY );
   324      globalNoteParam.SetTextResourceId( 
   301      globalNoteParam.SetTextResourceId( 
   325                  CPhoneMainResourceResolver::Instance()->
   302                  CPhoneMainResourceResolver::Instance()->
   326                  ResolveResourceID( aCommand ) );
   303                  ResolveResourceID( aCommand ) );
   327                                     
   304                                     
   335 // CPhoneVccHandler::VccPropertyChangedL
   312 // CPhoneVccHandler::VccPropertyChangedL
   336 // Gets called when PS key is changed
   313 // Gets called when PS key is changed
   337 // -----------------------------------------------------------------------------
   314 // -----------------------------------------------------------------------------
   338 //
   315 //
   339 void CPhoneVccHandler::VccPropertyChangedL( const TUint aKeyId,
   316 void CPhoneVccHandler::VccPropertyChangedL( const TUint aKeyId,
   340                                     const TInt aValue )	
   317                                     const TInt aValue ) 
   341     {            
   318     {            
   342     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
   319     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
   343         "CPhoneVccHandler::VccPropertyChangedL() ");
   320         "CPhoneVccHandler::VccPropertyChangedL() ");
   344    
   321    
   345     __PHONELOG1( EBasic, EPhoneControl,
   322     __PHONELOG1( EBasic, EPhoneControl,
   346             "CPhoneVccHandler::VccPropertyChangedL - key: %d", aValue );
   323             "CPhoneVccHandler::VccPropertyChangedL - key: %d", aValue );
   347 
   324 
   348     if( aKeyId == KVccPropKeyHoRequest )
   325     
       
   326     if( aKeyId == KVccPropKeyHoStatus )
   349         {
   327         {
   350         switch( aValue )
   328         switch( aValue )
   351             {
   329             {               
   352             case  EVccAutomaticStartPsToCsHoRequest:
   330             case EVccCsToPsHoFailure:
   353                 {
   331             case EVccPsToCsHoFailure:
   354                 __PHONELOG( EBasic, PhoneUIVoIPExtension,
   332                 {
   355                     "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- EVccAutomaticStartPsToCsHoRequest" );
   333                 __PHONELOG( EBasic, PhoneUIVoIPExtension,
   356                 // Do not show if already started since the wait note is 
       
   357                 // already visible
       
   358                 if ( iVccHoReady && !iHandoverNoteTimer )
       
   359                     {
       
   360                     iVccHoReady = EFalse;
       
   361                     HandoverInProgressNoteL( EPhoneVoIPWaitHandoverFromWlan );
       
   362                     }
       
   363                 }
       
   364                 break;
       
   365             case EVccAutomaticStartCsToPsHoRequest:
       
   366                 {
       
   367                 __PHONELOG( EBasic, PhoneUIVoIPExtension,
       
   368                     "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- EVccAutomaticStartCsToPsHoRequest" );
       
   369                 // Do not show if already started since the wait note is 
       
   370                 // already visible
       
   371                 if ( iVccHoReady && !iHandoverNoteTimer )
       
   372                     {
       
   373                     iVccHoReady = EFalse;
       
   374                     HandoverInProgressNoteL( EPhoneVoIPWaitHandoverFromGsm );
       
   375                     }
       
   376                 }                
       
   377                 break;
       
   378             default:
       
   379                 // none
       
   380                 break;
       
   381             }
       
   382         }
       
   383     
       
   384     if( aKeyId == KVccPropKeyHoStatus )
       
   385   		{
       
   386   		switch( aValue )
       
   387   			{				
       
   388   			case EVccCsToPsHoFailure:
       
   389   			case EVccPsToCsHoFailure:
       
   390   			    {
       
   391   			    __PHONELOG( EBasic, PhoneUIVoIPExtension,
       
   392                     "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- HO fail" );
   334                     "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- HO fail" );
   393                 // Remove handover note if handover is in progress
   335                 // Remove handover note if handover is in progress
   394                 if( !iVccHoReady )
   336                 if( !iVccHoReady )
   395                     {
   337                     {
   396                     iVccHoReady = ETrue;
   338                     iVccHoReady = ETrue;
   397                     iHOFailure = ETrue;
   339                     CPhoneState* phoneState = 
   398                     if ( !iHandoverNoteTimer )
   340                                static_cast< CPhoneState* >( iStateMachine.State() ); 
   399                         {
   341                     CancelHandoverNoteTimerL();
   400                         RemoveHandoverNoteL();
   342                     phoneState->SendGlobalInfoNoteL( EPhoneVoIPHandoverFail );
   401                         }
   343                     }
   402                      }
       
   403                  }
   344                  }
   404                 break;
   345                 break;
   405             case EVccCsToPsHoSuccessful:
   346             case EVccCsToPsHoSuccessful:
   406             case EVccPsToCsHoSuccessful:
   347             case EVccPsToCsHoSuccessful:
   407                 {
   348                 {
   408                 __PHONELOG( EBasic, PhoneUIVoIPExtension,
   349                 __PHONELOG( EBasic, PhoneUIVoIPExtension,
   409                     "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- HO Success" );   
   350                     "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- HO Success" );   
   410                 iVccHoReady = ETrue;
   351                 iVccHoReady = ETrue;
   411                 RemoveHandoverNoteL();
   352                 RemoveHandoverNoteL();
   412   			    }
   353                 }
   413   				break;
   354                 break;
   414             case EVccCsToPsHoStarted:
   355             case EVccCsToPsHoStarted:
   415                 {
   356                 {
   416                 __PHONELOG( EBasic, PhoneUIVoIPExtension,
   357                 __PHONELOG( EBasic, PhoneUIVoIPExtension,
   417                     "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- CsToPsHoStarted" );
   358                     "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- CsToPsHoStarted" );
   418                 // Do not show if already started since the wait note is 
   359                 // Do not show if manually started since the wait note is 
   419                 // already visible
   360                 // already visible
   420                 if ( iVccHoReady && !iHandoverNoteTimer )
   361                 if ( iVccHoReady )
   421                     {
   362                     {
   422                     iVccHoReady = EFalse;
   363                     iVccHoReady = EFalse;
   423                     HandoverInProgressNoteL( EPhoneVoIPWaitHandoverFromGsm );
   364                     HandoverInProgressNoteL( EPhoneVoIPWaitHandoverFromGsm );
   424                     }
   365                     }
   425                 }
   366                 }
   426                 break;
   367                 break;
   427             case EVccPsToCsHoStarted: 
   368             case EVccPsToCsHoStarted: 
   428                 {
   369                 {
   429                 __PHONELOG( EBasic, PhoneUIVoIPExtension,
   370                 __PHONELOG( EBasic, PhoneUIVoIPExtension,
   430                     "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- PsToCsHoStarted" );
   371                     "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- PsToCsHoStarted" );
   431                 // Do not show if already started since the wait note is 
   372                 // Do not show if manually started since the wait note is 
   432                 // already visible
   373                 // already visible
   433                 if ( iVccHoReady && !iHandoverNoteTimer )
   374                 if ( iVccHoReady )
   434                     {
   375                     {
   435                     iVccHoReady = EFalse;
   376                     iVccHoReady = EFalse;
   436                     HandoverInProgressNoteL( EPhoneVoIPWaitHandoverFromWlan);
   377                     HandoverInProgressNoteL( EPhoneVoIPWaitHandoverFromWlan);
   437                     }
   378                     }
   438                 }
   379                 }
   456                     "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- HO IDLE" );
   397                     "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- HO IDLE" );
   457                 iVccHoAllowedToGsm = ETrue;
   398                 iVccHoAllowedToGsm = ETrue;
   458                 iVccHoAllowedToWlan = ETrue;
   399                 iVccHoAllowedToWlan = ETrue;
   459                 iNoHoIfMultiCall = EFalse;
   400                 iNoHoIfMultiCall = EFalse;
   460                 iVccUnavailable = EFalse;
   401                 iVccUnavailable = EFalse;
   461                 if( !iVccHoReady )
       
   462                     {
       
   463                     iVccHoReady = ETrue;
       
   464                     if ( !iHandoverNoteTimer )
       
   465                         {
       
   466                         RemoveHandoverNoteL();
       
   467                         }
       
   468                      }
       
   469                 break;
   402                 break;
   470                 }
   403                 }
   471             case EVccCsToPsNotAllowed:
   404             case EVccCsToPsNotAllowed:
   472                 {
   405                 {
   473                 __PHONELOG( EBasic, PhoneUIVoIPExtension,
   406                 __PHONELOG( EBasic, PhoneUIVoIPExtension,
   519                 iVccHoAllowedToWlan = ETrue;
   452                 iVccHoAllowedToWlan = ETrue;
   520                 iVccUnavailable = EFalse;              
   453                 iVccUnavailable = EFalse;              
   521                 break;
   454                 break;
   522                 }
   455                 }
   523                     
   456                     
   524   			default:
   457             default:
   525 
   458 
   526                 __PHONELOG( EBasic, PhoneUIVoIPExtension,
   459                 __PHONELOG( EBasic, PhoneUIVoIPExtension,
   527                         "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- default" );
   460                         "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- default" );
   528         		break;
   461                 break;
   529   			}		
   462             }       
   530   		}
   463         }
   531     }
   464     }
   532 // ---------------------------------------------------------------------------
   465 // ---------------------------------------------------------------------------
   533 // Gets HO notification tone setting value
   466 // Gets HO notification tone setting value
   534 // ---------------------------------------------------------------------------
   467 // ---------------------------------------------------------------------------
   535 //
   468 //
   536 TInt CPhoneVccHandler::GetHoNotifToneModeL()
   469 TInt CPhoneVccHandler::GetHoNotifToneModeL()
   537     {
   470     {
   538     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
       
   539             "CPhoneVccHandler::GetHoNotifToneModeL() ");
       
   540     
       
   541     // Find out VCC service id
   471     // Find out VCC service id
   542      CSPProperty* property = CSPProperty::NewLC();
   472      CSPProperty* property = CSPProperty::NewLC();
   543     
   473     
   544     CSPSettings* settings = CSPSettings::NewLC();
   474     CSPSettings* settings = CSPSettings::NewLC();
   545     
   475     
   549     TInt err = settings->FindPropertyL( 
   479     TInt err = settings->FindPropertyL( 
   550             vccServiceId, ESubPropertyVccDtVoipServiceId, *property ); 
   480             vccServiceId, ESubPropertyVccDtVoipServiceId, *property ); 
   551     
   481     
   552     TInt voipId;
   482     TInt voipId;
   553     TInt error = property->GetValue( voipId );
   483     TInt error = property->GetValue( voipId );
   554     
       
   555     __PHONELOG1( EBasic, EPhoneControl,
       
   556         "CPhoneVccHandler::GetHoNotifToneModeL - voipId: %d", voipId ); 
       
   557     
   484     
   558     // Find and get the HO notification tone property
   485     // Find and get the HO notification tone property
   559     TInt tone = 0;
   486     TInt tone = 0;
   560     RBuf value;
   487     RBuf value;
   561     value.CreateL( 1 );
   488     value.CreateL( 1 );