59 // Construct object |
59 // Construct object |
60 // --------------------------------------------------------------------------- |
60 // --------------------------------------------------------------------------- |
61 // |
61 // |
62 void CCCECallContainer::ConstructL() |
62 void CCCECallContainer::ConstructL() |
63 { |
63 { |
64 FeatureManager::InitializeLibL(); |
64 FeatureManager::InitializeLibL(); |
65 iCallStateMediator = CCCECallInfoMediator::NewL( *this ); |
65 iCallStateMediator = CCCECallInfoMediator::NewL( *this ); |
66 |
66 |
67 CreateCallDataArraysL(); |
67 CreateCallDataArraysL(); |
68 |
68 |
69 iTransferController = CCCETransferController::NewL( *this ); |
69 iTransferController = CCCETransferController::NewL( *this ); |
168 // Is called after handover, when call type has changed |
168 // Is called after handover, when call type has changed |
169 // ----------------------------------------------------------------------------- |
169 // ----------------------------------------------------------------------------- |
170 // |
170 // |
171 void CCCECallContainer::AirTimeDurationSwap( |
171 void CCCECallContainer::AirTimeDurationSwap( |
172 const CCPCall::TCallType aNewCallType) |
172 const CCPCall::TCallType aNewCallType) |
173 { |
173 { |
174 CCELOGSTRING("CCCECallContainer::AirTimeDurationSwap(): IN"); |
174 CCELOGSTRING("CCCECallContainer::AirTimeDurationSwap(): IN"); |
175 |
175 |
176 CCCECall* call = NULL; |
176 CCCECall* call = NULL; |
177 TInt calls(0); |
177 TInt calls(0); |
178 for ( TInt i = 0; i < KCCECallObjects; i++ ) |
178 for ( TInt i = 0; i < KCCECallObjects; i++ ) |
189 { |
189 { |
190 calls ++; |
190 calls ++; |
191 } |
191 } |
192 |
192 |
193 if( 1 == calls ) |
193 if( 1 == calls ) |
194 { |
194 { |
195 // After handover we will have only one active call |
195 // After handover we will have only one active call |
196 // If we have more or less, timer swapping will not happend |
196 // If we have more or less, timer swapping will not happend |
197 if (aNewCallType == CCPCall::ECallTypePS ) |
197 if (aNewCallType == CCPCall::ECallTypePS ) |
198 { |
198 { |
199 CCELOGSTRING2("CCCECallContainer::AirTimeDurationSwap(): CS Stops, PS restarts from %d", |
199 CCELOGSTRING2("CCCECallContainer::AirTimeDurationSwap(): CS Stops, PS restarts from %d", |
200 iCSDuration->NumberOfBeats() ); |
200 iCSDuration->NumberOfBeats() ); |
201 iCSDuration->Stop(); |
201 iCSDuration->Stop(); |
202 iPSDuration->RestartAirTimeDuration(iCSDuration->NumberOfBeats()); |
202 iPSDuration->RestartAirTimeDuration(iCSDuration->NumberOfBeats()); |
203 iCSDuration->Reset(); |
203 iCSDuration->Reset(); |
204 } |
204 } |
205 else |
205 else |
206 { |
206 { |
207 CCELOGSTRING2("CCCECallContainer::AirTimeDurationSwap(): PS Stops, CS restarts from %d", |
207 CCELOGSTRING2("CCCECallContainer::AirTimeDurationSwap(): PS Stops, CS restarts from %d", |
208 iPSDuration->NumberOfBeats() ); |
208 iPSDuration->NumberOfBeats() ); |
209 iPSDuration->Stop(); |
209 iPSDuration->Stop(); |
210 iCSDuration->RestartAirTimeDuration(iPSDuration->NumberOfBeats()); |
210 iCSDuration->RestartAirTimeDuration(iPSDuration->NumberOfBeats()); |
211 iPSDuration->Reset(); |
211 iPSDuration->Reset(); |
212 } |
212 } |
213 } |
213 } |
214 CCELOGSTRING("CCCECallContainer::AirTimeDurationSwap(): OUT"); |
214 CCELOGSTRING("CCCECallContainer::AirTimeDurationSwap(): OUT"); |
215 } |
215 } |
216 |
216 |
217 // --------------------------------------------------------------------------- |
217 // --------------------------------------------------------------------------- |
218 // AirTimeDurationStop() |
218 // AirTimeDurationStop() |
219 // --------------------------------------------------------------------------- |
219 // --------------------------------------------------------------------------- |
220 // |
220 // |
221 void CCCECallContainer::AirTimeDurationStop( CCCECall* /*aCall*/ ) const |
221 void CCCECallContainer::AirTimeDurationStop( CCCECall* /*aCall*/ ) const |
292 for ( TInt i = 0; i < KCCECallObjects; i++ ) |
292 for ( TInt i = 0; i < KCCECallObjects; i++ ) |
293 { |
293 { |
294 call = GetCall( i ); |
294 call = GetCall( i ); |
295 if ( call->State() == CCPCall::EStateConnected || |
295 if ( call->State() == CCPCall::EStateConnected || |
296 call->State() == CCPCall::EStateHold ) |
296 call->State() == CCPCall::EStateHold ) |
297 { |
297 { |
298 if ( IsCsPlugin( call, EFalse ) ) |
298 if ( IsCsPlugin( call, EFalse ) ) |
299 { |
299 { |
300 csCalls++; |
300 csCalls++; |
301 CCELOGSTRING2(" AirTimeDurationStart() csCalls=%d ", csCalls); |
301 CCELOGSTRING2(" AirTimeDurationStart() csCalls=%d ", csCalls); |
302 } |
302 } |
368 void CCCECallContainer::ScheduleReleaseCall( MCCPCall& aCalltoRemove, const TUid aUid ) |
368 void CCCECallContainer::ScheduleReleaseCall( MCCPCall& aCalltoRemove, const TUid aUid ) |
369 { |
369 { |
370 TCallReleaseEntry entry; |
370 TCallReleaseEntry entry; |
371 entry.iCallToRelease = &aCalltoRemove; |
371 entry.iCallToRelease = &aCalltoRemove; |
372 entry.iUid = aUid; |
372 entry.iUid = aUid; |
373 iCallstoRelease.Append(entry); |
373 iCallstoRelease.Append(entry); |
374 if (!iIdle->IsActive()) |
374 if (!iIdle->IsActive()) |
375 { |
375 { |
376 iIdle->Start( TCallBack(ReleaseCalls,this) ); |
376 iIdle->Start( TCallBack(ReleaseCalls,this) ); |
377 } |
377 } |
378 } |
378 } |
697 call = GetCall( i ); |
697 call = GetCall( i ); |
698 if ( call->IsInUse() ) |
698 if ( call->IsInUse() ) |
699 { |
699 { |
700 if( call->ImplementationUid() == aImplementationUid ) |
700 if( call->ImplementationUid() == aImplementationUid ) |
701 { |
701 { |
702 // return value ignored. Ownership of the call object is not |
702 aCallArray.Append(call); |
703 // transferred to array. |
|
704 aCallArray.Append(call); |
|
705 } |
703 } |
706 } |
704 } |
707 } |
705 } |
708 |
706 |
709 return aCallArray.Count(); |
707 return aCallArray.Count(); |
729 callState = call->State(); |
727 callState = call->State(); |
730 if ( callState == CCPCall::EStateDialling || |
728 if ( callState == CCPCall::EStateDialling || |
731 callState == CCPCall::EStateConnecting || |
729 callState == CCPCall::EStateConnecting || |
732 callState == CCPCall::EStateConnected ) |
730 callState == CCPCall::EStateConnected ) |
733 { |
731 { |
734 // Ownership of the call object is not |
732 aCallArray.Append( call ); |
735 // transferred to array. |
733 err = KErrNone; |
736 err = aCallArray.Append( call ); |
|
737 |
|
738 } |
734 } |
739 } |
735 } |
740 } |
736 } |
741 |
737 |
742 if( iEmergencyCall->IsInProgress() ) |
738 if( iEmergencyCall->IsInProgress() ) |
744 callState = iEmergencyCall->State(); |
740 callState = iEmergencyCall->State(); |
745 if ( callState == CCPCall::EStateDialling || |
741 if ( callState == CCPCall::EStateDialling || |
746 callState == CCPCall::EStateConnecting || |
742 callState == CCPCall::EStateConnecting || |
747 callState == CCPCall::EStateConnected ) |
743 callState == CCPCall::EStateConnected ) |
748 { |
744 { |
749 // Ownership of the iEmergencyCall object is not transfered. |
745 aCallArray.Append( iEmergencyCall ); |
750 err = aCallArray.Append( iEmergencyCall ); |
746 err = KErrNone; |
751 } |
747 } |
752 } |
748 } |
753 |
749 |
754 return err; |
750 return err; |
755 } |
751 } |
987 if( iConferenceCall->EnumerateCalls() != 0 ) |
983 if( iConferenceCall->EnumerateCalls() != 0 ) |
988 { |
984 { |
989 // Do nothing when there is only cscalls |
985 // Do nothing when there is only cscalls |
990 |
986 |
991 if ( IsCsPlugin( aCall, ETrue ) ) |
987 if ( IsCsPlugin( aCall, ETrue ) ) |
992 { |
988 { |
993 |
989 |
994 break; |
990 break; |
995 } |
991 } |
996 |
992 |
997 // If call or conferencecall isn`t cscall then do conference swap |
993 // If call or conferencecall isn`t cscall then do conference swap |
998 if( iConferenceCall->State() == MCCEConferenceCallObserver::ECCEConferenceHold && |
994 if( iConferenceCall->State() == MCCEConferenceCallObserver::ECCEConferenceHold && |
1290 // ----------------------------------------------------------------------------- |
1286 // ----------------------------------------------------------------------------- |
1291 // GetLifeTime() |
1287 // GetLifeTime() |
1292 // ----------------------------------------------------------------------------- |
1288 // ----------------------------------------------------------------------------- |
1293 // |
1289 // |
1294 TBool CCCECallContainer::GetLifeTime( TDes8& aLifeTimeInfo ) |
1290 TBool CCCECallContainer::GetLifeTime( TDes8& aLifeTimeInfo ) |
1295 { |
1291 { |
1296 CCELOGSTRING("CCCE::GetLifeTime()"); |
1292 CCELOGSTRING("CCCE::GetLifeTime()"); |
1297 |
1293 |
1298 CConvergedCallProvider* plugin = NULL; |
1294 CConvergedCallProvider* plugin = NULL; |
1299 |
1295 |
1300 TRAP_IGNORE( plugin = iPluginManager->GetPluginL(KCSServiceId)); |
1296 TRAP_IGNORE( plugin = iPluginManager->GetPluginL(KCSServiceId)); |
1301 |
1297 |
1302 if( plugin ) |
1298 if( plugin ) |
1303 { |
1299 { |
1304 plugin->GetLifeTime(aLifeTimeInfo); |
1300 plugin->GetLifeTime(aLifeTimeInfo); |
1305 } |
1301 } |
1306 else |
1302 else |
1307 { |
1303 { |
1308 CCELOGSTRING("CCCE::GetLifeTime() - CS plugin not found!"); |
1304 CCELOGSTRING("CCCE::GetLifeTime() - CS plugin not found!"); |
1309 return EFalse; |
1305 return EFalse; |
1310 } |
1306 } |
1311 |
1307 |
1312 return ETrue; |
1308 return ETrue; |
1313 } |
1309 } |
1314 |
1310 |
1315 // ----------------------------------------------------------------------------- |
1311 // ----------------------------------------------------------------------------- |
1316 // GetCSInfo() |
1312 // GetCSInfo() |
1317 // ----------------------------------------------------------------------------- |
1313 // ----------------------------------------------------------------------------- |
1318 // |
1314 // |
1319 TBool CCCECallContainer::GetCSInfo( CSInfo& aCSInfo ) |
1315 TBool CCCECallContainer::GetCSInfo( CSInfo& aCSInfo ) |
1320 { |
1316 { |
1321 CCELOGSTRING("CCCE::GetCSInfo()"); |
1317 CCELOGSTRING("CCCE::GetCSInfo()"); |
1322 |
1318 |
1323 CConvergedCallProvider* plugin = NULL; |
1319 CConvergedCallProvider* plugin = NULL; |
1324 |
1320 |
1325 TRAP_IGNORE( plugin = iPluginManager->GetPluginL(KCSServiceId)); |
1321 TRAP_IGNORE( plugin = iPluginManager->GetPluginL(KCSServiceId)); |
1326 |
1322 |
1327 |
1323 |
1328 if( plugin ) |
1324 if( plugin ) |
1329 { |
1325 { |
1330 plugin->GetCSInfo(aCSInfo); |
1326 plugin->GetCSInfo(aCSInfo); |
1331 } |
1327 } |
1332 else |
1328 else |
1333 { |
1329 { |
1334 CCELOGSTRING("CCCE::GetCSInfo() - CS plugin not found!"); |
1330 CCELOGSTRING("CCCE::GetCSInfo() - CS plugin not found!"); |
1335 return EFalse; |
1331 return EFalse; |
1336 } |
1332 } |
1337 |
1333 |
1338 return ETrue; |
1334 return ETrue; |
1339 } |
1335 } |
1340 |
1336 |
1341 // --------------------------------------------------------------------------- |
1337 // --------------------------------------------------------------------------- |
1342 // CCCECallContainer::IsCsPlugin |
1338 // CCCECallContainer::IsCsPlugin |
1343 // --------------------------------------------------------------------------- |
1339 // --------------------------------------------------------------------------- |
1344 // |
1340 // |