50 CPhoneState* aState, |
50 CPhoneState* aState, |
51 MPhoneViewCommandHandle& aViewCommandHandle, |
51 MPhoneViewCommandHandle& aViewCommandHandle, |
52 MPhoneStateMachine& aStateMachine ) |
52 MPhoneStateMachine& aStateMachine ) |
53 : iState ( aState ), |
53 : iState ( aState ), |
54 iViewCommandHandle ( aViewCommandHandle ), |
54 iViewCommandHandle ( aViewCommandHandle ), |
55 iStateMachine ( aStateMachine ) |
55 iStateMachine ( aStateMachine ), |
|
56 iSoftRejectStatus ( ETrue ) |
56 { |
57 { |
57 __LOGMETHODSTARTEND( EPhoneControl, "CPhoneCbaManager::CPhoneCbaManager() "); |
58 __LOGMETHODSTARTEND( EPhoneControl, "CPhoneCbaManager::CPhoneCbaManager() "); |
58 } |
59 } |
59 |
60 |
60 // --------------------------------------------------------------------------- |
61 // --------------------------------------------------------------------------- |
116 |
117 |
117 TPhoneCmdParamBoolean btParam; |
118 TPhoneCmdParamBoolean btParam; |
118 btParam.SetBoolean( audioOutput == EPEBTAudioAccessory ); |
119 btParam.SetBoolean( audioOutput == EPEBTAudioAccessory ); |
119 iViewCommandHandle.ExecuteCommand(EPhoneViewSetBlueToothFlag,&btParam); |
120 iViewCommandHandle.ExecuteCommand(EPhoneViewSetBlueToothFlag,&btParam); |
120 |
121 |
|
122 SetSoftRejectDimmedFlag(); |
|
123 |
121 TPhoneCmdParamBoolean btAvailableParam; |
124 TPhoneCmdParamBoolean btAvailableParam; |
122 btAvailableParam.SetBoolean( btAvailable ); |
125 btAvailableParam.SetBoolean( btAvailable ); |
123 iViewCommandHandle.ExecuteCommand( |
126 iViewCommandHandle.ExecuteCommand( |
124 EPhoneViewSetBluetoothAvailableFlag,&btAvailableParam); |
127 EPhoneViewSetBluetoothAvailableFlag,&btAvailableParam); |
125 |
|
126 // Call setup cases |
|
127 if ( EPhoneCallHandlingCallSetupCBA == aResource ) |
|
128 { |
|
129 if ( !FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling) ) |
|
130 { |
|
131 if ( audioOutput == EPELoudspeaker ) |
|
132 { |
|
133 resourceId = EPhoneCallHandlingCallSetupToHandsetCBA; |
|
134 } |
|
135 else if ( audioOutput == EPEHandset ) |
|
136 { |
|
137 resourceId = EPhoneCallHandlingCallSetupToIhfCBA; |
|
138 } |
|
139 } |
|
140 } |
|
141 |
|
142 // Is numberentry visible |
|
143 else if ( iState->IsNumberEntryUsedL() ) |
|
144 { |
|
145 if ( iState->IsAutoLockOn() || !(iState->IsSimOk()) ) |
|
146 { |
|
147 resourceId = EPhoneEmptyBackCBA; |
|
148 } |
|
149 else |
|
150 { |
|
151 TPhoneCmdParamInteger activeCallCount; |
|
152 iViewCommandHandle.ExecuteCommandL( |
|
153 EPhoneViewGetCountOfActiveCalls, &activeCallCount ); |
|
154 |
|
155 TPhoneCmdParamCallStateData callStateData; |
|
156 callStateData.SetCallState( EPEStateRinging ); |
|
157 iViewCommandHandle.HandleCommandL( |
|
158 EPhoneViewGetCallIdByState, &callStateData ); |
|
159 |
|
160 TInt incomingCall = callStateData.CallId(); |
|
161 |
|
162 if( activeCallCount.Integer() == ENoActiveCalls ) |
|
163 { |
|
164 resourceId = EPhoneNumberAcqCBA; |
|
165 } |
|
166 else if ( activeCallCount.Integer() > ENoActiveCalls && |
|
167 incomingCall > KErrNotFound ) |
|
168 { |
|
169 resourceId = EPhoneCallHandlingCallWaitingCBA; |
|
170 } |
|
171 else |
|
172 { |
|
173 resourceId = EPhoneInCallNumberAcqCBA; |
|
174 } |
|
175 } |
|
176 } |
|
177 |
128 |
178 // Check is Audio muted |
129 // Check is Audio muted |
179 else if ( iStateMachine.PhoneEngineInfo()->AudioMute() ) |
130 if ( iStateMachine.PhoneEngineInfo()->AudioMute() ) |
180 { |
131 { |
181 resourceId = EPhoneCallHandlingInCallUnmuteCBA; |
132 resourceId = EPhoneCallHandlingInCallUnmuteCBA; |
182 } |
133 } |
183 |
|
184 // Multicall swap |
134 // Multicall swap |
185 else if ( EPhoneCallHandlingNewCallSwapCBA == aResource ) |
135 else if ( EPhoneCallHandlingNewCallSwapCBA == aResource ) |
186 { |
136 { |
187 resourceId = EPhoneCallHandlingNewCallSwapCBA; |
137 resourceId = EPhoneCallHandlingNewCallSwapCBA; |
188 } |
138 } |
189 |
|
190 // Call waiting cases |
139 // Call waiting cases |
191 else if ( EPhoneCallHandlingCallWaitingCBA == aResource ) |
140 else if ( EPhoneCallHandlingCallWaitingCBA == aResource ) |
192 { |
141 { |
193 resourceId = EPhoneCallHandlingCallWaitingCBA; |
142 resourceId = EPhoneCallHandlingCallWaitingCBA; |
194 if ( iState->IsSwivelClosed() ) |
143 if ( iState->IsSwivelClosed() ) |
204 { |
153 { |
205 resourceId = EPhoneCallHandlingWaitingReplaceSwivelClosedCBA; |
154 resourceId = EPhoneCallHandlingWaitingReplaceSwivelClosedCBA; |
206 } |
155 } |
207 } |
156 } |
208 } |
157 } |
209 |
|
210 // Check is call in hold |
158 // Check is call in hold |
211 else if ( hold.Boolean() ) |
159 else if ( hold.Boolean() ) |
212 { |
160 { |
213 resourceId = EPhoneCallHandlingInCallUnholdCBA; |
161 resourceId = EPhoneCallHandlingInCallUnholdCBA; |
214 } |
162 } |
215 |
|
216 // Is BT accessory connected |
163 // Is BT accessory connected |
217 else if ( audioOutput == EPEBTAudioAccessory && |
164 else if ( audioOutput == EPEBTAudioAccessory && |
218 IsVoiceCallAlertingOrActiveL() && |
165 IsVoiceCallAlertingOrActiveL() && |
219 !coverHideSendEndKey ) |
166 !coverHideSendEndKey ) |
220 { |
167 { |
221 resourceId = EPhoneCallHandlingInCallHandsetCBA; |
168 resourceId = EPhoneCallHandlingInCallHandsetCBA; |
222 } |
169 } |
223 |
|
224 else if ( audioOutput == EPEWiredAudioAccessory || |
170 else if ( audioOutput == EPEWiredAudioAccessory || |
225 coverHideSendEndKey || iState->IsSwivelClosed() ) |
171 coverHideSendEndKey || iState->IsSwivelClosed() ) |
226 { |
172 { |
227 resourceId = EPhoneCallHandlingInCallNoIhfCBA; |
173 resourceId = EPhoneCallHandlingInCallNoIhfCBA; |
228 } |
174 } |
229 |
|
230 // Check BT availability |
175 // Check BT availability |
231 else if ( audioOutput == EPELoudspeaker ) |
176 else if ( audioOutput == EPELoudspeaker ) |
232 { |
177 { |
233 if ( btAvailable ) |
178 if ( btAvailable ) |
234 { |
179 { |
241 } |
186 } |
242 else if ( audioOutput == EPEHandset && btAvailable ) |
187 else if ( audioOutput == EPEHandset && btAvailable ) |
243 { |
188 { |
244 resourceId = EPhoneCallHandlingInCallBtaaCBA; |
189 resourceId = EPhoneCallHandlingInCallBtaaCBA; |
245 } |
190 } |
246 |
|
247 SetCbaL( resourceId ); |
191 SetCbaL( resourceId ); |
248 } |
192 } |
249 |
193 |
250 // ----------------------------------------------------------- |
194 // ----------------------------------------------------------- |
251 // CPhoneCbaManager::UpdateIncomingCbaL |
195 // CPhoneCbaManager::UpdateIncomingCbaL |
252 // ----------------------------------------------------------- |
196 // ----------------------------------------------------------- |
253 // |
197 // |
254 EXPORT_C void CPhoneCbaManager::UpdateIncomingCbaL( TInt aCallId ) |
198 EXPORT_C void CPhoneCbaManager::UpdateIncomingCbaL( TInt aCallId ) |
255 { |
199 { |
256 __LOGMETHODSTARTEND(EPhoneControl,"CPhoneCbaManager::UpdateIncomingCbaL()" ); |
200 __LOGMETHODSTARTEND(EPhoneControl,"CPhoneCbaManager::UpdateIncomingCbaL()" ); |
257 |
|
258 const TBool coverHideSendEndKey = |
201 const TBool coverHideSendEndKey = |
259 CPhoneCenRepProxy::Instance()->IsTelephonyFeatureSupported( |
202 CPhoneCenRepProxy::Instance()->IsTelephonyFeatureSupported( |
260 KTelephonyLVFlagCoverHideSendEndKey ); |
203 KTelephonyLVFlagCoverHideSendEndKey ); |
261 |
204 |
262 const TProfileRingingType ringingType = |
205 const TProfileRingingType ringingType = |
265 const TBool callIsAlerting = |
208 const TBool callIsAlerting = |
266 !(( ringingType == EProfileRingingTypeSilent ) || |
209 !(( ringingType == EProfileRingingTypeSilent ) || |
267 ( ringingType == EProfileRingingTypeBeepOnce )); |
210 ( ringingType == EProfileRingingTypeBeepOnce )); |
268 |
211 |
269 // Update soft reject flag |
212 // Update soft reject flag |
270 TBool softRejectActivated( ETrue ); |
213 iSoftRejectStatus = ETrue; |
271 // VoIP calls do not support sms sending |
214 // VoIP calls do not support sms sending |
272 if ( iStateMachine.PhoneEngineInfo()->CallType( aCallId ) == EPECallTypeVoIP |
215 if ( iStateMachine.PhoneEngineInfo()->CallType( aCallId ) == EPECallTypeVoIP |
273 || iStateMachine.PhoneEngineInfo()->RemotePhoneNumber( aCallId ).Length() == 0 ) |
216 || iStateMachine.PhoneEngineInfo()->RemotePhoneNumber( aCallId ).Length() == 0 ) |
274 { |
217 { |
275 softRejectActivated = EFalse; |
218 iSoftRejectStatus = EFalse; |
276 } |
219 } |
277 |
220 |
|
221 TPhoneCmdParamBoolean dimSoftRejectParam; |
|
222 dimSoftRejectParam.SetBoolean( !iSoftRejectStatus ); |
|
223 iViewCommandHandle.ExecuteCommand( |
|
224 EPhoneViewSetSoftRejectDimmed, &dimSoftRejectParam ); |
|
225 |
278 TInt incomingCbaResourceId; |
226 TInt incomingCbaResourceId; |
279 |
227 |
280 if ( iState->IsSwivelClosed() ) |
228 if ( iState->IsSwivelClosed() ) |
281 { |
229 { |
282 if ( !callIsAlerting || iRingtoneSilenced ) |
230 if ( !callIsAlerting || iRingtoneSilenced ) |
286 else |
234 else |
287 { |
235 { |
288 incomingCbaResourceId = EPhoneCallHandlingIncomingSwivelClosedCBA; |
236 incomingCbaResourceId = EPhoneCallHandlingIncomingSwivelClosedCBA; |
289 } |
237 } |
290 } |
238 } |
291 |
|
292 else if ( coverHideSendEndKey ) |
239 else if ( coverHideSendEndKey ) |
293 { |
240 { |
294 if ( callIsAlerting ) |
241 if ( callIsAlerting ) |
295 { |
242 { |
296 // Set CBA to Options..Silence |
243 // Set CBA to Options..Silence |
297 incomingCbaResourceId = EPhoneCallHandlingIncomingSliderCBA; |
244 incomingCbaResourceId = EPhoneCallHandlingIncomingSliderCBA; |
298 } |
245 } |
299 else if ( softRejectActivated ) |
246 else if ( iSoftRejectStatus ) |
300 { |
247 { |
301 // Set CBA for soft reject |
248 // Set CBA for soft reject |
302 incomingCbaResourceId = EPhoneCallHandlingIncomingSoftRejectSliderCBA; |
249 incomingCbaResourceId = EPhoneCallHandlingIncomingSoftRejectSliderCBA; |
303 } |
250 } |
304 else |
251 else |
305 { |
252 { |
306 // Set CBA to Options..Reject |
253 // Set CBA to Options..Reject |
307 incomingCbaResourceId = EPhoneCallHandlingIncomingSilentSliderCBA; |
254 incomingCbaResourceId = EPhoneCallHandlingIncomingSilentSliderCBA; |
308 } |
255 } |
309 } |
256 } |
310 |
|
311 else |
257 else |
312 { |
258 { |
313 if ( callIsAlerting ) |
259 if ( callIsAlerting ) |
314 { |
260 { |
315 incomingCbaResourceId = GetIncomingCallSilenceCBA( softRejectActivated ); |
261 incomingCbaResourceId = GetIncomingCallSilenceCBA( iSoftRejectStatus ); |
316 } |
262 } |
317 else if ( softRejectActivated ) |
263 else if ( iSoftRejectStatus ) |
318 { |
264 { |
319 // Set CBA for soft reject |
265 // Set CBA for soft reject |
320 incomingCbaResourceId = EPhoneCallHandlingIncomingSoftRejectCBA; |
266 incomingCbaResourceId = EPhoneCallHandlingIncomingSoftRejectCBA; |
321 } |
267 } |
322 else |
268 else |
323 { |
269 { |
324 incomingCbaResourceId = EPhoneCallHandlingIncomingRejectCBA; |
270 incomingCbaResourceId = EPhoneCallHandlingIncomingRejectCBA; |
325 } |
271 } |
326 } |
272 } |
327 |
|
328 SetCbaL( incomingCbaResourceId ); |
273 SetCbaL( incomingCbaResourceId ); |
329 } |
274 } |
330 |
275 |
331 // ----------------------------------------------------------- |
276 // ----------------------------------------------------------- |
332 // CPhoneCbaManager::SetCbaL |
277 // CPhoneCbaManager::SetCbaL |
333 // ----------------------------------------------------------- |
278 // ----------------------------------------------------------- |
334 // |
279 // |
335 EXPORT_C void CPhoneCbaManager::SetCbaL( TInt aResource ) |
280 EXPORT_C void CPhoneCbaManager::SetCbaL( TInt aResource ) |
336 { |
281 { |
337 __LOGMETHODSTARTEND(EPhoneControl,"CPhoneCbaManager::SetCbaL()" ); |
282 __LOGMETHODSTARTEND(EPhoneControl,"CPhoneCbaManager::SetCbaL()" ); |
338 |
|
339 __PHONELOG1( EBasic, EPhoneControl, |
283 __PHONELOG1( EBasic, EPhoneControl, |
340 "CPhoneCbaManager::SetCbaL : %d",aResource ); |
284 "CPhoneCbaManager::SetCbaL : %d",aResource ); |
341 |
285 if ( EPhoneCallHandlingIncomingRejectCBA == aResource || |
|
286 EPhoneCallHandlingIncomingSoftRejectCBA == aResource ) |
|
287 { |
|
288 SetSoftRejectDimmedFlag(); |
|
289 } |
|
290 |
342 TPhoneCmdParamInteger integerParam; |
291 TPhoneCmdParamInteger integerParam; |
343 integerParam.SetInteger( |
292 integerParam.SetInteger( |
344 CPhoneMainResourceResolver::Instance()->ResolveResourceID( |
293 CPhoneMainResourceResolver::Instance()->ResolveResourceID( |
345 aResource ) ); |
294 aResource ) ); |
346 iViewCommandHandle.ExecuteCommandL( EPhoneViewUpdateCba, |
295 iViewCommandHandle.ExecuteCommandL( EPhoneViewUpdateCba, |
352 // ----------------------------------------------------------- |
301 // ----------------------------------------------------------- |
353 // |
302 // |
354 void CPhoneCbaManager::UpdateCbaSwivelStateChangedL() |
303 void CPhoneCbaManager::UpdateCbaSwivelStateChangedL() |
355 { |
304 { |
356 __LOGMETHODSTARTEND(EPhoneControl,"CPhoneCbaManager::UpdateCbaSwivelStateChangedL()" ); |
305 __LOGMETHODSTARTEND(EPhoneControl,"CPhoneCbaManager::UpdateCbaSwivelStateChangedL()" ); |
357 |
|
358 TPhoneCmdParamCallStateData callStateData; |
306 TPhoneCmdParamCallStateData callStateData; |
359 callStateData.SetCallState( EPEStateRinging ); |
307 callStateData.SetCallState( EPEStateRinging ); |
360 iViewCommandHandle.HandleCommandL( |
308 iViewCommandHandle.HandleCommandL( |
361 EPhoneViewGetCallIdByState, &callStateData ); |
309 EPhoneViewGetCallIdByState, &callStateData ); |
362 TInt incomingCall = callStateData.CallId(); |
310 TInt incomingCall = callStateData.CallId(); |
389 TBool CPhoneCbaManager::IsVoiceCallAlertingOrActiveL() |
337 TBool CPhoneCbaManager::IsVoiceCallAlertingOrActiveL() |
390 { |
338 { |
391 __LOGMETHODSTARTEND( EPhoneControl, |
339 __LOGMETHODSTARTEND( EPhoneControl, |
392 "CPhoneCbaManager::IsVoiceCallAlertingOrActiveL()" ); |
340 "CPhoneCbaManager::IsVoiceCallAlertingOrActiveL()" ); |
393 TBool retVal = EFalse; |
341 TBool retVal = EFalse; |
394 |
|
395 // Fetch alerting call's id from view |
342 // Fetch alerting call's id from view |
396 TPhoneCmdParamCallStateData callStateData; |
343 TPhoneCmdParamCallStateData callStateData; |
397 callStateData.SetCallState( EPEStateConnecting ); |
344 callStateData.SetCallState( EPEStateConnecting ); |
398 iViewCommandHandle.HandleCommandL( |
345 iViewCommandHandle.HandleCommandL( |
399 EPhoneViewGetCallIdByState, &callStateData ); |
346 EPhoneViewGetCallIdByState, &callStateData ); |
400 |
347 |
401 if ( callStateData.CallId() > KErrNotFound ) |
348 if ( callStateData.CallId() > KErrNotFound ) |
402 { |
349 { |
403 TPECallType type = iStateMachine.PhoneEngineInfo()->CallType( |
350 TPECallType type = iStateMachine.PhoneEngineInfo()->CallType( |
404 callStateData.CallId() ); |
351 callStateData.CallId() ); |
405 |
|
406 if ( EPECallTypeCSVoice == type || EPECallTypeVoIP == type ) |
352 if ( EPECallTypeCSVoice == type || EPECallTypeVoIP == type ) |
407 { |
353 { |
408 retVal = ETrue; |
354 retVal = ETrue; |
409 } |
355 } |
410 } |
356 } |
413 // Fetch active call's id from view |
359 // Fetch active call's id from view |
414 TPhoneCmdParamCallStateData callStateData; |
360 TPhoneCmdParamCallStateData callStateData; |
415 callStateData.SetCallState( EPEStateConnected ); |
361 callStateData.SetCallState( EPEStateConnected ); |
416 iViewCommandHandle.HandleCommandL( |
362 iViewCommandHandle.HandleCommandL( |
417 EPhoneViewGetCallIdByState, &callStateData ); |
363 EPhoneViewGetCallIdByState, &callStateData ); |
418 |
|
419 if ( callStateData.CallId() > KErrNotFound ) |
364 if ( callStateData.CallId() > KErrNotFound ) |
420 { |
365 { |
421 TPECallType type = iStateMachine.PhoneEngineInfo()->CallType( |
366 TPECallType type = iStateMachine.PhoneEngineInfo()->CallType( |
422 callStateData.CallId() ); |
367 callStateData.CallId() ); |
423 |
368 |
445 "CPhoneCbaManager::SetRingtoneSilencedStatus - iRingtoneSilenced =%d", |
390 "CPhoneCbaManager::SetRingtoneSilencedStatus - iRingtoneSilenced =%d", |
446 iRingtoneSilenced ); |
391 iRingtoneSilenced ); |
447 } |
392 } |
448 |
393 |
449 // ----------------------------------------------------------- |
394 // ----------------------------------------------------------- |
|
395 // CPhoneCbaManager::SetSoftRejectStatus |
|
396 // ----------------------------------------------------------- |
|
397 // |
|
398 void CPhoneCbaManager::SetSoftRejectStatus( TBool aSoftRejectStatus ) |
|
399 { |
|
400 __LOGMETHODSTARTEND(EPhoneControl, "CPhoneCbaManager::SetSoftRejectStatus ()" ); |
|
401 // Set the internal TBool variable |
|
402 iSoftRejectStatus = aSoftRejectStatus; |
|
403 __PHONELOG1( |
|
404 EBasic, |
|
405 EPhoneControl, |
|
406 "CPhoneCbaManager::SetSoftRejectStatus - iSoftRejectStatus =%d", |
|
407 iSoftRejectStatus ); |
|
408 } |
|
409 |
|
410 // ----------------------------------------------------------- |
|
411 // CPhoneCbaManager::SoftRejectStatus |
|
412 // ----------------------------------------------------------- |
|
413 // |
|
414 TBool CPhoneCbaManager::SoftRejectStatus() |
|
415 { |
|
416 return iSoftRejectStatus; |
|
417 } |
|
418 |
|
419 // ----------------------------------------------------------- |
450 // CPhoneCbaManager::GetIncomingCallSilenceCBA |
420 // CPhoneCbaManager::GetIncomingCallSilenceCBA |
451 // ----------------------------------------------------------- |
421 // ----------------------------------------------------------- |
452 // |
422 // |
453 TInt CPhoneCbaManager::GetIncomingCallSilenceCBA( |
423 TInt CPhoneCbaManager::GetIncomingCallSilenceCBA( |
454 const TBool /*aSoftRejectActivated*/ ) |
424 const TBool /*aSoftRejectActivated*/ ) |
455 { |
425 { |
456 __LOGMETHODSTARTEND(EPhoneControl, "CPhoneCbaManager::GetIncomingCallSilenceCBA ()" ); |
426 __LOGMETHODSTARTEND(EPhoneControl, "CPhoneCbaManager::GetIncomingCallSilenceCBA ()" ); |
457 TInt ret = EPhoneCallHandlingIncomingCBA; |
427 return EPhoneCallHandlingIncomingCBA; |
458 return ret; |
428 } |
459 } |
429 |
460 |
430 // ----------------------------------------------------------- |
461 // ======== LOCAL FUNCTIONS ======== |
431 // CPhoneCbaManager::SetSoftRejectDimmedFlag |
462 |
432 // ----------------------------------------------------------- |
463 |
433 // |
|
434 void CPhoneCbaManager::SetSoftRejectDimmedFlag() |
|
435 { |
|
436 __LOGMETHODSTARTEND(EPhoneControl, "CPhoneCbaManager::GetIncomingCallSilenceCBA ()" ); |
|
437 TPhoneCmdParamCallStateData callStateData; |
|
438 callStateData.SetCallState( EPEStateRinging ); |
|
439 iViewCommandHandle.HandleCommandL( |
|
440 EPhoneViewGetCallIdByState, &callStateData ); |
|
441 TPhoneCmdParamBoolean dimSoftRejectParam; |
|
442 if ( callStateData.CallId() > KErrNotFound ) |
|
443 { |
|
444 TBool privateNumber = iStateMachine.PhoneEngineInfo()-> |
|
445 RemotePhoneNumber( callStateData.CallId() ).Length() == 0; |
|
446 |
|
447 dimSoftRejectParam.SetBoolean( privateNumber || !iSoftRejectStatus ); |
|
448 } |
|
449 else |
|
450 { |
|
451 iSoftRejectStatus = ETrue; |
|
452 dimSoftRejectParam.SetBoolean( EFalse ); |
|
453 } |
|
454 iViewCommandHandle.ExecuteCommand( |
|
455 EPhoneViewSetSoftRejectDimmed, &dimSoftRejectParam ); |
|
456 } |
|
457 |
|
458 |