204 // |
202 // |
205 void CPhoneTwoSinglesAndWaiting::HandleIdleL( TInt aCallId ) |
203 void CPhoneTwoSinglesAndWaiting::HandleIdleL( TInt aCallId ) |
206 { |
204 { |
207 __LOGMETHODSTARTEND( EPhoneUIStates, |
205 __LOGMETHODSTARTEND( EPhoneUIStates, |
208 "CPhoneTwoSinglesAndWaiting::HandleIdleL()"); |
206 "CPhoneTwoSinglesAndWaiting::HandleIdleL()"); |
209 |
207 BeginUiUpdateLC(); |
210 BeginUiUpdateLC(); |
|
211 |
|
212 // Remove call |
|
213 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId ); |
208 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId ); |
214 |
209 |
215 if ( iRingingCallId == aCallId ) |
210 if ( iRingingCallId == aCallId ) |
216 { |
211 { |
217 StateTransitionToTwoSinglesL(); |
212 StateTransitionToTwoSinglesL(); |
218 } |
213 } |
219 else |
214 else |
220 { |
215 { |
221 StateTransitionToSingleAndWaitingL(); |
216 StateTransitionToSingleAndWaitingL(); |
222 } |
217 } |
223 |
|
224 EndUiUpdate(); |
218 EndUiUpdate(); |
225 } |
219 } |
226 |
220 |
227 // ----------------------------------------------------------- |
221 // ----------------------------------------------------------- |
228 // CPhoneTwoSinglesAndWaiting::StateTransitionToTwoSinglesL |
222 // CPhoneTwoSinglesAndWaiting::StateTransitionToTwoSinglesL |
232 { |
226 { |
233 __LOGMETHODSTARTEND( EPhoneUIStates, |
227 __LOGMETHODSTARTEND( EPhoneUIStates, |
234 "CPhoneTwoSinglesAndWaiting::StateTransitionToTwoSinglesL()"); |
228 "CPhoneTwoSinglesAndWaiting::StateTransitionToTwoSinglesL()"); |
235 if ( IsNumberEntryUsedL() ) |
229 if ( IsNumberEntryUsedL() ) |
236 { |
230 { |
237 // Go to background if necessary |
|
238 if ( NeedToSendToBackgroundL() ) |
231 if ( NeedToSendToBackgroundL() ) |
239 { |
232 { |
240 // Return phone to the background if send to background is needed. |
|
241 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); |
233 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); |
242 |
|
243 UpdateCbaL( EPhoneCallHandlingInCallCBA ); |
234 UpdateCbaL( EPhoneCallHandlingInCallCBA ); |
244 } |
235 } |
245 else |
236 else |
246 { |
237 { |
247 // Show the number entry if it exists. |
|
248 SetNumberEntryVisibilityL(ETrue); |
238 SetNumberEntryVisibilityL(ETrue); |
249 } |
239 } |
250 } |
240 } |
251 else |
241 else |
252 { |
242 { |
255 |
245 |
256 // If numberentry is not open just check NeedToSendToBackgroundL and |
246 // If numberentry is not open just check NeedToSendToBackgroundL and |
257 // sendbackround if needed. |
247 // sendbackround if needed. |
258 if ( NeedToSendToBackgroundL() ) |
248 if ( NeedToSendToBackgroundL() ) |
259 { |
249 { |
260 // Return phone to the background if send to background is needed. |
|
261 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); |
250 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); |
262 } |
251 } |
263 } |
252 } |
264 |
253 |
265 if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) |
254 if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) |
266 && iStateMachine->PhoneStorage()->IsScreenLocked() ) |
255 && iStateMachine->PhoneStorage()->IsScreenLocked() ) |
267 { |
256 { |
268 EnableCallUIL(); |
257 EnableCallUIL(); |
269 } |
258 } |
270 |
259 |
271 // Reset blocked keys list |
|
272 iStateMachine->PhoneStorage()->ResetBlockedKeysList(); |
260 iStateMachine->PhoneStorage()->ResetBlockedKeysList(); |
273 |
|
274 // Go to two singles state |
|
275 SetTouchPaneButtons( EPhoneTwoSinglesButtons ); |
261 SetTouchPaneButtons( EPhoneTwoSinglesButtons ); |
276 // CBA updates in above if-else conditions |
|
277 iStateMachine->ChangeState( EPhoneStateTwoSingles ); |
262 iStateMachine->ChangeState( EPhoneStateTwoSingles ); |
278 } |
263 } |
279 |
264 |
280 // ----------------------------------------------------------- |
265 // ----------------------------------------------------------- |
281 // CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL |
266 // CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL |
282 // ----------------------------------------------------------- |
267 // ----------------------------------------------------------- |
283 // |
268 // |
284 void CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL() |
269 void CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL() |
285 { |
270 { |
286 __LOGMETHODSTARTEND( EPhoneUIStates, |
271 __LOGMETHODSTARTEND( EPhoneUIStates, |
287 "CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL()"); |
272 "CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL()") |
288 // Go to two singles state |
|
289 TPhoneCmdParamInteger callIdParam; |
273 TPhoneCmdParamInteger callIdParam; |
290 iViewCommandHandle->ExecuteCommandL( |
274 iViewCommandHandle->ExecuteCommandL( |
291 EPhoneViewGetExpandedBubbleCallId, &callIdParam ); |
275 EPhoneViewGetExpandedBubbleCallId, &callIdParam ); |
292 |
276 |
293 if ( callIdParam.Integer()!=iRingingCallId ) |
277 if ( callIdParam.Integer()!=iRingingCallId ) |
294 { |
278 { |
295 CPhoneGsmInCall::UpdateInCallCbaL(); |
279 CPhoneGsmInCall::UpdateInCallCbaL(); |
296 } |
280 } |
297 else |
281 else |
298 { |
282 { |
299 iCbaManager->SetCbaL( EPhoneCallHandlingCallWaitingCBA ); |
283 UpdateCbaL( EPhoneCallHandlingCallWaitingCBA ); |
300 } |
284 } |
301 |
|
302 // Check if HW Keys or Call UI should be disabled |
|
303 CheckDisableHWKeysAndCallUIL(); |
285 CheckDisableHWKeysAndCallUIL(); |
304 |
|
305 SetTouchPaneButtons( EPhoneWaitingCallButtons ); |
286 SetTouchPaneButtons( EPhoneWaitingCallButtons ); |
306 |
287 iStateMachine->ChangeState( EPhoneStateWaitingInSingle ); |
307 iStateMachine->ChangeState( EPhoneStateWaitingInSingle ); |
|
308 } |
288 } |
309 |
289 |
310 // ----------------------------------------------------------- |
290 // ----------------------------------------------------------- |
311 // CPhoneTwoSinglesAndWaiting::HandleConnectedConferenceL |
291 // CPhoneTwoSinglesAndWaiting::HandleConnectedConferenceL |
312 // ----------------------------------------------------------- |
292 // ----------------------------------------------------------- |
314 void CPhoneTwoSinglesAndWaiting::HandleConnectedConferenceL( TInt aCallId ) |
294 void CPhoneTwoSinglesAndWaiting::HandleConnectedConferenceL( TInt aCallId ) |
315 { |
295 { |
316 __LOGMETHODSTARTEND( EPhoneUIStates, |
296 __LOGMETHODSTARTEND( EPhoneUIStates, |
317 "CPhoneTwoSinglesAndWaiting::HandleConnectedConferenceL()"); |
297 "CPhoneTwoSinglesAndWaiting::HandleConnectedConferenceL()"); |
318 BeginUiUpdateLC(); |
298 BeginUiUpdateLC(); |
319 // Update call state |
299 |
320 TPhoneCmdParamCallHeaderData callHeaderParam; |
|
321 |
|
322 TInt callLabelId; |
300 TInt callLabelId; |
323 TBuf<KPhoneCallHeaderLabelMaxLength> conferenceText( KNullDesC ); |
301 TBuf<KPhoneCallHeaderLabelMaxLength> conferenceText( KNullDesC ); |
324 callLabelId = CPhoneMainResourceResolver::Instance()-> |
302 callLabelId = CPhoneMainResourceResolver::Instance()-> |
325 ResolveResourceID( EPhoneCLIConferenceCall ); |
303 ResolveResourceID( EPhoneCLIConferenceCall ); |
326 |
|
327 StringLoader::Load( |
304 StringLoader::Load( |
328 conferenceText, |
305 conferenceText, |
329 callLabelId, |
306 callLabelId, |
330 CCoeEnv::Static() ); |
307 CCoeEnv::Static() ); |
|
308 |
|
309 TPhoneCmdParamCallHeaderData callHeaderParam; |
331 callHeaderParam.SetCLIText( conferenceText, TPhoneCmdParamCallHeaderData::ERight ); |
310 callHeaderParam.SetCLIText( conferenceText, TPhoneCmdParamCallHeaderData::ERight ); |
332 |
|
333 callHeaderParam.SetCallState(EPEStateConnectedConference); |
311 callHeaderParam.SetCallState(EPEStateConnectedConference); |
334 |
|
335 callHeaderParam.SetCiphering( |
312 callHeaderParam.SetCiphering( |
336 iStateMachine->PhoneEngineInfo()->IsSecureCall( aCallId ) ); |
313 iStateMachine->PhoneEngineInfo()->IsSecureCall( aCallId ) ); |
337 |
|
338 callHeaderParam.SetCipheringIndicatorAllowed( |
314 callHeaderParam.SetCipheringIndicatorAllowed( |
339 iStateMachine->PhoneEngineInfo()->SecureSpecified() ); |
315 iStateMachine->PhoneEngineInfo()->SecureSpecified() ); |
340 |
|
341 // Service identifier must be given so that service specific settings |
316 // Service identifier must be given so that service specific settings |
342 // can be taken into account at phoneuiview. |
317 // can be taken into account at phoneuiview. |
343 callHeaderParam.SetServiceId( |
318 callHeaderParam.SetServiceId( |
344 iStateMachine->PhoneEngineInfo()->ServiceId( aCallId ) ); |
319 iStateMachine->PhoneEngineInfo()->ServiceId( aCallId ) ); |
345 |
320 |
346 // Check if HW Keys or Call UI should be disabled |
|
347 CheckDisableHWKeysAndCallUIL(); |
321 CheckDisableHWKeysAndCallUIL(); |
348 |
|
349 |
322 |
350 iViewCommandHandle->ExecuteCommandL( EPhoneViewCreateConference, aCallId, |
323 iViewCommandHandle->ExecuteCommandL( EPhoneViewCreateConference, aCallId, |
351 &callHeaderParam ); |
324 &callHeaderParam ); |
352 |
325 |
353 // Clear the flag |
326 // Clear the flag |
354 TPhoneCmdParamBoolean booleanParam; |
327 TPhoneCmdParamBoolean booleanParam; |
355 booleanParam.SetBoolean( EFalse ); |
328 booleanParam.SetBoolean( EFalse ); |
356 iViewCommandHandle->ExecuteCommandL( |
329 iViewCommandHandle->ExecuteCommandL( |
357 EPhoneViewSetNeedToSendToBackgroundStatus, &booleanParam ); |
330 EPhoneViewSetNeedToSendToBackgroundStatus, &booleanParam ); |
358 |
331 |
359 // Set touch controls |
|
360 SetTouchPaneButtons( EPhoneWaitingCallButtons ); |
332 SetTouchPaneButtons( EPhoneWaitingCallButtons ); |
361 |
|
362 UpdateCbaL( EPhoneCallHandlingCallWaitingCBA ); |
333 UpdateCbaL( EPhoneCallHandlingCallWaitingCBA ); |
363 |
|
364 EndUiUpdate(); |
334 EndUiUpdate(); |
365 // Go to Conference And Waiting state |
335 iStateMachine->ChangeState( EPhoneStateConferenceAndWaiting ); |
366 // No need for CBA update |
|
367 iStateMachine->ChangeState( EPhoneStateConferenceAndWaiting ); |
|
368 } |
336 } |
369 |
337 |
370 // ----------------------------------------------------------- |
338 // ----------------------------------------------------------- |
371 // CPhoneTwoSinglesAndWaiting::UpdateInCallCbaL |
339 // CPhoneTwoSinglesAndWaiting::UpdateInCallCbaL |
372 // ----------------------------------------------------------- |
340 // ----------------------------------------------------------- |
373 // |
341 // |
374 void CPhoneTwoSinglesAndWaiting::UpdateInCallCbaL() |
342 void CPhoneTwoSinglesAndWaiting::UpdateInCallCbaL() |
375 { |
343 { |
376 __LOGMETHODSTARTEND( EPhoneUIStates, |
344 __LOGMETHODSTARTEND( EPhoneUIStates, |
377 "CPhoneTwoSinglesAndWaiting::UpdateInCallCbaL()"); |
345 "CPhoneTwoSinglesAndWaiting::UpdateInCallCbaL()"); |
378 |
|
379 TPhoneCmdParamInteger callIdParam; |
346 TPhoneCmdParamInteger callIdParam; |
380 iViewCommandHandle->ExecuteCommandL( |
347 iViewCommandHandle->ExecuteCommandL( |
381 EPhoneViewGetExpandedBubbleCallId, &callIdParam ); |
348 EPhoneViewGetExpandedBubbleCallId, &callIdParam ); |
382 |
|
383 if ( callIdParam.Integer()!=iRingingCallId ) |
349 if ( callIdParam.Integer()!=iRingingCallId ) |
384 { |
350 { |
385 CPhoneGsmInCall::UpdateInCallCbaL(); |
351 CPhoneGsmInCall::UpdateInCallCbaL(); |
386 } |
352 } |
387 else |
353 else |