mmsharing/mmshavailability/src/musavanetworkavailability.cpp
branchRCL_3
changeset 22 73a1feb507fb
parent 21 33a5d2bbf6fc
child 23 bc78a40cd63c
--- 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 <e32base.h>
 
+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<CMusAvaCallEventMonitor::KMusTelNumberMaxLength> telNumber;
-                 iPhoneStatus->GetTelNumberL( telNumber );
-                 iSettings.SetTelNumberL( telNumber );
-                 iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() );
-                 iSettings.SetCallPrivacy( iPhoneStatus->CallPrivacyL() );
-        
-                 SetState( MMusAvaObserver::EMusAvaStatusAvailable );
-                 break;
+				TBuf<CMusAvaCallEventMonitor::KMusTelNumberMaxLength> 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()" )
 	}