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