diff -r 33a5d2bbf6fc -r 73a1feb507fb mmsharing/mmshavailability/src/musavanetworkavailability.cpp --- a/mmsharing/mmshavailability/src/musavanetworkavailability.cpp Thu Aug 19 09:51:39 2010 +0300 +++ b/mmsharing/mmshavailability/src/musavanetworkavailability.cpp Tue Aug 31 15:12:07 2010 +0300 @@ -29,6 +29,7 @@ #include +const TInt KSipUriArrayGranularity = 1; CMusAvaNetworkAvailability* CMusAvaNetworkAvailability::NewL( MMusAvaAvailabilityObserver& aObserver, @@ -74,8 +75,7 @@ MMusAvaAvailabilityObserver& aObserver, CMusAvaSettingsImp& aSettings ) :CMusAvaAvailability( aObserver ), - iSettings( aSettings ), - iConfcall( EFalse ) + iSettings( aSettings ) { } @@ -101,14 +101,13 @@ { case NMusSessionInformationApi::ECallConnected: { - TBuf telNumber; - iPhoneStatus->GetTelNumberL( telNumber ); - iSettings.SetTelNumberL( telNumber ); - iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() ); - iSettings.SetCallPrivacy( iPhoneStatus->CallPrivacyL() ); - - SetState( MMusAvaObserver::EMusAvaStatusAvailable ); - break; + TBuf telNumber; + TBool isSipUri( EFalse ); + iPhoneStatus->GetTelNumberL( telNumber, isSipUri ); + SetRemoteHostL( telNumber, isSipUri ); + iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() ); + SetState( MMusAvaObserver::EMusAvaStatusAvailable ); + break; } case NMusSessionInformationApi::ECallHold: SetState( MMusAvaObserver::EMusAvaStatusCallOnHold ); @@ -148,31 +147,15 @@ // This function is called when a cs call is connected. // ------------------------------------------------------------------------- // -void CMusAvaNetworkAvailability::CallConnectedL( const TDesC& aTelNumber ) +void CMusAvaNetworkAvailability::CallConnectedL( const TDesC& aTelNumber, + TBool aIsSipUri) { MUS_LOG( "mus: [MUSAVA] \ -> CMusAvaNetworkAvailability::CallConnectedL()" ) - -// try to resolve to contact information of the remote host - iSettings.SetTelNumberL( aTelNumber ); - iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() ); - iSettings.SetCallPrivacy( iPhoneStatus->CallPrivacyL() ); - - //isn't the phone sent option successfully - if ( ( aTelNumber != iSettings.OptionSentTelNumber() - || iSettings.OptionSentTelNumber() == KNullDesC() ) - && iConfcall ) - { - MUS_LOG("CMusAvaNetworkAvailability::CallConnectedL EMusAvaStatusInProgress"); - iSettings.ReleaseOptionSentNumber(); - SetState( MMusAvaObserver::EMusAvaStatusInProgress ); - } - else - { - SetState( MMusAvaObserver::EMusAvaStatusAvailable ); - MUS_LOG("CMusAvaNetworkAvailability::CallConnectedL EMusAvaStatusAvailable"); - - } + // try to resolve to contact information of the remote host + SetRemoteHostL( aTelNumber, aIsSipUri ); + iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() ); + SetState( MMusAvaObserver::EMusAvaStatusAvailable ); MUS_LOG( "mus: [MUSAVA] \ <- CMusAvaNetworkAvailability::CallConnectedL()" ) @@ -189,7 +172,6 @@ MUS_LOG( "mus: [MUSAVA] \ -> CMusAvaNetworkAvailability::ConferenceCallL()" ) //Report line status - iConfcall = ETrue; SetState( MMusAvaObserver::EMusAvaStatusConferenceCall ); MUS_LOG( "mus: [MUSAVA] \ <- CMusAvaNetworkAvailability::ConferenceCallL()" ) @@ -200,13 +182,13 @@ // This function is called when a cs call goes hold // ------------------------------------------------------------------------- // -void CMusAvaNetworkAvailability::CallHoldL( const TDesC& aTelNumber ) +void CMusAvaNetworkAvailability::CallHoldL( const TDesC& aTelNumber, + TBool aIsSipUri) { MUS_LOG( "mus: [MUSAVA] -> CMusAvaNetworkAvailability::CallHoldL()" ) //Report line status - iSettings.SetTelNumberL( aTelNumber ); + SetRemoteHostL( aTelNumber, aIsSipUri ); iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() ); - iSettings.SetCallPrivacy( iPhoneStatus->CallPrivacyL() ); SetState( MMusAvaObserver::EMusAvaStatusCallOnHold ); MUS_LOG( "mus: [MUSAVA] <- CMusAvaNetworkAvailability::CallHoldL()" ) } @@ -222,6 +204,11 @@ MUS_LOG( "mus: [MUSAVA] -> CMusAvaNetworkAvailability::NoActiveCallL()" ) iSettings.SetTelNumberL( KNullDesC() ); + CDesCArrayFlat* sipUris = + new ( ELeave ) CDesCArrayFlat( KSipUriArrayGranularity ); + CleanupStack::PushL( sipUris ); + iSettings.SetSipAddressesL( sipUris ); + CleanupStack::Pop( sipUris ); //Report line status //Availability status @@ -230,19 +217,28 @@ MUS_LOG( "mus: [MUSAVA] <- CMusAvaNetworkAvailability::NoActiveCallL()" ) } -// ------------------------------------------------------------------------- -//This function is called when conference call terminted -// -// ------------------------------------------------------------------------- -// -void CMusAvaNetworkAvailability::ConferenceCallLTerminated() + +void CMusAvaNetworkAvailability::SetRemoteHostL( const TDesC& aTelNumber, + TBool aIsSipUri ) { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaNetworkAvailability::ConferenceCallLTerminated()" ) - if ( iConfcall ) - { - iConfcall = EFalse; - } - AvailabilitiesAbleToShowIndicator(); + MUS_LOG1( "mus: [MUSAVA] -> CMusAvaNetworkAvailability::SetRemoteHostL(%d)", + aIsSipUri ) + + if ( aIsSipUri ) + { + CDesCArrayFlat* sipUris = + new ( ELeave ) CDesCArrayFlat( KSipUriArrayGranularity ); + CleanupStack::PushL( sipUris ); + sipUris->AppendL( aTelNumber ); + iSettings.SetSipAddressesL( sipUris ); + CleanupStack::Pop( sipUris ); + + iSettings.SetUriForContactResolvingL( aTelNumber ); + } + else + { + iSettings.SetTelNumberL( aTelNumber ); + } - MUS_LOG( "mus: [MUSAVA] <- CMusAvaNetworkAvailability::ConferenceCallLTerminated()" ) + MUS_LOG( "mus: [MUSAVA] <- CMusAvaNetworkAvailability::SetRemoteHostL()" ) }