mmsharing/mmshavailability/src/musavanetworkavailability.cpp
branchRCL_3
changeset 33 bc78a40cd63c
parent 32 73a1feb507fb
--- a/mmsharing/mmshavailability/src/musavanetworkavailability.cpp	Tue Aug 31 15:12:07 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavanetworkavailability.cpp	Wed Sep 01 12:31:01 2010 +0100
@@ -29,7 +29,6 @@
 
 #include <e32base.h>
 
-const TInt KSipUriArrayGranularity = 1;
 
 CMusAvaNetworkAvailability* CMusAvaNetworkAvailability::NewL(
     MMusAvaAvailabilityObserver& aObserver,
@@ -75,7 +74,8 @@
     MMusAvaAvailabilityObserver& aObserver,
     CMusAvaSettingsImp& aSettings )
     :CMusAvaAvailability( aObserver ),
-    iSettings( aSettings )
+    iSettings( aSettings ),
+    iConfcall( EFalse )
     {
     }
 
@@ -101,13 +101,14 @@
         {
             case NMusSessionInformationApi::ECallConnected:                 
                 {
-				TBuf<CMusAvaCallEventMonitor::KMusTelNumberMaxLength> telNumber;
-				TBool isSipUri( EFalse );
-				iPhoneStatus->GetTelNumberL( telNumber, isSipUri );
-				SetRemoteHostL( telNumber, isSipUri );
-				iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() );
-				SetState( MMusAvaObserver::EMusAvaStatusAvailable );
-				break;
+                 TBuf<CMusAvaCallEventMonitor::KMusTelNumberMaxLength> telNumber;
+                 iPhoneStatus->GetTelNumberL( telNumber );
+                 iSettings.SetTelNumberL( telNumber );
+                 iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() );
+                 iSettings.SetCallPrivacy( iPhoneStatus->CallPrivacyL() );
+        
+                 SetState( MMusAvaObserver::EMusAvaStatusAvailable );
+                 break;
                 }      
             case NMusSessionInformationApi::ECallHold:  
                  SetState( MMusAvaObserver::EMusAvaStatusCallOnHold );
@@ -147,15 +148,31 @@
 //  This function is called when a cs call is connected.
 // -------------------------------------------------------------------------
 //
-void CMusAvaNetworkAvailability::CallConnectedL( const TDesC& aTelNumber,
-                                                 TBool aIsSipUri)
+void CMusAvaNetworkAvailability::CallConnectedL( const TDesC& aTelNumber )
     {
     MUS_LOG( "mus: [MUSAVA]  \
                 -> CMusAvaNetworkAvailability::CallConnectedL()" )
-    // try to resolve to contact information of the remote host
-	SetRemoteHostL( aTelNumber, aIsSipUri );
-    iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() );
-    SetState( MMusAvaObserver::EMusAvaStatusAvailable );
+                
+// 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");
+			
+    	  }
 
     MUS_LOG( "mus: [MUSAVA]  \
                 <- CMusAvaNetworkAvailability::CallConnectedL()" )
@@ -172,6 +189,7 @@
     MUS_LOG( "mus: [MUSAVA]  \
             -> CMusAvaNetworkAvailability::ConferenceCallL()" )
     //Report line status
+    iConfcall = ETrue;
     SetState( MMusAvaObserver::EMusAvaStatusConferenceCall );
     MUS_LOG( "mus: [MUSAVA]  \
                 <- CMusAvaNetworkAvailability::ConferenceCallL()" )
@@ -182,13 +200,13 @@
 //  This function is called when a cs call goes hold
 // -------------------------------------------------------------------------
 //
-void CMusAvaNetworkAvailability::CallHoldL( const TDesC& aTelNumber,
-                                            TBool aIsSipUri)
+void CMusAvaNetworkAvailability::CallHoldL( const TDesC& aTelNumber )
     {
     MUS_LOG( "mus: [MUSAVA]  -> CMusAvaNetworkAvailability::CallHoldL()" )
     //Report line status
-    SetRemoteHostL( aTelNumber, aIsSipUri );
+    iSettings.SetTelNumberL( aTelNumber );
     iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() );
+    iSettings.SetCallPrivacy( iPhoneStatus->CallPrivacyL() );
     SetState( MMusAvaObserver::EMusAvaStatusCallOnHold );
     MUS_LOG( "mus: [MUSAVA]  <- CMusAvaNetworkAvailability::CallHoldL()" )
     }
@@ -204,11 +222,6 @@
     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
@@ -217,28 +230,19 @@
     MUS_LOG( "mus: [MUSAVA]  <- CMusAvaNetworkAvailability::NoActiveCallL()" )
     }
 
-
-void CMusAvaNetworkAvailability::SetRemoteHostL( const TDesC& aTelNumber,
-												 TBool aIsSipUri )
+// -------------------------------------------------------------------------
+//This function is called when conference call terminted
+//
+// -------------------------------------------------------------------------
+//
+void CMusAvaNetworkAvailability::ConferenceCallLTerminated()
 	{
-	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()" )
+    if ( iConfcall )
+    	{
+        iConfcall = EFalse;
+    	}
+    AvailabilitiesAbleToShowIndicator();
 
-	MUS_LOG( "mus: [MUSAVA]  <- CMusAvaNetworkAvailability::SetRemoteHostL()" )
+    MUS_LOG( "mus: [MUSAVA]  <- CMusAvaNetworkAvailability::ConferenceCallLTerminated()" )
 	}