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