34 #include "phoneui.hrh" |
34 #include "phoneui.hrh" |
35 #include "cphonemainresourceresolver.h" |
35 #include "cphonemainresourceresolver.h" |
36 #include "phonerssbase.h" |
36 #include "phonerssbase.h" |
37 #include "phonestatedefinitionsgsm.h" |
37 #include "phonestatedefinitionsgsm.h" |
38 #include "phonelogger.h" |
38 #include "phonelogger.h" |
|
39 #include "mphonestorage.h" |
39 |
40 |
40 // ================= MEMBER FUNCTIONS ======================= |
41 // ================= MEMBER FUNCTIONS ======================= |
41 |
42 |
42 // C++ default constructor can NOT contain any code, that |
43 // C++ default constructor can NOT contain any code, that |
43 // might leave. |
44 // might leave. |
111 "CPhoneTwoSinglesAndWaiting::HandleKeyMessageL()"); |
112 "CPhoneTwoSinglesAndWaiting::HandleKeyMessageL()"); |
112 switch ( aCode ) |
113 switch ( aCode ) |
113 { |
114 { |
114 // send-key |
115 // send-key |
115 case EKeyYes: |
116 case EKeyYes: |
116 { |
117 { |
117 if( IsNumberEntryVisibleL() ) |
118 if( IsNumberEntryVisibleL() ) |
118 { |
119 { |
119 CallFromNumberEntryL(); |
120 CallFromNumberEntryL(); |
120 } |
121 } |
121 else |
122 else |
122 { |
123 { |
123 // Waiting call bubble is over number entry |
124 // Waiting call bubble is over number entry |
124 // so display not allowed note because we |
125 // so display not allowed note because we |
125 // can't answer the call |
126 // can't answer the call |
126 SendGlobalWarningNoteL( EPhoneNoteTextCallNotAllowed ); |
127 SendGlobalWarningNoteL( EPhoneNoteTextCallNotAllowed, ETrue ); |
127 } |
128 } |
128 break; |
129 break; |
129 } |
130 } |
130 |
131 |
131 default: |
132 default: |
132 CPhoneTwoSingles::HandleKeyMessageL( aMessage, aCode ); |
133 CPhoneTwoSingles::HandleKeyMessageL( aMessage, aCode ); |
133 break; |
134 break; |
|
135 } |
|
136 } |
|
137 |
|
138 // ----------------------------------------------------------- |
|
139 // CPhoneTwoSinglesAndWaiting::HandleKeyEventL |
|
140 // ----------------------------------------------------------- |
|
141 // |
|
142 void CPhoneTwoSinglesAndWaiting::HandleKeyEventL( |
|
143 const TKeyEvent& aKeyEvent, |
|
144 TEventCode /*aEventCode*/ ) |
|
145 { |
|
146 if( EKeyDeviceF == aKeyEvent.iCode ) |
|
147 { |
|
148 __PHONELOG( EBasic, EPhoneUIStates, |
|
149 "CPhoneTwoSinglesAndWaiting::HandleKeyMessageL-deviceF" ); |
|
150 HandleHoldSwitchL(); |
134 } |
151 } |
135 } |
152 } |
136 |
153 |
137 // ----------------------------------------------------------- |
154 // ----------------------------------------------------------- |
138 // CPhoneTwoSinglesAndWaiting::HandlePhoneEngineMessageL |
155 // CPhoneTwoSinglesAndWaiting::HandlePhoneEngineMessageL |
177 CPhoneState::HandleErrorL( aErrorInfo ); |
197 CPhoneState::HandleErrorL( aErrorInfo ); |
178 } |
198 } |
179 } |
199 } |
180 |
200 |
181 // ----------------------------------------------------------- |
201 // ----------------------------------------------------------- |
182 // CPhoneTwoSinglesAndWaiting::OpenMenuBarL |
|
183 // ----------------------------------------------------------- |
|
184 // |
|
185 void CPhoneTwoSinglesAndWaiting::OpenMenuBarL() |
|
186 { |
|
187 __LOGMETHODSTARTEND( EPhoneUIStates, |
|
188 "CPhoneTwoSinglesAndWaiting::OpenMenuBarL()"); |
|
189 |
|
190 TInt resourceId ( EPhoneCallTwoSinglesWaitingLockMenubar ); |
|
191 |
|
192 if ( !IsAutoLockOn() ) |
|
193 { |
|
194 if ( IsNumberEntryVisibleL() ) |
|
195 { |
|
196 resourceId = EPhoneCallActiveHeldAndWaitingMenubarWithNumberEntry; |
|
197 } |
|
198 else |
|
199 { |
|
200 resourceId = EPhoneCallActiveHeldAndWaitingMenubar; |
|
201 } |
|
202 } |
|
203 |
|
204 TPhoneCmdParamInteger integerParam; |
|
205 integerParam.SetInteger( |
|
206 CPhoneMainResourceResolver::Instance()-> |
|
207 ResolveResourceID( resourceId ) ); |
|
208 iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarOpen, |
|
209 &integerParam ); |
|
210 } |
|
211 |
|
212 // ----------------------------------------------------------- |
|
213 // CPhoneTwoSinglesAndWaiting::HandleIdleL |
202 // CPhoneTwoSinglesAndWaiting::HandleIdleL |
214 // ----------------------------------------------------------- |
203 // ----------------------------------------------------------- |
215 // |
204 // |
216 void CPhoneTwoSinglesAndWaiting::HandleIdleL( TInt aCallId ) |
205 void CPhoneTwoSinglesAndWaiting::HandleIdleL( TInt aCallId ) |
217 { |
206 { |
218 __LOGMETHODSTARTEND( EPhoneUIStates, |
207 __LOGMETHODSTARTEND( EPhoneUIStates, |
219 "CPhoneTwoSinglesAndWaiting::HandleIdleL()"); |
208 "CPhoneTwoSinglesAndWaiting::HandleIdleL()"); |
220 BeginUiUpdateLC(); |
209 |
221 if ( !IsNumberEntryUsedL() ) |
210 BeginUiUpdateLC(); |
222 { |
211 |
223 iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); |
212 // Remove call |
224 } |
|
225 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId ); |
213 iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId ); |
226 |
214 |
227 if ( iRingingCallId == aCallId ) |
215 if ( iRingingCallId == aCallId ) |
228 { |
216 { |
229 StateTransitionToTwoSinglesL(); |
217 StateTransitionToTwoSinglesL(); |
230 } |
218 } |
231 else |
219 else |
232 { |
220 { |
233 StateTransitionToSingleAndWaitingL(); |
221 StateTransitionToSingleAndWaitingL(); |
234 } |
222 } |
|
223 |
235 EndUiUpdate(); |
224 EndUiUpdate(); |
236 } |
225 } |
237 |
226 |
238 // ----------------------------------------------------------- |
227 // ----------------------------------------------------------- |
239 // CPhoneTwoSinglesAndWaiting::StateTransitionToTwoSinglesL |
228 // CPhoneTwoSinglesAndWaiting::StateTransitionToTwoSinglesL |
244 __LOGMETHODSTARTEND( EPhoneUIStates, |
233 __LOGMETHODSTARTEND( EPhoneUIStates, |
245 "CPhoneTwoSinglesAndWaiting::StateTransitionToTwoSinglesL()"); |
234 "CPhoneTwoSinglesAndWaiting::StateTransitionToTwoSinglesL()"); |
246 if ( IsNumberEntryUsedL() ) |
235 if ( IsNumberEntryUsedL() ) |
247 { |
236 { |
248 // Go to background if necessary |
237 // Go to background if necessary |
249 if ( NeedToReturnToForegroundAppL() ) |
238 if ( NeedToSendToBackgroundL() ) |
250 { |
239 { |
251 // Return phone to the background if menu application is needed to foreground. |
240 // Return phone to the background if send to background is needed. |
252 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); |
241 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); |
253 |
242 |
254 iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility ); |
|
255 |
|
256 UpdateCbaL( EPhoneCallHandlingInCallCBA ); |
243 UpdateCbaL( EPhoneCallHandlingInCallCBA ); |
257 } |
244 } |
258 else |
245 else |
259 { |
246 { |
260 // Show the number entry if it exists. |
247 // Show the number entry if it exists. |
263 } |
250 } |
264 else |
251 else |
265 { |
252 { |
266 // Set Two singles softkeys |
253 // Set Two singles softkeys |
267 UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA ); |
254 UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA ); |
268 |
255 |
269 // If numberentry is not open just check NeedToReturnToForegroundAppL and |
256 // If numberentry is not open just check NeedToSendToBackgroundL and |
270 // sendbackround if needed. |
257 // sendbackround if needed. |
271 if ( NeedToReturnToForegroundAppL() ) |
258 if ( NeedToSendToBackgroundL() ) |
272 { |
259 { |
273 // Return phone to the background if send to background is needed. |
260 // Return phone to the background if send to background is needed. |
274 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); |
261 iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); |
275 } |
262 } |
276 } |
263 } |
277 |
264 |
|
265 if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) |
|
266 && iStateMachine->PhoneStorage()->IsScreenLocked() ) |
|
267 { |
|
268 EnableCallUIL(); |
|
269 } |
|
270 |
|
271 // Reset blocked keys list |
|
272 iStateMachine->PhoneStorage()->ResetBlockedKeysList(); |
|
273 |
278 // Go to two singles state |
274 // Go to two singles state |
279 SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer ); |
|
280 SetTouchPaneButtons( EPhoneTwoSinglesButtons ); |
275 SetTouchPaneButtons( EPhoneTwoSinglesButtons ); |
281 // CBA updates in above if-else conditions |
276 // CBA updates in above if-else conditions |
282 iStateMachine->ChangeState( EPhoneStateTwoSingles ); |
277 iStateMachine->ChangeState( EPhoneStateTwoSingles ); |
283 } |
278 } |
284 |
279 |
285 // ----------------------------------------------------------- |
280 // ----------------------------------------------------------- |
286 // CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL |
281 // CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL |
287 // ----------------------------------------------------------- |
282 // ----------------------------------------------------------- |
289 void CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL() |
284 void CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL() |
290 { |
285 { |
291 __LOGMETHODSTARTEND( EPhoneUIStates, |
286 __LOGMETHODSTARTEND( EPhoneUIStates, |
292 "CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL()"); |
287 "CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL()"); |
293 // Go to two singles state |
288 // Go to two singles state |
294 UpdateCbaL( EPhoneCallHandlingCallWaitingCBA ); |
289 TPhoneCmdParamInteger callIdParam; |
295 |
290 iViewCommandHandle->ExecuteCommandL( |
296 // Set touch controls |
291 EPhoneViewGetExpandedBubbleCallId, &callIdParam ); |
297 SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer ); |
292 |
|
293 if ( callIdParam.Integer()!=iRingingCallId ) |
|
294 { |
|
295 CPhoneGsmInCall::UpdateInCallCbaL(); |
|
296 } |
|
297 else |
|
298 { |
|
299 iCbaManager->SetCbaL( EPhoneCallHandlingCallWaitingCBA ); |
|
300 } |
|
301 |
|
302 // Check if HW Keys or Call UI should be disabled |
|
303 CheckDisableHWKeysAndCallUIL(); |
298 |
304 |
299 SetTouchPaneButtons( EPhoneWaitingCallButtons ); |
305 SetTouchPaneButtons( EPhoneWaitingCallButtons ); |
300 |
306 |
301 iStateMachine->ChangeState( EPhoneStateWaitingInSingle ); |
307 iStateMachine->ChangeState( EPhoneStateWaitingInSingle ); |
302 } |
308 } |
320 |
326 |
321 StringLoader::Load( |
327 StringLoader::Load( |
322 conferenceText, |
328 conferenceText, |
323 callLabelId, |
329 callLabelId, |
324 CCoeEnv::Static() ); |
330 CCoeEnv::Static() ); |
325 callHeaderParam.SetCLIText( conferenceText, CBubbleManager::ERight ); |
331 callHeaderParam.SetCLIText( conferenceText, TPhoneCmdParamCallHeaderData::ERight ); |
|
332 |
|
333 callHeaderParam.SetCallState(EPEStateConnectedConference); |
326 |
334 |
327 callHeaderParam.SetCiphering( |
335 callHeaderParam.SetCiphering( |
328 iStateMachine->PhoneEngineInfo()->IsSecureCall( aCallId ) ); |
336 iStateMachine->PhoneEngineInfo()->IsSecureCall( aCallId ) ); |
329 |
337 |
330 callHeaderParam.SetCipheringIndicatorAllowed( |
338 callHeaderParam.SetCipheringIndicatorAllowed( |
332 |
340 |
333 // Service identifier must be given so that service specific settings |
341 // Service identifier must be given so that service specific settings |
334 // can be taken into account at phoneuiview. |
342 // can be taken into account at phoneuiview. |
335 callHeaderParam.SetServiceId( |
343 callHeaderParam.SetServiceId( |
336 iStateMachine->PhoneEngineInfo()->ServiceId( aCallId ) ); |
344 iStateMachine->PhoneEngineInfo()->ServiceId( aCallId ) ); |
337 |
345 |
338 // Set touch controls |
346 // Check if HW Keys or Call UI should be disabled |
339 SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer ); |
347 CheckDisableHWKeysAndCallUIL(); |
340 |
348 |
341 SetTouchPaneButtons( EPhoneWaitingCallButtons ); |
|
342 |
349 |
343 iViewCommandHandle->ExecuteCommandL( EPhoneViewCreateConference, aCallId, |
350 iViewCommandHandle->ExecuteCommandL( EPhoneViewCreateConference, aCallId, |
344 &callHeaderParam ); |
351 &callHeaderParam ); |
345 |
352 |
346 SetNeedToReturnToForegroundAppStatusL( EFalse ); |
353 // Clear the flag |
347 |
354 TPhoneCmdParamBoolean booleanParam; |
|
355 booleanParam.SetBoolean( EFalse ); |
|
356 iViewCommandHandle->ExecuteCommandL( |
|
357 EPhoneViewSetNeedToSendToBackgroundStatus, &booleanParam ); |
|
358 |
|
359 // Set touch controls |
|
360 SetTouchPaneButtons( EPhoneWaitingCallButtons ); |
|
361 |
|
362 UpdateCbaL( EPhoneCallHandlingCallWaitingCBA ); |
|
363 |
348 EndUiUpdate(); |
364 EndUiUpdate(); |
349 // Go to Conference And Waiting state |
365 // Go to Conference And Waiting state |
350 // No need for CBA update |
366 // No need for CBA update |
351 iStateMachine->ChangeState( EPhoneStateConferenceAndWaiting ); |
367 iStateMachine->ChangeState( EPhoneStateConferenceAndWaiting ); |
352 } |
368 } |
357 // |
373 // |
358 void CPhoneTwoSinglesAndWaiting::UpdateInCallCbaL() |
374 void CPhoneTwoSinglesAndWaiting::UpdateInCallCbaL() |
359 { |
375 { |
360 __LOGMETHODSTARTEND( EPhoneUIStates, |
376 __LOGMETHODSTARTEND( EPhoneUIStates, |
361 "CPhoneTwoSinglesAndWaiting::UpdateInCallCbaL()"); |
377 "CPhoneTwoSinglesAndWaiting::UpdateInCallCbaL()"); |
362 UpdateCbaL ( EPhoneCallHandlingCallWaitingCBA ); |
378 |
|
379 TPhoneCmdParamInteger callIdParam; |
|
380 iViewCommandHandle->ExecuteCommandL( |
|
381 EPhoneViewGetExpandedBubbleCallId, &callIdParam ); |
|
382 |
|
383 if ( callIdParam.Integer()!=iRingingCallId ) |
|
384 { |
|
385 CPhoneGsmInCall::UpdateInCallCbaL(); |
|
386 } |
|
387 else |
|
388 { |
|
389 iCbaManager->SetCbaL( EPhoneCallHandlingIncomingRejectCBA ); |
|
390 } |
363 } |
391 } |
364 |
392 |
365 // ----------------------------------------------------------- |
393 // ----------------------------------------------------------- |
366 // CPhoneTwoSinglesAndWaiting::HandleNumberEntryClearedL() |
394 // CPhoneTwoSinglesAndWaiting::HandleNumberEntryClearedL() |
367 // ----------------------------------------------------------- |
395 // ----------------------------------------------------------- |
370 { |
398 { |
371 __LOGMETHODSTARTEND( EPhoneUIStates, |
399 __LOGMETHODSTARTEND( EPhoneUIStates, |
372 "CPhoneTwoSinglesAndWaiting::HandleNumberEntryClearedL()"); |
400 "CPhoneTwoSinglesAndWaiting::HandleNumberEntryClearedL()"); |
373 UpdateCbaL( EPhoneCallHandlingCallWaitingCBA ); |
401 UpdateCbaL( EPhoneCallHandlingCallWaitingCBA ); |
374 } |
402 } |
375 |
403 |
|
404 // ----------------------------------------------------------- |
|
405 // CPhoneTwoSinglesAndWaiting::HandleCommandL |
|
406 // ----------------------------------------------------------- |
|
407 // |
|
408 TBool CPhoneTwoSinglesAndWaiting::HandleCommandL( TInt aCommand ) |
|
409 { |
|
410 __LOGMETHODSTARTEND( EPhoneUIStates, |
|
411 "CPhoneTwoSinglesAndWaiting::HandleCommandL() "); |
|
412 TBool commandStatus = ETrue; |
|
413 |
|
414 switch( aCommand ) |
|
415 { |
|
416 case EPhoneCmdUpdateUiControls: |
|
417 UpdateUiControlsL(); |
|
418 break; |
|
419 |
|
420 default: |
|
421 commandStatus = CPhoneGsmInCall::HandleCommandL( aCommand ); |
|
422 break; |
|
423 } |
|
424 |
|
425 return commandStatus; |
|
426 } |
|
427 |
|
428 // ----------------------------------------------------------- |
|
429 // CPhoneTwoSinglesAndWaiting::UpdateUiControlsL |
|
430 // ----------------------------------------------------------- |
|
431 // |
|
432 void CPhoneTwoSinglesAndWaiting::UpdateUiControlsL() |
|
433 { |
|
434 __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::UpdateUiControlsL( ) "); |
|
435 UpdateInCallCbaL(); |
|
436 } |
|
437 |
376 // End of File |
438 // End of File |