--- a/phoneapp/phoneuistates/src/cphonesingleandwaiting.cpp Tue Aug 31 15:14:29 2010 +0300
+++ b/phoneapp/phoneuistates/src/cphonesingleandwaiting.cpp Wed Sep 01 12:30:10 2010 +0100
@@ -42,7 +42,6 @@
#include "phonelogger.h"
#include "cphonecenrepproxy.h"
#include "cphonepubsubproxy.h"
-#include "mphonestorage.h"
// ================= MEMBER FUNCTIONS =======================
@@ -66,7 +65,14 @@
//
CPhoneSingleAndWaiting::~CPhoneSingleAndWaiting()
{
-
+ if( iViewCommandHandle )
+ {
+ TPhoneCmdParamBoolean dtmfSendFlag;
+ dtmfSendFlag.SetBoolean( EFalse );
+ TRAP_IGNORE( iViewCommandHandle->ExecuteCommandL(
+ EPhoneViewSetVideoCallDTMFVisibilityFlag,
+ &dtmfSendFlag ); )
+ }
}
// -----------------------------------------------------------
@@ -143,7 +149,7 @@
break;
case MEngineMonitor::EPEMessageDialing:
- HandleDiallingL( aCallId );
+ HandleDialingL( aCallId );
break;
case MEngineMonitor::EPEMessageDisconnecting:
@@ -185,9 +191,11 @@
}
case EPhoneInCallCmdNewCall:
+ LaunchNewCallQueryL();
break;
case EPhoneInCallCmdNewCallCall:
+ CallFromNewCallQueryL();
break;
case EPhoneCallComingCmdReject: // fall through
@@ -210,10 +218,6 @@
MPEPhoneModel::EPEMessageReject );
break;
- case EPhoneCmdUpdateUiControls:
- UpdateUiControlsL();
- break;
-
default:
commandStatus = CPhoneGsmInCall::HandleCommandL( aCommand );
break;
@@ -222,6 +226,65 @@
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
// --------------------------------------------------------------
@@ -264,22 +327,6 @@
}
// -----------------------------------------------------------
-// CPhoneSingleAndWaiting::HandleKeyEventL
-// -----------------------------------------------------------
-//
-void CPhoneSingleAndWaiting::HandleKeyEventL(
- const TKeyEvent& aKeyEvent,
- TEventCode /*aEventCode*/ )
- {
- if( EKeyDeviceF == aKeyEvent.iCode )
- {
- __PHONELOG( EBasic, EPhoneUIStates,
- "CPhoneSingleAndWaiting::HandleKeyMessageL-deviceF" );
- HandleHoldSwitchL();
- }
- }
-
-// -----------------------------------------------------------
// CPhoneSingleAndWaiting::HandleIdleL
// -----------------------------------------------------------
//
@@ -287,6 +334,8 @@
{
__LOGMETHODSTARTEND( EPhoneUIStates,
"CPhoneSingleAndWaiting::HandleIdleL() ");
+ // Close menu bar, if it is displayed
+ iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
if ( iSingleCallId == KErrNotFound )
{
@@ -361,42 +410,38 @@
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 ( NeedToSendToBackgroundL() )
+ if ( NeedToReturnToForegroundAppL() )
{
// Return phone to the background if send to background is needed.
iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
-
+ iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility );
UpdateCbaL( EPhoneCallHandlingInCallCBA );
}
else
@@ -408,32 +453,30 @@
else
{
UpdateCbaL( EPhoneCallHandlingInCallCBA );
- // If numberentry is not open just check NeedToSendToBackgroundL and
+ // If numberentry is not open just check NeedToReturnToForegroundAppL and
// sendbackround if needed.
- if ( NeedToSendToBackgroundL() )
+ if ( NeedToReturnToForegroundAppL() )
{
// Return phone to the background if send to background is needed.
iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
}
}
- // Enable call UI
- if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke )
- && iStateMachine->PhoneStorage()->IsScreenLocked() )
+ if ( IsVideoCall( iSingleCallId ) )
{
- EnableCallUIL();
- }
+ TPhoneCmdParamInteger uidParam;
+ uidParam.SetInteger( KVtUiAppUidValue.iUid );
- // Reset blocked keys list
- iStateMachine->PhoneStorage()->ResetBlockedKeysList();
-
+ // Set video Phone as the top application
+ iViewCommandHandle->ExecuteCommandL( EPhoneViewSetTopApplication,
+ &uidParam );
+ }
+
SetTouchPaneButtons( EPhoneIncallButtons );
EndUiUpdate();
-
// CBA updates in above if-else conditions
iStateMachine->ChangeState( EPhoneStateSingle );
}
-
}
// -----------------------------------------------------------
@@ -453,7 +496,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,
@@ -470,8 +513,6 @@
}
UpdateInCallCbaL();
-
- SetTouchPaneButtons( EPhoneWaitingCallButtons );
}
// -----------------------------------------------------------
@@ -507,6 +548,12 @@
{
__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;
@@ -525,9 +572,7 @@
}
// Set CBAs
- UpdateInCallCbaL();
-
- SetTouchPaneButtons( EPhoneWaitingCallButtons );
+ UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
}
// -----------------------------------------------------------
@@ -538,12 +583,7 @@
{
__LOGMETHODSTARTEND( EPhoneUIStates,
"CPhoneSingleAndWaiting::MakeStateTransitionToTwoSinglesL() ");
-
- // Reset blocked keys list
- iStateMachine->PhoneStorage()->ResetBlockedKeysList();
-
BeginUiUpdateLC();
-
UpdateRemoteInfoDataL ( aCallId );
// Show bubble
TPhoneCmdParamCallHeaderData callHeaderParam;
@@ -556,91 +596,83 @@
holdFlag.SetBoolean( EFalse );
iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
- if ( IsNumberEntryUsedL() )
+ // Close dtmf dialer if exist.
+ if ( iOnScreenDialer && IsDTMFEditorVisibleL() )
+ {
+ CloseDTMFEditorL();
+ }
+ else if ( iOnScreenDialer && IsCustomizedDialerVisibleL() )
{
- 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);
- }
+ CloseCustomizedDialerL();
+ }
+
+ if ( IsNumberEntryUsedL() && NeedToReturnToForegroundAppL() )
+ {
+ iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility );
+ UpdateCbaL( EPhoneCallHandlingInCallCBA );
}
else
{
- // Set Two singles softkeys
+ // Set Two singles state softkeys
UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA );
}
-
+
SetTouchPaneButtons( EPhoneTwoSinglesButtons );
EndUiUpdate();
-
- // Go to two singles state
// CBA updates in above if-else conditions
iStateMachine->ChangeState( EPhoneStateTwoSingles );
}
-// -----------------------------------------------------------
-// CPhoneSingleAndWaiting::HandleDiallingL
-// -----------------------------------------------------------
+// ---------------------------------------------------------
+// CPhoneSingleAndWaiting::CallFromNewCallQueryL
+// ---------------------------------------------------------
//
-void CPhoneSingleAndWaiting::HandleDiallingL( TInt aCallId )
+void CPhoneSingleAndWaiting::CallFromNewCallQueryL()
{
__LOGMETHODSTARTEND( EPhoneUIStates,
- "CPhoneSingleAndWaiting::HandleDiallingL() ");
+ "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 );
- BeginUiUpdateLC();
+ // Store the phone number
+ iStateMachine->PhoneEngineInfo()->SetPhoneNumber( ptr );
- // Hide number entry if it exists
- SetNumberEntryVisibilityL(EFalse);
+ // clean up stack
+ CleanupStack::PopAndDestroy( content );
+
+ DialVoiceCallL();
+ }
+// -----------------------------------------------------------
+// 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::DisplayCallSetupL
+// CPhoneSingleAndWaiting::DoStateSpecificCallSetUpDefinitionsL
// -----------------------------------------------------------
//
-void CPhoneSingleAndWaiting::DisplayCallSetupL( TInt aCallId )
+EXPORT_C void CPhoneSingleAndWaiting::DoStateSpecificCallSetUpDefinitionsL()
{
- __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 );
+ // Set Hold flag to view ( DTMF menu label have to present )
+ TPhoneCmdParamBoolean holdFlag;
+ holdFlag.SetBoolean( EFalse );
+ iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
+ SetTouchPaneButtons( EPhoneCallSetupButtons );
}
// -----------------------------------------------------------
@@ -651,18 +683,7 @@
{
__LOGMETHODSTARTEND( EPhoneUIStates,
"CPhoneSingleAndWaiting::UpdateInCallCbaL() ");
- TPhoneCmdParamInteger callIdParam;
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewGetExpandedBubbleCallId, &callIdParam );
-
- if ( callIdParam.Integer()==iSingleCallId )
- {
- CPhoneGsmInCall::UpdateInCallCbaL();
- }
- else
- {
- iCbaManager->SetCbaL( EPhoneCallHandlingCallWaitingCBA );
- }
+ UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
}
// -----------------------------------------------------------
@@ -690,33 +711,9 @@
// 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