diff -r 2a26698d78ba -r 38529f706030 phoneapp/phoneuivoipextension/src/cphonevcchandler.cpp --- a/phoneapp/phoneuivoipextension/src/cphonevcchandler.cpp Mon Mar 15 12:40:24 2010 +0200 +++ b/phoneapp/phoneuivoipextension/src/cphonevcchandler.cpp Wed Mar 31 21:30:06 2010 +0300 @@ -56,7 +56,8 @@ MPhoneStateMachine& aStateMachine, MPhoneViewCommandHandle& aViewCommandHandle ) : iStateMachine( aStateMachine ), - iViewCommandHandle( aViewCommandHandle ), iVccHoReady( ETrue ) + iViewCommandHandle( aViewCommandHandle ), iVccHoReady( ETrue ), + iHOFailure ( EFalse ) { } @@ -68,6 +69,7 @@ CPhoneVccHandler::~CPhoneVccHandler() { delete iPropListener; + delete iPropListenerReq; TRAPD( err, CancelHandoverNoteTimerL() ); if ( err != KErrNone ) { @@ -85,7 +87,12 @@ { iPropListener = CVccUiPsPropertyListener::NewL( KVccPropKeyHoStatus ); iPropListener->AddObserverL( *this ); - iPropListener->Start(); + iPropListener->Start(); + + iPropListenerReq = CVccUiPsPropertyListener::NewL( KVccPropKeyHoRequest ); + iPropListenerReq->AddObserverL( *this ); + iPropListenerReq->Start(); + } // ----------------------------------------------------------- @@ -274,7 +281,15 @@ if ( iVccHoReady && !iHandoverNoteTimer ) { - iViewCommandHandle.ExecuteCommandL( EPhoneViewRemoveGlobalNote ); + iViewCommandHandle.ExecuteCommandL( EPhoneViewRemoveGlobalNote ); + if ( iHOFailure ) + { + iHOFailure = EFalse; + CPhoneState* phoneState = + static_cast< CPhoneState* >( iStateMachine.State() ); + phoneState->SendGlobalInfoNoteL( EPhoneVoIPHandoverFail ); + + } } } @@ -284,10 +299,16 @@ // void CPhoneVccHandler::HandoverInProgressNoteL( TInt aCommand ) { - TPhoneCmdParamGlobalNote globalNoteParam; + __LOGMETHODSTARTEND( PhoneUIVoIPExtension, + "CPhoneVccHandler::HandoverInProgressNoteL()"); + + TPhoneCmdParamGlobalNote globalNoteParam; -// Check notification tone user setting - TInt tone = GetHoNotifToneModeL(); + // Check notification tone user setting + TInt tone = GetHoNotifToneModeL(); + + __PHONELOG1( EBasic, EPhoneControl, + "CPhoneVccHandler::HandoverInProgressNoteL - tone: %d", tone ); if ( tone == 1 ) { @@ -324,6 +345,41 @@ __PHONELOG1( EBasic, EPhoneControl, "CPhoneVccHandler::VccPropertyChangedL - key: %d", aValue ); + if( aKeyId == KVccPropKeyHoRequest ) + { + switch( aValue ) + { + case EVccAutomaticStartPsToCsHoRequest: + { + __PHONELOG( EBasic, PhoneUIVoIPExtension, + "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- EVccAutomaticStartPsToCsHoRequest" ); + // Do not show if already started since the wait note is + // already visible + if ( iVccHoReady && !iHandoverNoteTimer ) + { + iVccHoReady = EFalse; + HandoverInProgressNoteL( EPhoneVoIPWaitHandoverFromWlan ); + } + } + break; + case EVccAutomaticStartCsToPsHoRequest: + { + __PHONELOG( EBasic, PhoneUIVoIPExtension, + "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- EVccAutomaticStartCsToPsHoRequest" ); + // Do not show if already started since the wait note is + // already visible + if ( iVccHoReady && !iHandoverNoteTimer ) + { + iVccHoReady = EFalse; + HandoverInProgressNoteL( EPhoneVoIPWaitHandoverFromGsm ); + } + } + break; + default: + // none + break; + } + } if( aKeyId == KVccPropKeyHoStatus ) { @@ -338,11 +394,12 @@ if( !iVccHoReady ) { iVccHoReady = ETrue; - CPhoneState* phoneState = - static_cast< CPhoneState* >( iStateMachine.State() ); - CancelHandoverNoteTimerL(); - phoneState->SendGlobalInfoNoteL( EPhoneVoIPHandoverFail ); - } + iHOFailure = ETrue; + if ( !iHandoverNoteTimer ) + { + RemoveHandoverNoteL(); + } + } } break; case EVccCsToPsHoSuccessful: @@ -358,9 +415,9 @@ { __PHONELOG( EBasic, PhoneUIVoIPExtension, "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- CsToPsHoStarted" ); - // Do not show if manually started since the wait note is + // Do not show if already started since the wait note is // already visible - if ( iVccHoReady ) + if ( iVccHoReady && !iHandoverNoteTimer ) { iVccHoReady = EFalse; HandoverInProgressNoteL( EPhoneVoIPWaitHandoverFromGsm ); @@ -371,9 +428,9 @@ { __PHONELOG( EBasic, PhoneUIVoIPExtension, "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- PsToCsHoStarted" ); - // Do not show if manually started since the wait note is + // Do not show if already started since the wait note is // already visible - if ( iVccHoReady ) + if ( iVccHoReady && !iHandoverNoteTimer ) { iVccHoReady = EFalse; HandoverInProgressNoteL( EPhoneVoIPWaitHandoverFromWlan); @@ -401,6 +458,14 @@ iVccHoAllowedToWlan = ETrue; iNoHoIfMultiCall = EFalse; iVccUnavailable = EFalse; + if( !iVccHoReady ) + { + iVccHoReady = ETrue; + if ( !iHandoverNoteTimer ) + { + RemoveHandoverNoteL(); + } + } break; } case EVccCsToPsNotAllowed: @@ -470,6 +535,9 @@ // TInt CPhoneVccHandler::GetHoNotifToneModeL() { + __LOGMETHODSTARTEND( PhoneUIVoIPExtension, + "CPhoneVccHandler::GetHoNotifToneModeL() "); + // Find out VCC service id CSPProperty* property = CSPProperty::NewLC(); @@ -484,6 +552,9 @@ TInt voipId; TInt error = property->GetValue( voipId ); + __PHONELOG1( EBasic, EPhoneControl, + "CPhoneVccHandler::GetHoNotifToneModeL - voipId: %d", voipId ); + // Find and get the HO notification tone property TInt tone = 0; RBuf value;