84 // CPhoneConferenceAndSingleAndWaiting::NewL() |
82 // CPhoneConferenceAndSingleAndWaiting::NewL() |
85 // Constructor |
83 // Constructor |
86 // (other items were commented in a header). |
84 // (other items were commented in a header). |
87 // ----------------------------------------------------------- |
85 // ----------------------------------------------------------- |
88 // |
86 // |
89 CPhoneConferenceAndSingleAndWaiting* CPhoneConferenceAndSingleAndWaiting::NewL( |
87 CPhoneConferenceAndSingleAndWaiting* CPhoneConferenceAndSingleAndWaiting::NewL( |
90 MPhoneStateMachine* aStateMachine, |
88 MPhoneStateMachine* aStateMachine, |
91 MPhoneViewCommandHandle* aViewCommandHandle, |
89 MPhoneViewCommandHandle* aViewCommandHandle, |
92 MPhoneCustomization* aPhoneCustomization ) |
90 MPhoneCustomization* aPhoneCustomization ) |
93 { |
91 { |
94 CPhoneConferenceAndSingleAndWaiting* self = new( ELeave ) CPhoneConferenceAndSingleAndWaiting( |
92 CPhoneConferenceAndSingleAndWaiting* self = new( ELeave ) CPhoneConferenceAndSingleAndWaiting( |
95 aStateMachine, aViewCommandHandle, aPhoneCustomization ); |
93 aStateMachine, aViewCommandHandle, aPhoneCustomization ); |
96 |
94 |
97 CleanupStack::PushL( self ); |
95 CleanupStack::PushL( self ); |
98 self->ConstructL(); |
96 self->ConstructL(); |
99 CleanupStack::Pop( self ); |
97 CleanupStack::Pop( self ); |
100 |
98 |
101 return self; |
99 return self; |
102 } |
100 } |
103 |
101 |
104 // ----------------------------------------------------------- |
102 // ----------------------------------------------------------- |
105 // CPhoneConferenceAndSingleAndWaiting::HandlePhoneEngineMessageL |
103 // CPhoneConferenceAndSingleAndWaiting::HandlePhoneEngineMessageL |
106 // ----------------------------------------------------------- |
104 // ----------------------------------------------------------- |
107 // |
105 // |
108 void CPhoneConferenceAndSingleAndWaiting::HandlePhoneEngineMessageL( |
106 void CPhoneConferenceAndSingleAndWaiting::HandlePhoneEngineMessageL( |
109 const TInt aMessage, |
107 const TInt aMessage, |
110 TInt aCallId ) |
108 TInt aCallId ) |
111 { |
109 { |
112 __LOGMETHODSTARTEND(EPhoneControl, "CPhoneConferenceAndSingleAndWaiting::HandlePhoneEngineMessageL()"); |
110 __LOGMETHODSTARTEND(EPhoneControl, "CPhoneConferenceAndSingleAndWaiting::HandlePhoneEngineMessageL()"); |
113 switch ( aMessage ) |
111 switch ( aMessage ) |
114 { |
112 { |
115 case MEngineMonitor::EPEMessageAddedConferenceMember: |
113 case MEngineMonitor::EPEMessageAddedConferenceMember: |
116 HandleAddedConferenceMemberL( aCallId ); |
114 HandleAddedConferenceMemberL( aCallId ); |
117 break; |
115 break; |
118 |
116 |
119 case MEngineMonitor::EPEMessageIdle: |
117 case MEngineMonitor::EPEMessageIdle: |
120 HandleIdleL( aCallId ); |
118 HandleIdleL( aCallId ); |
121 break; |
119 break; |
122 |
120 |
123 default: |
121 default: |
124 CPhoneConferenceAndSingle::HandlePhoneEngineMessageL( aMessage, |
122 CPhoneConferenceAndSingle::HandlePhoneEngineMessageL( aMessage, |
125 aCallId ); |
123 aCallId ); |
126 break; |
124 break; |
127 } |
125 } |
128 } |
126 } |
129 |
127 |
131 // CPhoneConferenceAndSingleAndWaiting::OpenMenuBarL |
129 // CPhoneConferenceAndSingleAndWaiting::OpenMenuBarL |
132 // ----------------------------------------------------------- |
130 // ----------------------------------------------------------- |
133 // |
131 // |
134 void CPhoneConferenceAndSingleAndWaiting::OpenMenuBarL() |
132 void CPhoneConferenceAndSingleAndWaiting::OpenMenuBarL() |
135 { |
133 { |
136 __LOGMETHODSTARTEND( EPhoneUIStates, |
134 __LOGMETHODSTARTEND( EPhoneUIStates, |
137 "CPhoneConferenceAndSingleAndWaiting::OpenMenuBarL()"); |
135 "CPhoneConferenceAndSingleAndWaiting::OpenMenuBarL()"); |
138 TInt resourceId = NULL; |
136 TInt resourceId = NULL; |
139 |
137 |
140 // Set specific flag to view so that DTMF menu item available |
138 // Set specific flag to view so that DTMF menu item available |
141 TPhoneCmdParamBoolean dtmfSendFlag; |
139 TPhoneCmdParamBoolean dtmfSendFlag; |
142 dtmfSendFlag.SetBoolean( ETrue ); |
140 dtmfSendFlag.SetBoolean( ETrue ); |
143 iViewCommandHandle->ExecuteCommandL( EPhoneViewSetDtmfOptionsFlag, |
141 iViewCommandHandle->ExecuteCommandL( EPhoneViewSetDtmfOptionsFlag, |
144 &dtmfSendFlag ); |
142 &dtmfSendFlag ); |
145 |
143 |
146 |
144 |
147 TPhoneCmdParamCallStateData callStateData; |
145 TPhoneCmdParamCallStateData callStateData; |
148 callStateData.SetCallState( EPEStateHeld ); |
146 callStateData.SetCallState( EPEStateHeld ); |
149 iViewCommandHandle->HandleCommandL( EPhoneViewGetCallIdByState, |
147 iViewCommandHandle->HandleCommandL( EPhoneViewGetCallIdByState, |
150 &callStateData ); |
148 &callStateData ); |
151 if( callStateData.CallId() == KConferenceCallId ) |
149 if( callStateData.CallId() == KConferenceCallId ) |
152 { |
150 { |
153 // Conference call is on hold and single is active |
151 // Conference call is on hold and single is active |
154 if ( IsNumberEntryVisibleL() ) |
152 if ( IsNumberEntryVisibleL() ) |
155 { |
153 { |
156 resourceId = EPhoneCallActiveHeldConfAndWaitingMenubarWithNumberEntry; |
154 resourceId = EPhoneCallActiveHeldConfAndWaitingMenubarWithNumberEntry; |
157 } |
155 } |
158 else if ( IsConferenceBubbleInSelectionMode() ) |
156 else if ( IsConferenceBubbleInSelectionMode() ) |
159 { |
157 { |
160 resourceId = EPhoneConfCallParticipantsDropMenubar; |
158 resourceId = EPhoneConfCallParticipantsDropMenubar; |
161 } |
159 } |
162 else |
160 else |
163 { |
161 { |
164 resourceId = EPhoneCallActiveHeldConfAndWaitingMenubar; |
162 resourceId = EPhoneCallActiveHeldConfAndWaitingMenubar; |
165 } |
163 } |
166 } |
164 } |
171 { |
169 { |
172 resourceId = EPhoneConfCallActiveHeldAndWaitingMenubarWithNumberEntry; |
170 resourceId = EPhoneConfCallActiveHeldAndWaitingMenubarWithNumberEntry; |
173 } |
171 } |
174 else if ( IsConferenceBubbleInSelectionMode() ) |
172 else if ( IsConferenceBubbleInSelectionMode() ) |
175 { |
173 { |
176 resourceId = EPhoneConfCallParticipantsDropMenubar; |
174 resourceId = EPhoneConfCallParticipantsDropMenubar; |
177 } |
175 } |
178 else |
176 else |
179 { |
177 { |
180 resourceId = EPhoneConfCallActiveHeldAndWaitingMenubar; |
178 resourceId = EPhoneConfCallActiveHeldAndWaitingMenubar; |
181 } |
179 } |
182 } |
180 } |
183 else |
181 else |
184 { |
182 { |
185 return; // negative call id, don't do anything |
183 return; // negative call id, don't do anything |
186 } |
184 } |
187 |
185 |
188 TPhoneCmdParamInteger integerParam; |
186 TPhoneCmdParamInteger integerParam; |
189 integerParam.SetInteger( |
187 integerParam.SetInteger( |
190 CPhoneMainResourceResolver::Instance()-> |
188 CPhoneMainResourceResolver::Instance()-> |
191 ResolveResourceID( resourceId ) ); |
189 ResolveResourceID( resourceId ) ); |
192 iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarOpen, |
190 iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarOpen, |
193 &integerParam ); |
191 &integerParam ); |
194 } |
192 } |
195 |
193 |
196 // ----------------------------------------------------------- |
194 // ----------------------------------------------------------- |
197 // CPhoneConferenceAndSingleAndWaiting::HandleIdleL |
195 // CPhoneConferenceAndSingleAndWaiting::HandleIdleL |
198 // ----------------------------------------------------------- |
196 // ----------------------------------------------------------- |
199 // |
197 // |
200 void CPhoneConferenceAndSingleAndWaiting::HandleIdleL( TInt aCallId ) |
198 void CPhoneConferenceAndSingleAndWaiting::HandleIdleL( TInt aCallId ) |
201 { |
199 { |
202 __LOGMETHODSTARTEND( EPhoneUIStates, |
200 __LOGMETHODSTARTEND( EPhoneUIStates, |
203 "CPhoneConferenceAndSingleAndWaiting::HandleIdleL()"); |
201 "CPhoneConferenceAndSingleAndWaiting::HandleIdleL()"); |
204 |
202 |
205 // Effect is shown when dialer exist. |
203 // Effect is shown when dialer exist. |
206 TBool effectStarted ( EFalse ); |
204 TBool effectStarted ( EFalse ); |
207 if ( !NeedToSendToBackgroundL() ) |
205 if ( !NeedToSendToBackgroundL() ) |
208 { |
206 { |
209 BeginTransEffectLC( ENumberEntryOpen ); |
207 BeginTransEffectLC( ENumberEntryOpen ); |
210 effectStarted = ETrue; |
208 effectStarted = ETrue; |
211 } |
209 } |
212 |
210 |
213 BeginUiUpdateLC(); |
211 BeginUiUpdateLC(); |
214 // Set touch controls |
212 // Set touch controls |
215 SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer ); |
213 SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer ); |
216 SetTouchPaneButtons( EPhoneWaitingCallButtons ); |
214 SetTouchPaneButtons( EPhoneWaitingCallButtons ); |
217 |
215 |
218 |
216 |
219 TPhoneCmdParamBoolean conferenceExistsForCallId; |
217 TPhoneCmdParamBoolean conferenceExistsForCallId; |
220 iViewCommandHandle->ExecuteCommandL( EPhoneViewGetCallExistsInConference, |
218 iViewCommandHandle->ExecuteCommandL( EPhoneViewGetCallExistsInConference, |
221 aCallId, &conferenceExistsForCallId ); |
219 aCallId, &conferenceExistsForCallId ); |
222 |
220 |
223 if( conferenceExistsForCallId.Boolean() ) |
221 if( conferenceExistsForCallId.Boolean() ) |
224 { |
222 { |
225 // Remove conference member from conference bubble |
223 // Remove conference member from conference bubble |
226 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveFromConference, |
224 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveFromConference, |
227 aCallId ); |
225 aCallId ); |
228 } |
226 } |
229 else |
227 else |
230 { |
228 { |
231 // Remove call |
229 // Remove call |
232 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId ); |
230 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId ); |
233 |
231 |
234 TPhoneCmdParamBoolean conferenceBubbleExists; |
232 TPhoneCmdParamBoolean conferenceBubbleExists; |
235 iViewCommandHandle->ExecuteCommandL( EPhoneViewGetIsConference, |
233 iViewCommandHandle->ExecuteCommandL( EPhoneViewGetIsConference, |
236 &conferenceBubbleExists ); |
234 &conferenceBubbleExists ); |
237 if( !conferenceBubbleExists.Boolean() ) |
235 if( !conferenceBubbleExists.Boolean() ) |
238 { |
236 { |
239 // Idle message came for conference member. |
237 // Idle message came for conference member. |
240 MakeTransitionAccordingToActiveCallsL(); |
238 MakeTransitionAccordingToActiveCallsL(); |
241 } |
239 } |
242 else |
240 else |
243 { |
241 { |
244 TPhoneCmdParamCallStateData callStateData; |
242 TPhoneCmdParamCallStateData callStateData; |
245 callStateData.SetCallState( EPEStateRinging ); |
243 callStateData.SetCallState( EPEStateRinging ); |
246 iViewCommandHandle->HandleCommandL( EPhoneViewGetCallIdByState, |
244 iViewCommandHandle->HandleCommandL( EPhoneViewGetCallIdByState, |
247 &callStateData ); |
245 &callStateData ); |
248 if( callStateData.CallId() >= 0 ) |
246 if( callStateData.CallId() >= 0 ) |
249 { |
247 { |
250 // We have Conference and Waiting calls left |
248 // We have Conference and Waiting calls left |
251 MakeStateTransitionToConferenceAndWaitingL( aCallId ); |
249 MakeStateTransitionToConferenceAndWaitingL( aCallId ); |
252 } |
250 } |
253 else |
251 else |
254 { |
252 { |
255 // We have Conference and Single calls left |
253 // We have Conference and Single calls left |
256 MakeStateTransitionToConferenceAndSingleL( aCallId ); |
254 MakeStateTransitionToConferenceAndSingleL( aCallId ); |
257 } |
255 } |
258 } |
256 } |
259 } |
257 } |
260 EndUiUpdate(); |
258 EndUiUpdate(); |
261 if ( effectStarted ) |
259 if ( effectStarted ) |
262 { |
260 { |
263 EndTransEffect(); |
261 EndTransEffect(); |
264 } |
262 } |
265 } |
263 } |
266 |
264 |
267 // ----------------------------------------------------------- |
265 // ----------------------------------------------------------- |
268 // CPhoneConferenceAndSingleAndWaiting::HandleAddedConferenceMemberL |
266 // CPhoneConferenceAndSingleAndWaiting::HandleAddedConferenceMemberL |
274 // Update conference bubble |
272 // Update conference bubble |
275 iViewCommandHandle->ExecuteCommandL( EPhoneViewAddToConference ); |
273 iViewCommandHandle->ExecuteCommandL( EPhoneViewAddToConference ); |
276 |
274 |
277 UpdateConferenceSecurityStatusL( aCallId ); |
275 UpdateConferenceSecurityStatusL( aCallId ); |
278 |
276 |
279 MakeStateTransitionToConferenceAndWaitingL( KConferenceCallId ); |
277 MakeStateTransitionToConferenceAndWaitingL( KConferenceCallId ); |
280 } |
278 } |
281 |
279 |
282 // ----------------------------------------------------------- |
280 // ----------------------------------------------------------- |
283 // CPhoneConferenceAndSingleAndWaiting::MakeStateTransitionToConferenceAndWaitingL |
281 // CPhoneConferenceAndSingleAndWaiting::MakeStateTransitionToConferenceAndWaitingL |
284 // ----------------------------------------------------------- |
282 // ----------------------------------------------------------- |
285 // |
283 // |
286 void CPhoneConferenceAndSingleAndWaiting::MakeStateTransitionToConferenceAndWaitingL( TInt /*aCallId*/ ) |
284 void CPhoneConferenceAndSingleAndWaiting::MakeStateTransitionToConferenceAndWaitingL( TInt /*aCallId*/ ) |
287 { |
285 { |
288 __LOGMETHODSTARTEND( EPhoneUIStates, |
286 __LOGMETHODSTARTEND( EPhoneUIStates, |
289 "CPhoneConferenceAndSingleAndWaiting::MakeStateTransitionToConferenceAndWaitingL()"); |
287 "CPhoneConferenceAndSingleAndWaiting::MakeStateTransitionToConferenceAndWaitingL()"); |
290 if ( !IsNumberEntryUsedL() ) |
288 if ( !IsNumberEntryUsedL() ) |
291 { |
289 { |
292 // Close menu bar, if number entry isnt open. |
290 // Close menu bar, if number entry isnt open. |
293 iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); |
291 iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); |
294 } |
292 } |
295 |
293 |
296 SetTouchPaneButtons( EPhoneWaitingCallButtons ); |
294 SetTouchPaneButtons( EPhoneWaitingCallButtons ); |
297 SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer ); |
295 SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer ); |
298 |
296 |
299 // Check if HW Keys or Call UI should be disabled |
297 // Check if HW Keys or Call UI should be disabled |
300 CheckDisableHWKeysAndCallUIL(); |
298 CheckDisableHWKeysAndCallUIL(); |
301 |
299 |
302 // Go to Conference And Waiting state |
300 // Go to Conference And Waiting state |
303 UpdateCbaL( EPhoneCallHandlingCallWaitingCBA ); |
301 UpdateCbaL( EPhoneCallHandlingCallWaitingCBA ); |
308 // CPhoneConferenceAndSingleAndWaiting::MakeStateTransitionToConferenceAndSingleL |
306 // CPhoneConferenceAndSingleAndWaiting::MakeStateTransitionToConferenceAndSingleL |
309 // ----------------------------------------------------------- |
307 // ----------------------------------------------------------- |
310 // |
308 // |
311 void CPhoneConferenceAndSingleAndWaiting::MakeStateTransitionToConferenceAndSingleL( TInt /*aCallId*/ ) |
309 void CPhoneConferenceAndSingleAndWaiting::MakeStateTransitionToConferenceAndSingleL( TInt /*aCallId*/ ) |
312 { |
310 { |
313 __LOGMETHODSTARTEND( EPhoneUIStates, |
311 __LOGMETHODSTARTEND( EPhoneUIStates, |
314 "CPhoneConferenceAndSingleAndWaiting::MakeStateTransitionToConferenceAndSingleL()"); |
312 "CPhoneConferenceAndSingleAndWaiting::MakeStateTransitionToConferenceAndSingleL()"); |
315 |
313 |
316 if( /*FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) |
314 if( /*FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) |
317 */ 1 && iStateMachine->PhoneStorage()->IsScreenLocked() ) |
315 */ 1 && iStateMachine->PhoneStorage()->IsScreenLocked() ) |
318 { |
316 { |
319 EnableCallUIL(); |
317 EnableCallUIL(); |
320 } |
318 } |
321 |
319 |
322 // Reset blocked keys list |
320 // Reset blocked keys list |
323 iStateMachine->PhoneStorage()->ResetBlockedKeysList(); |
321 iStateMachine->PhoneStorage()->ResetBlockedKeysList(); |
324 |
322 |
325 if ( !IsNumberEntryUsedL() ) |
323 if ( !IsNumberEntryUsedL() ) |
326 { |
324 { |
327 // Close menu bar, if number entry isnt open. |
325 // Close menu bar, if number entry isnt open. |
328 iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); |
326 iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); |
329 } |
327 } |
330 |
328 |
331 if ( IsNumberEntryUsedL() ) |
329 if ( IsNumberEntryUsedL() ) |
332 { |
330 { |
333 if ( NeedToSendToBackgroundL() ) |
331 if ( NeedToSendToBackgroundL() ) |
334 { |
332 { |
335 // Return phone to the background if send to background is needed. |
333 // Return phone to the background if send to background is needed. |
336 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); |
334 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); |
337 |
335 |
338 iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility ); |
336 iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility ); |
339 |
337 |
340 UpdateCbaL( EPhoneCallHandlingInCallCBA ); |
338 UpdateCbaL( EPhoneCallHandlingInCallCBA ); |
341 } |
339 } |
342 else |
340 else |
343 { |
341 { |
344 // Show the number entry if it exists |
342 // Show the number entry if it exists |
345 SetNumberEntryVisibilityL(ETrue); |
343 SetNumberEntryVisibilityL(ETrue); |
346 } |
344 } |
347 } |
345 } |
348 else |
346 else |
349 { |
347 { |
350 UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA ); |
348 UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA ); |
351 // If numberentry is not open just check NeedToSendToBackgroundL and |
349 // If numberentry is not open just check NeedToSendToBackgroundL and |
352 // sendbackround if needed. |
350 // sendbackround if needed. |
353 if ( NeedToSendToBackgroundL() ) |
351 if ( NeedToSendToBackgroundL() ) |
354 { |
352 { |
355 // Return phone to the background if send to background is needed. |
353 // Return phone to the background if send to background is needed. |
356 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); |
354 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); |
357 } |
355 } |
358 } |
356 } |
359 |
357 |
360 SetTouchPaneButtons( EPhoneConferenceAndSingleButtons ); |
358 SetTouchPaneButtons( EPhoneConferenceAndSingleButtons ); |
361 SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer ); |
359 SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer ); |
362 SetTouchPaneButtonDisabled( EPhoneInCallCmdPrivate ); |
360 SetTouchPaneButtonDisabled( EPhoneInCallCmdPrivate ); |
363 // Go to conference and single state |
361 // Go to conference and single state |
364 // CBA updates in above if-else conditions |
362 // CBA updates in above if-else conditions |
365 iStateMachine->ChangeState( EPhoneStateConferenceAndSingle ); |
363 iStateMachine->ChangeState( EPhoneStateConferenceAndSingle ); |
366 } |
364 } |
367 |
365 |
368 // ----------------------------------------------------------- |
366 // ----------------------------------------------------------- |
369 // CPhoneConferenceAndSingleAndWaiting::HandleConferenceIdleL |
367 // CPhoneConferenceAndSingleAndWaiting::HandleConferenceIdleL |
370 // ----------------------------------------------------------- |
368 // ----------------------------------------------------------- |
371 // |
369 // |
372 void CPhoneConferenceAndSingleAndWaiting::HandleConferenceIdleL() |
370 void CPhoneConferenceAndSingleAndWaiting::HandleConferenceIdleL() |
373 { |
371 { |
374 __LOGMETHODSTARTEND( EPhoneUIStates, |
372 __LOGMETHODSTARTEND( EPhoneUIStates, |
375 "CPhoneConferenceAndSingleAndWaiting::HandleConferenceIdleL()"); |
373 "CPhoneConferenceAndSingleAndWaiting::HandleConferenceIdleL()"); |
376 |
374 |
377 BeginUiUpdateLC(); |
375 BeginUiUpdateLC(); |
378 |
376 |
379 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveConferenceBubble ); |
377 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveConferenceBubble ); |
380 |
378 |
381 // Close menu bar, if it is displayed |
379 // Close menu bar, if it is displayed |
382 iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); |
380 iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); |
383 |
381 |
384 // Remove any phone dialogs if they are displayed |
382 // Remove any phone dialogs if they are displayed |
385 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs ); |
383 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs ); |
386 |
384 |
387 MakeTransitionAccordingToActiveCallsL(); |
385 MakeTransitionAccordingToActiveCallsL(); |
388 |
386 |
389 EndUiUpdate(); |
387 EndUiUpdate(); |
390 } |
388 } |
391 |
389 |
392 // -------------------------------------------------------------- |
390 // -------------------------------------------------------------- |
393 // CPhoneConferenceAndSingleAndWaiting::HandleKeyMessageL |
391 // CPhoneConferenceAndSingleAndWaiting::HandleKeyMessageL |
394 // -------------------------------------------------------------- |
392 // -------------------------------------------------------------- |
395 // |
393 // |
396 void CPhoneConferenceAndSingleAndWaiting::HandleKeyMessageL( |
394 void CPhoneConferenceAndSingleAndWaiting::HandleKeyMessageL( |
397 TPhoneKeyEventMessages aMessage, |
395 TPhoneKeyEventMessages aMessage, |
398 TKeyCode aCode ) |
396 TKeyCode aCode ) |
399 { |
397 { |
400 __LOGMETHODSTARTEND( EPhoneUIStates, |
398 __LOGMETHODSTARTEND( EPhoneUIStates, |
401 "CPhoneConferenceAndSingleAndWaiting::HandleKeyMessageL()"); |
399 "CPhoneConferenceAndSingleAndWaiting::HandleKeyMessageL()"); |
402 switch ( aCode ) |
400 switch ( aCode ) |
403 { |
401 { |
404 // send-key |
402 // send-key |
405 case EKeyYes: |
403 case EKeyYes: |
406 if( IsNumberEntryVisibleL() ) |
404 if( IsNumberEntryVisibleL() ) |
407 { |
405 { |
408 CallFromNumberEntryL(); |
406 CallFromNumberEntryL(); |
409 } |
407 } |
410 else |
408 else |
411 { |
409 { |
412 // Not allowed to answer |
410 // Not allowed to answer |
413 SendGlobalWarningNoteL( |
411 SendGlobalWarningNoteL( |
414 EPhoneNoteTextCallNotAllowed ); |
412 EPhoneNoteTextCallNotAllowed ); |
415 } |
413 } |
416 break; |
414 break; |
417 |
415 |
418 default: |
416 default: |
419 // do base operation |
417 // do base operation |
420 CPhoneConferenceAndSingle::HandleKeyMessageL( aMessage, aCode ); |
418 CPhoneConferenceAndSingle::HandleKeyMessageL( aMessage, aCode ); |
421 break; |
419 break; |
422 } |
420 } |
456 void CPhoneConferenceAndSingleAndWaiting::MakeTransitionAccordingToActiveCallsL() |
454 void CPhoneConferenceAndSingleAndWaiting::MakeTransitionAccordingToActiveCallsL() |
457 { |
455 { |
458 TPhoneCmdParamInteger activeCallCount; |
456 TPhoneCmdParamInteger activeCallCount; |
459 iViewCommandHandle->ExecuteCommandL( |
457 iViewCommandHandle->ExecuteCommandL( |
460 EPhoneViewGetCountOfActiveCalls, &activeCallCount ); |
458 EPhoneViewGetCountOfActiveCalls, &activeCallCount ); |
461 |
459 |
462 switch( activeCallCount.Integer() ) |
460 switch( activeCallCount.Integer() ) |
463 { |
461 { |
464 case ENoActiveCalls: // Go to incoming state |
462 case ENoActiveCalls: // Go to incoming state |
465 { |
463 { |
466 // Get Waiting call's Call Id |
464 // Get Waiting call's Call Id |
467 TPhoneCmdParamCallStateData callStateData; |
465 TPhoneCmdParamCallStateData callStateData; |
468 callStateData.SetCallState( EPEStateRinging ); |
466 callStateData.SetCallState( EPEStateRinging ); |
469 iViewCommandHandle->HandleCommandL( EPhoneViewGetCallIdByState, |
467 iViewCommandHandle->HandleCommandL( EPhoneViewGetCallIdByState, |
470 &callStateData ); |
468 &callStateData ); |
471 |
469 |
472 if ( callStateData.CallId() != KErrNotFound ) |
470 if ( callStateData.CallId() != KErrNotFound ) |
473 { |
471 { |
474 // Display ringing bubble |
472 // Display ringing bubble |
475 TPhoneCmdParamCallHeaderData callHeaderParam; |
473 TPhoneCmdParamCallHeaderData callHeaderParam; |
476 callHeaderParam.SetCallState( EPEStateRinging ); |
474 callHeaderParam.SetCallState( EPEStateRinging ); |
477 |
475 |
478 SetCallHeaderTextsForCallComingInL( callStateData.CallId(), EFalse, &callHeaderParam ); |
476 SetCallHeaderTextsForCallComingInL( callStateData.CallId(), EFalse, &callHeaderParam ); |
479 |
477 |
480 iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, |
478 iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, |
481 callStateData.CallId(), |
479 callStateData.CallId(), |
482 &callHeaderParam ); |
480 &callHeaderParam ); |
483 |
481 |
484 // Capture keys when there is an incoming call |
482 // Capture keys when there is an incoming call |
485 CaptureKeysDuringCallNotificationL( ETrue ); |
483 CaptureKeysDuringCallNotificationL( ETrue ); |
486 |
484 |
487 // Go to Incoming state |
485 // Go to Incoming state |
488 iCbaManager->UpdateIncomingCbaL( callStateData.CallId() ); |
486 iCbaManager->UpdateIncomingCbaL( callStateData.CallId() ); |
489 |
487 |
490 // Check if HW Keys or Call UI should be disabled |
488 // Check if HW Keys or Call UI should be disabled |
491 CheckDisableHWKeysAndCallUIL(); |
489 CheckDisableHWKeysAndCallUIL(); |
492 |
490 |
493 SetTouchPaneButtons( EPhoneIncomingCallButtons ); |
491 SetTouchPaneButtons( EPhoneIncomingCallButtons ); |
494 UpdateSilenceButtonDimming(); |
492 UpdateSilenceButtonDimming(); |
495 SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer ); |
493 SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer ); |
496 SetRingingTonePlaybackL( callStateData.CallId() ); |
494 SetRingingTonePlaybackL( callStateData.CallId() ); |
497 SetToolbarDimming( ETrue ); |
495 SetToolbarDimming( ETrue ); |
498 iStateMachine->ChangeState( EPhoneStateIncoming ); |
496 SetBackButtonActive(EFalse); |
|
497 iStateMachine->ChangeState( EPhoneStateIncoming ); |
499 } |
498 } |
500 else |
499 else |
501 { |
500 { |
502 SetDefaultFlagsL(); |
501 SetDefaultFlagsL(); |
503 UpdateCbaL( EPhoneEmptyCBA ); |
502 UpdateCbaL( EPhoneEmptyCBA ); |
504 iStateMachine->ChangeState( EPhoneStateIdle ); |
503 iStateMachine->ChangeState( EPhoneStateIdle ); |
505 } |
504 } |
506 } |
505 } |
507 break; |
506 break; |
508 case EOneActiveCall: |
507 case EOneActiveCall: |
509 { |
508 { |
510 // Go to Single And Waiting state |
509 // Go to Single And Waiting state |
511 UpdateCbaL( EPhoneCallHandlingCallWaitingCBA ); |
510 UpdateCbaL( EPhoneCallHandlingCallWaitingCBA ); |
512 SetTouchPaneButtons( EPhoneWaitingCallButtons ); |
511 SetTouchPaneButtons( EPhoneWaitingCallButtons ); |
513 SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer ); |
512 SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer ); |
514 |
513 |
515 // Check if HW Keys or Call UI should be disabled |
514 // Check if HW Keys or Call UI should be disabled |
516 CheckDisableHWKeysAndCallUIL(); |
515 CheckDisableHWKeysAndCallUIL(); |
517 |
516 |
518 iStateMachine->ChangeState( EPhoneStateWaitingInSingle ); |
517 iStateMachine->ChangeState( EPhoneStateWaitingInSingle ); |
519 } |
518 } |
520 break; |
519 break; |
521 case ETwoActiveCalls: |
520 case ETwoActiveCalls: |
522 { |
521 { |
523 // Go to Two Singles And Waiting state |
522 // Go to Two Singles And Waiting state |
524 UpdateCbaL( EPhoneCallHandlingCallWaitingCBA ); |
523 UpdateCbaL( EPhoneCallHandlingCallWaitingCBA ); |
525 |
524 |
526 // Check if HW Keys or Call UI should be disabled |
525 // Check if HW Keys or Call UI should be disabled |
527 CheckDisableHWKeysAndCallUIL(); |
526 CheckDisableHWKeysAndCallUIL(); |
528 |
527 |
529 SetTouchPaneButtons( EPhoneWaitingCallButtons ); |
528 SetTouchPaneButtons( EPhoneWaitingCallButtons ); |
530 iStateMachine->ChangeState( EPhoneStateTwoSinglesAndWaiting ); |
529 iStateMachine->ChangeState( EPhoneStateTwoSinglesAndWaiting ); |
531 } |
530 } |
532 break; |
531 break; |
533 default: |
532 default: |
534 // Too many active calls to handle reliable state change now. |
533 // Too many active calls to handle reliable state change now. |
535 // Waiting for all conference member idles |
534 // Waiting for all conference member idles |
536 // This case may happen when 'End all calls' because conferenceIdle may |
535 // This case may happen when 'End all calls' because conferenceIdle may |
537 // come earlier than idle for conference member |
536 // come earlier than idle for conference member |
538 break; |
537 break; |
539 } |
538 } |
540 |
539 |
541 } |
540 } |
542 |
541 |
543 // End of File |
542 // End of File |