--- a/phoneapp/phoneuistates/src/cphonesingleandwaiting.cpp Thu Aug 19 09:54:27 2010 +0300
+++ b/phoneapp/phoneuistates/src/cphonesingleandwaiting.cpp Tue Aug 31 15:14:29 2010 +0300
@@ -42,6 +42,7 @@
#include "phonelogger.h"
#include "cphonecenrepproxy.h"
#include "cphonepubsubproxy.h"
+#include "mphonestorage.h"
// ================= MEMBER FUNCTIONS =======================
@@ -65,14 +66,7 @@
//
CPhoneSingleAndWaiting::~CPhoneSingleAndWaiting()
{
- if( iViewCommandHandle )
- {
- TPhoneCmdParamBoolean dtmfSendFlag;
- dtmfSendFlag.SetBoolean( EFalse );
- TRAP_IGNORE( iViewCommandHandle->ExecuteCommandL(
- EPhoneViewSetVideoCallDTMFVisibilityFlag,
- &dtmfSendFlag ); )
- }
+
}
// -----------------------------------------------------------
@@ -149,7 +143,7 @@
break;
case MEngineMonitor::EPEMessageDialing:
- HandleDialingL( aCallId );
+ HandleDiallingL( aCallId );
break;
case MEngineMonitor::EPEMessageDisconnecting:
@@ -191,11 +185,9 @@
}
case EPhoneInCallCmdNewCall:
- LaunchNewCallQueryL();
break;
case EPhoneInCallCmdNewCallCall:
- CallFromNewCallQueryL();
break;
case EPhoneCallComingCmdReject: // fall through
@@ -218,6 +210,10 @@
MPEPhoneModel::EPEMessageReject );
break;
+ case EPhoneCmdUpdateUiControls:
+ UpdateUiControlsL();
+ break;
+
default:
commandStatus = CPhoneGsmInCall::HandleCommandL( aCommand );
break;
@@ -226,65 +222,6 @@
return commandStatus;
}
-// -----------------------------------------------------------
-// CPhoneSingleAndWaiting::OpenMenuBarL
-// -----------------------------------------------------------
-//
-void CPhoneSingleAndWaiting::OpenMenuBarL()
- {
- __LOGMETHODSTARTEND( EPhoneUIStates,
- "CPhoneSingleAndWaiting::OpenMenuBarL() ");
- TInt resourceId ( KErrNone );
-
-
- if ( !IsAutoLockOn() )
- {
- if( IsVideoCallActiveL() || IsVideoCallRingingL() )
- {
- //DTMF hiding will be set to TRUE
- if( IsVideoCallActiveL() )
- {
- TPhoneCmdParamBoolean dtmfSendFlag;
- dtmfSendFlag.SetBoolean( ETrue );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetVideoCallDTMFVisibilityFlag,
- &dtmfSendFlag );
- }
- if ( IsNumberEntryVisibleL() )
- {
- resourceId = EPhoneVideoCallWaitingMenubarWithNumberEntry;
- }
- else
- {
- resourceId = EPhoneVideoCallWaitingMenubar;
- }
- }
-
- else // single voice and waiting voice
- {
- if ( IsNumberEntryVisibleL() )
- {
- resourceId = EPhoneCallWaitingMenubarWithNumberEntry;
- }
- else
- {
- resourceId = EPhoneCallWaitingMenubar;
- }
- }
- }
- else
- {
- resourceId = EPhoneCallWaitingLockMenubar;
- }
-
-
- TPhoneCmdParamInteger integerParam;
- integerParam.SetInteger(
- CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( resourceId ) );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarOpen,
- &integerParam );
- }
-
// --------------------------------------------------------------
// CPhoneSingleAndWaiting::HandleKeyMessageL
// --------------------------------------------------------------
@@ -327,6 +264,22 @@
}
// -----------------------------------------------------------
+// CPhoneSingleAndWaiting::HandleKeyEventL
+// -----------------------------------------------------------
+//
+void CPhoneSingleAndWaiting::HandleKeyEventL(
+ const TKeyEvent& aKeyEvent,
+ TEventCode /*aEventCode*/ )
+ {
+ if( EKeyDeviceF == aKeyEvent.iCode )
+ {
+ __PHONELOG( EBasic, EPhoneUIStates,
+ "CPhoneSingleAndWaiting::HandleKeyMessageL-deviceF" );
+ HandleHoldSwitchL();
+ }
+ }
+
+// -----------------------------------------------------------
// CPhoneSingleAndWaiting::HandleIdleL
// -----------------------------------------------------------
//
@@ -334,8 +287,6 @@
{
__LOGMETHODSTARTEND( EPhoneUIStates,
"CPhoneSingleAndWaiting::HandleIdleL() ");
- // Close menu bar, if it is displayed
- iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
if ( iSingleCallId == KErrNotFound )
{
@@ -410,38 +361,42 @@
SetNumberEntryVisibilityL(EFalse);
}
+ // Check if HW Keys or Call UI should be disabled
+ CheckDisableHWKeysAndCallUIL();
+
SetTouchPaneButtons( EPhoneIncomingCallButtons );
- SetTouchPaneButtonEnabled( EPhoneCallComingCmdSilent );
// Bring up callhandling view
BringIncomingToForegroundL();
//Set incoming cba
iCbaManager->UpdateIncomingCbaL( callStateData.CallId() );
- UpdateSilenceButtonDimming();
// Play ringtone
SetRingingTonePlaybackL( callStateData.CallId() );
}
+
+ SetBackButtonActive(EFalse);
EndUiUpdate();
- SetToolbarDimming( ETrue );
iStateMachine->ChangeState( EPhoneStateIncoming );
}
else
{
+
BeginUiUpdateLC();
// Remove call
iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
+
// Idle message came for waiting call
if ( IsNumberEntryUsedL() )
{
- if ( NeedToReturnToForegroundAppL() )
+ if ( NeedToSendToBackgroundL() )
{
// Return phone to the background if send to background is needed.
iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility );
+
UpdateCbaL( EPhoneCallHandlingInCallCBA );
}
else
@@ -453,30 +408,32 @@
else
{
UpdateCbaL( EPhoneCallHandlingInCallCBA );
- // If numberentry is not open just check NeedToReturnToForegroundAppL and
+ // If numberentry is not open just check NeedToSendToBackgroundL and
// sendbackround if needed.
- if ( NeedToReturnToForegroundAppL() )
+ if ( NeedToSendToBackgroundL() )
{
// Return phone to the background if send to background is needed.
iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
}
}
- if ( IsVideoCall( iSingleCallId ) )
+ // Enable call UI
+ if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke )
+ && iStateMachine->PhoneStorage()->IsScreenLocked() )
{
- TPhoneCmdParamInteger uidParam;
- uidParam.SetInteger( KVtUiAppUidValue.iUid );
+ EnableCallUIL();
+ }
- // Set video Phone as the top application
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetTopApplication,
- &uidParam );
- }
-
+ // Reset blocked keys list
+ iStateMachine->PhoneStorage()->ResetBlockedKeysList();
+
SetTouchPaneButtons( EPhoneIncallButtons );
EndUiUpdate();
+
// CBA updates in above if-else conditions
iStateMachine->ChangeState( EPhoneStateSingle );
}
+
}
// -----------------------------------------------------------
@@ -496,7 +453,7 @@
TInt callLabelId = CPhoneMainResourceResolver::Instance()->
ResolveResourceID( EPhoneCallOnHold );
- StringLoader::Load( labelText, callLabelId, CCoeEnv::Static() );
+ StringLoader::Load( labelText, callLabelId, CCoeEnv::Static() );
callHeaderParam.SetLabelText( labelText );
iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId,
@@ -513,6 +470,8 @@
}
UpdateInCallCbaL();
+
+ SetTouchPaneButtons( EPhoneWaitingCallButtons );
}
// -----------------------------------------------------------
@@ -548,12 +507,6 @@
{
__LOGMETHODSTARTEND( EPhoneUIStates,
"CPhoneSingleAndWaiting::HandleUnholdL() ");
- // Close menu if focus is somewhere else than number entry.
- if ( !IsNumberEntryUsedL() )
- {
- // Close menubar
- iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
- }
// Show bubble
TPhoneCmdParamCallHeaderData callHeaderParam;
@@ -572,7 +525,9 @@
}
// Set CBAs
- UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
+ UpdateInCallCbaL();
+
+ SetTouchPaneButtons( EPhoneWaitingCallButtons );
}
// -----------------------------------------------------------
@@ -583,7 +538,12 @@
{
__LOGMETHODSTARTEND( EPhoneUIStates,
"CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL() ");
+
+ // Reset blocked keys list
+ iStateMachine->PhoneStorage()->ResetBlockedKeysList();
+
BeginUiUpdateLC();
+
UpdateRemoteInfoDataL ( aCallId );
// Show bubble
TPhoneCmdParamCallHeaderData callHeaderParam;
@@ -596,83 +556,91 @@
holdFlag.SetBoolean( EFalse );
iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
- // Close dtmf dialer if exist.
- if ( iOnScreenDialer && IsDTMFEditorVisibleL() )
- {
- CloseDTMFEditorL();
- }
- else if ( iOnScreenDialer && IsCustomizedDialerVisibleL() )
+ if ( IsNumberEntryUsedL() )
{
- CloseCustomizedDialerL();
- }
-
- if ( IsNumberEntryUsedL() && NeedToReturnToForegroundAppL() )
- {
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility );
- UpdateCbaL( EPhoneCallHandlingInCallCBA );
+ if ( NeedToSendToBackgroundL() )
+ {
+ // Return phone to the background if send to background is needed.
+ iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
+
+ UpdateCbaL( EPhoneCallHandlingInCallCBA );
+ }
+ else
+ {
+ // Show the number entry if it exists.
+ SetNumberEntryVisibilityL(ETrue);
+ }
}
else
{
- // Set Two singles state softkeys
+ // Set Two singles softkeys
UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA );
}
-
+
SetTouchPaneButtons( EPhoneTwoSinglesButtons );
EndUiUpdate();
+
+ // Go to two singles state
// CBA updates in above if-else conditions
iStateMachine->ChangeState( EPhoneStateTwoSingles );
}
-// ---------------------------------------------------------
-// CPhoneSingleAndWaiting::CallFromNewCallQueryL
-// ---------------------------------------------------------
+// -----------------------------------------------------------
+// CPhoneSingleAndWaiting::HandleDiallingL
+// -----------------------------------------------------------
//
-void CPhoneSingleAndWaiting::CallFromNewCallQueryL()
+void CPhoneSingleAndWaiting::HandleDiallingL( TInt aCallId )
{
__LOGMETHODSTARTEND( EPhoneUIStates,
- "CPhoneSingleAndWaiting::CallFromNewCallQueryL() ");
- // First get the phone number from the dialog
- TPhoneCmdParamString phoneNumberParam;
- HBufC *content = HBufC::NewLC( KPhoneNumberEntryBufferSize );
- TPtr ptr( content->Des() );
- phoneNumberParam.SetString( &ptr );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewGetTextQueryContent,
- &phoneNumberParam );
+ "CPhoneSingleAndWaiting::HandleDiallingL() ");
- // Store the phone number
- iStateMachine->PhoneEngineInfo()->SetPhoneNumber( ptr );
+ BeginUiUpdateLC();
- // clean up stack
- CleanupStack::PopAndDestroy( content );
-
- DialVoiceCallL();
- }
+ // Hide number entry if it exists
+ SetNumberEntryVisibilityL(EFalse);
-// -----------------------------------------------------------
-// CPhoneSingleAndWaiting::HandleDialingL
-// -----------------------------------------------------------
-//
-void CPhoneSingleAndWaiting::HandleDialingL( TInt aCallId )
- {
- __LOGMETHODSTARTEND( EPhoneUIStates,
- "CPhoneSingleAndWaiting::HandleDialingL() ");
// Display call setup
DisplayCallSetupL( aCallId );
+
+ // Set Hold flag to view ( DTMF menu label have to present )
+ TPhoneCmdParamBoolean holdFlag;
+ holdFlag.SetBoolean( EFalse );
+ iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
+
+ SetTouchPaneButtons( EPhoneCallSetupButtons );
+
+ EndUiUpdate();
+
+ // Update call setup CBAs
+ UpdateCbaL( EPhoneCallHandlingCallSetupCBA );
+
// Go to Single And Waiting And Call Setup state
iStateMachine->ChangeState( EPhoneStateSingleAndCallSetupAndWaiting );
}
// -----------------------------------------------------------
-// CPhoneSingleAndWaiting::DoStateSpecificCallSetUpDefinitionsL
+// CPhoneSingleAndWaiting::DisplayCallSetupL
// -----------------------------------------------------------
//
-EXPORT_C void CPhoneSingleAndWaiting::DoStateSpecificCallSetUpDefinitionsL()
+void CPhoneSingleAndWaiting::DisplayCallSetupL( TInt aCallId )
{
- // Set Hold flag to view ( DTMF menu label have to present )
- TPhoneCmdParamBoolean holdFlag;
- holdFlag.SetBoolean( EFalse );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
- SetTouchPaneButtons( EPhoneCallSetupButtons );
+ __LOGMETHODSTARTEND( EPhoneUIStates,
+ "CPhoneSingleAndWaiting::DisplayCallSetupL() ");
+
+ // Remove dialogs if necessary
+ iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs );
+
+ // Capture keys when the phone is dialling
+ CaptureKeysDuringCallNotificationL( ETrue );
+
+ // Force telephony to the foreground
+ TPhoneCmdParamInteger uidParam;
+ uidParam.SetInteger( KUidPhoneApplication.iUid );
+ iViewCommandHandle->ExecuteCommandL( EPhoneViewBringAppToForeground,
+ &uidParam );
+
+ // Display call setup header
+ DisplayHeaderForOutgoingCallL( aCallId );
}
// -----------------------------------------------------------
@@ -683,7 +651,18 @@
{
__LOGMETHODSTARTEND( EPhoneUIStates,
"CPhoneSingleAndWaiting::UpdateInCallCbaL() ");
- UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
+ TPhoneCmdParamInteger callIdParam;
+ iViewCommandHandle->ExecuteCommandL(
+ EPhoneViewGetExpandedBubbleCallId, &callIdParam );
+
+ if ( callIdParam.Integer()==iSingleCallId )
+ {
+ CPhoneGsmInCall::UpdateInCallCbaL();
+ }
+ else
+ {
+ iCbaManager->SetCbaL( EPhoneCallHandlingCallWaitingCBA );
+ }
}
// -----------------------------------------------------------
@@ -711,9 +690,33 @@
// CPhoneSingleAndWaiting::HandleDisconnectingL
// -----------------------------------------------------------
//
-void CPhoneSingleAndWaiting::HandleDisconnectingL( TInt /*aCallId*/ )
+void CPhoneSingleAndWaiting::HandleDisconnectingL( TInt aCallId )
{
__LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::HandleDisconnectingL( ) ");
+
+ if( ( iSingleCallId == aCallId ) && IsVideoCall( aCallId ) )
+ {
+ __PHONELOG( EBasic, EPhoneControl,
+ "CPhoneSingleAndWaiting::HandleDisconnectingL EPhoneViewSetNeedToSendToBackgroundStatus" );
+
+ // Keep phone on the foreground
+ TPhoneCmdParamBoolean booleanParam;
+ booleanParam.SetBoolean( EFalse );
+ iViewCommandHandle->ExecuteCommandL(
+ EPhoneViewSetNeedToSendToBackgroundStatus,
+ &booleanParam );
+ }
+ }
+
+// -----------------------------------------------------------
+// CPhoneSingleAndWaiting::UpdateUiControlsL
+// -----------------------------------------------------------
+//
+void CPhoneSingleAndWaiting::UpdateUiControlsL()
+ {
+ __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::UpdateUiControlsL( ) ");
+
+ UpdateInCallCbaL();
}
// End of File