mmsharing/mmshavailability/src/musavanetworkavailability.cpp
branchRCL_3
changeset 32 73a1feb507fb
parent 31 33a5d2bbf6fc
child 33 bc78a40cd63c
equal deleted inserted replaced
31:33a5d2bbf6fc 32:73a1feb507fb
    27 #include "muslogger.h"
    27 #include "muslogger.h"
    28 #include "musavacalleventmonitor.h"
    28 #include "musavacalleventmonitor.h"
    29 
    29 
    30 #include <e32base.h>
    30 #include <e32base.h>
    31 
    31 
       
    32 const TInt KSipUriArrayGranularity = 1;
    32 
    33 
    33 CMusAvaNetworkAvailability* CMusAvaNetworkAvailability::NewL(
    34 CMusAvaNetworkAvailability* CMusAvaNetworkAvailability::NewL(
    34     MMusAvaAvailabilityObserver& aObserver,
    35     MMusAvaAvailabilityObserver& aObserver,
    35     CMusAvaSettingsImp& aSettings )
    36     CMusAvaSettingsImp& aSettings )
    36     {
    37     {
    72 
    73 
    73 CMusAvaNetworkAvailability::CMusAvaNetworkAvailability(
    74 CMusAvaNetworkAvailability::CMusAvaNetworkAvailability(
    74     MMusAvaAvailabilityObserver& aObserver,
    75     MMusAvaAvailabilityObserver& aObserver,
    75     CMusAvaSettingsImp& aSettings )
    76     CMusAvaSettingsImp& aSettings )
    76     :CMusAvaAvailability( aObserver ),
    77     :CMusAvaAvailability( aObserver ),
    77     iSettings( aSettings ),
    78     iSettings( aSettings )
    78     iConfcall( EFalse )
       
    79     {
    79     {
    80     }
    80     }
    81 
    81 
    82 
    82 
    83 void CMusAvaNetworkAvailability::ConstructL()
    83 void CMusAvaNetworkAvailability::ConstructL()
    99     // that's done in RunL    
    99     // that's done in RunL    
   100     switch (iPhoneStatus->CallStatusL())
   100     switch (iPhoneStatus->CallStatusL())
   101         {
   101         {
   102             case NMusSessionInformationApi::ECallConnected:                 
   102             case NMusSessionInformationApi::ECallConnected:                 
   103                 {
   103                 {
   104                  TBuf<CMusAvaCallEventMonitor::KMusTelNumberMaxLength> telNumber;
   104 				TBuf<CMusAvaCallEventMonitor::KMusTelNumberMaxLength> telNumber;
   105                  iPhoneStatus->GetTelNumberL( telNumber );
   105 				TBool isSipUri( EFalse );
   106                  iSettings.SetTelNumberL( telNumber );
   106 				iPhoneStatus->GetTelNumberL( telNumber, isSipUri );
   107                  iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() );
   107 				SetRemoteHostL( telNumber, isSipUri );
   108                  iSettings.SetCallPrivacy( iPhoneStatus->CallPrivacyL() );
   108 				iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() );
   109         
   109 				SetState( MMusAvaObserver::EMusAvaStatusAvailable );
   110                  SetState( MMusAvaObserver::EMusAvaStatusAvailable );
   110 				break;
   111                  break;
       
   112                 }      
   111                 }      
   113             case NMusSessionInformationApi::ECallHold:  
   112             case NMusSessionInformationApi::ECallHold:  
   114                  SetState( MMusAvaObserver::EMusAvaStatusCallOnHold );
   113                  SetState( MMusAvaObserver::EMusAvaStatusCallOnHold );
   115                  break;
   114                  break;
   116             case NMusSessionInformationApi::EConferenceCall:
   115             case NMusSessionInformationApi::EConferenceCall:
   146 
   145 
   147 // -------------------------------------------------------------------------
   146 // -------------------------------------------------------------------------
   148 //  This function is called when a cs call is connected.
   147 //  This function is called when a cs call is connected.
   149 // -------------------------------------------------------------------------
   148 // -------------------------------------------------------------------------
   150 //
   149 //
   151 void CMusAvaNetworkAvailability::CallConnectedL( const TDesC& aTelNumber )
   150 void CMusAvaNetworkAvailability::CallConnectedL( const TDesC& aTelNumber,
       
   151                                                  TBool aIsSipUri)
   152     {
   152     {
   153     MUS_LOG( "mus: [MUSAVA]  \
   153     MUS_LOG( "mus: [MUSAVA]  \
   154                 -> CMusAvaNetworkAvailability::CallConnectedL()" )
   154                 -> CMusAvaNetworkAvailability::CallConnectedL()" )
   155                 
   155     // try to resolve to contact information of the remote host
   156 // try to resolve to contact information of the remote host	
   156 	SetRemoteHostL( aTelNumber, aIsSipUri );
   157 	iSettings.SetTelNumberL( aTelNumber );
   157     iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() );
   158 	iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() );
   158     SetState( MMusAvaObserver::EMusAvaStatusAvailable );
   159 	iSettings.SetCallPrivacy( iPhoneStatus->CallPrivacyL() );
       
   160    
       
   161 	//isn't the phone sent option successfully
       
   162     if ( ( aTelNumber != iSettings.OptionSentTelNumber()  
       
   163     	   || iSettings.OptionSentTelNumber() == KNullDesC() )
       
   164     	   && iConfcall )
       
   165    	    {
       
   166         MUS_LOG("CMusAvaNetworkAvailability::CallConnectedL EMusAvaStatusInProgress");
       
   167         iSettings.ReleaseOptionSentNumber();
       
   168         SetState( MMusAvaObserver::EMusAvaStatusInProgress );         
       
   169    	    }
       
   170     else
       
   171     	{
       
   172 	    SetState( MMusAvaObserver::EMusAvaStatusAvailable );
       
   173 	    MUS_LOG("CMusAvaNetworkAvailability::CallConnectedL EMusAvaStatusAvailable");
       
   174 			
       
   175     	  }
       
   176 
   159 
   177     MUS_LOG( "mus: [MUSAVA]  \
   160     MUS_LOG( "mus: [MUSAVA]  \
   178                 <- CMusAvaNetworkAvailability::CallConnectedL()" )
   161                 <- CMusAvaNetworkAvailability::CallConnectedL()" )
   179     }
   162     }
   180 
   163 
   187 void CMusAvaNetworkAvailability::ConferenceCallL()
   170 void CMusAvaNetworkAvailability::ConferenceCallL()
   188     {
   171     {
   189     MUS_LOG( "mus: [MUSAVA]  \
   172     MUS_LOG( "mus: [MUSAVA]  \
   190             -> CMusAvaNetworkAvailability::ConferenceCallL()" )
   173             -> CMusAvaNetworkAvailability::ConferenceCallL()" )
   191     //Report line status
   174     //Report line status
   192     iConfcall = ETrue;
       
   193     SetState( MMusAvaObserver::EMusAvaStatusConferenceCall );
   175     SetState( MMusAvaObserver::EMusAvaStatusConferenceCall );
   194     MUS_LOG( "mus: [MUSAVA]  \
   176     MUS_LOG( "mus: [MUSAVA]  \
   195                 <- CMusAvaNetworkAvailability::ConferenceCallL()" )
   177                 <- CMusAvaNetworkAvailability::ConferenceCallL()" )
   196     }
   178     }
   197 
   179 
   198 
   180 
   199 // -------------------------------------------------------------------------
   181 // -------------------------------------------------------------------------
   200 //  This function is called when a cs call goes hold
   182 //  This function is called when a cs call goes hold
   201 // -------------------------------------------------------------------------
   183 // -------------------------------------------------------------------------
   202 //
   184 //
   203 void CMusAvaNetworkAvailability::CallHoldL( const TDesC& aTelNumber )
   185 void CMusAvaNetworkAvailability::CallHoldL( const TDesC& aTelNumber,
       
   186                                             TBool aIsSipUri)
   204     {
   187     {
   205     MUS_LOG( "mus: [MUSAVA]  -> CMusAvaNetworkAvailability::CallHoldL()" )
   188     MUS_LOG( "mus: [MUSAVA]  -> CMusAvaNetworkAvailability::CallHoldL()" )
   206     //Report line status
   189     //Report line status
   207     iSettings.SetTelNumberL( aTelNumber );
   190     SetRemoteHostL( aTelNumber, aIsSipUri );
   208     iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() );
   191     iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() );
   209     iSettings.SetCallPrivacy( iPhoneStatus->CallPrivacyL() );
       
   210     SetState( MMusAvaObserver::EMusAvaStatusCallOnHold );
   192     SetState( MMusAvaObserver::EMusAvaStatusCallOnHold );
   211     MUS_LOG( "mus: [MUSAVA]  <- CMusAvaNetworkAvailability::CallHoldL()" )
   193     MUS_LOG( "mus: [MUSAVA]  <- CMusAvaNetworkAvailability::CallHoldL()" )
   212     }
   194     }
   213 
   195 
   214 
   196 
   220 void CMusAvaNetworkAvailability::NoActiveCallL()
   202 void CMusAvaNetworkAvailability::NoActiveCallL()
   221     {
   203     {
   222     MUS_LOG( "mus: [MUSAVA]  -> CMusAvaNetworkAvailability::NoActiveCallL()" )
   204     MUS_LOG( "mus: [MUSAVA]  -> CMusAvaNetworkAvailability::NoActiveCallL()" )
   223 
   205 
   224     iSettings.SetTelNumberL( KNullDesC() );
   206     iSettings.SetTelNumberL( KNullDesC() );
       
   207     CDesCArrayFlat* sipUris =
       
   208     	new ( ELeave ) CDesCArrayFlat( KSipUriArrayGranularity );
       
   209 	CleanupStack::PushL( sipUris );
       
   210 	iSettings.SetSipAddressesL( sipUris );
       
   211 	CleanupStack::Pop( sipUris );                    
   225 
   212 
   226     //Report line status
   213     //Report line status
   227     //Availability status
   214     //Availability status
   228     SetState( MMusAvaObserver::EMusAvaStatusNoCall );
   215     SetState( MMusAvaObserver::EMusAvaStatusNoCall );
   229 
   216 
   230     MUS_LOG( "mus: [MUSAVA]  <- CMusAvaNetworkAvailability::NoActiveCallL()" )
   217     MUS_LOG( "mus: [MUSAVA]  <- CMusAvaNetworkAvailability::NoActiveCallL()" )
   231     }
   218     }
   232 
   219 
   233 // -------------------------------------------------------------------------
   220 
   234 //This function is called when conference call terminted
   221 void CMusAvaNetworkAvailability::SetRemoteHostL( const TDesC& aTelNumber,
   235 //
   222 												 TBool aIsSipUri )
   236 // -------------------------------------------------------------------------
       
   237 //
       
   238 void CMusAvaNetworkAvailability::ConferenceCallLTerminated()
       
   239 	{
   223 	{
   240     MUS_LOG( "mus: [MUSAVA]  -> CMusAvaNetworkAvailability::ConferenceCallLTerminated()" )
   224 	MUS_LOG1( "mus: [MUSAVA]  -> CMusAvaNetworkAvailability::SetRemoteHostL(%d)",
   241     if ( iConfcall )
   225 			  aIsSipUri )
   242     	{
   226 	  
   243         iConfcall = EFalse;
   227 	if ( aIsSipUri )
   244     	}
   228 		{
   245     AvailabilitiesAbleToShowIndicator();
   229 		CDesCArrayFlat* sipUris =
   246 
   230 			new ( ELeave ) CDesCArrayFlat( KSipUriArrayGranularity );
   247     MUS_LOG( "mus: [MUSAVA]  <- CMusAvaNetworkAvailability::ConferenceCallLTerminated()" )
   231 		CleanupStack::PushL( sipUris );
       
   232 		sipUris->AppendL( aTelNumber );
       
   233 		iSettings.SetSipAddressesL( sipUris );
       
   234 		CleanupStack::Pop( sipUris );
       
   235 		
       
   236 		iSettings.SetUriForContactResolvingL( aTelNumber );
       
   237 		}
       
   238 	else
       
   239 		{
       
   240 		iSettings.SetTelNumberL( aTelNumber );
       
   241 		}
       
   242 
       
   243 	MUS_LOG( "mus: [MUSAVA]  <- CMusAvaNetworkAvailability::SetRemoteHostL()" )
   248 	}
   244 	}